Get template by id, guid and udi

This commit is contained in:
Bjarne Fyrstenborg
2020-01-27 22:57:16 +01:00
committed by Sebastiaan Janssen
parent 2a4d4c82ff
commit ca1d749f37

View File

@@ -1,8 +1,10 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Controllers;
using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Configuration;
@@ -13,6 +15,7 @@ using Umbraco.Core.Persistence;
using Umbraco.Core.Services;
using Umbraco.Web.Models.ContentEditing;
using Umbraco.Web.Mvc;
using Umbraco.Web.WebApi;
using Umbraco.Web.WebApi.Filters;
using Constants = Umbraco.Core.Constants;
@@ -20,6 +23,7 @@ namespace Umbraco.Web.Editors
{
[PluginController("UmbracoApi")]
[UmbracoTreeAuthorize(Constants.Trees.Templates)]
[TemplateControllerConfiguration]
public class TemplateController : BackOfficeNotificationsController
{
public TemplateController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper)
@@ -27,6 +31,19 @@ namespace Umbraco.Web.Editors
{
}
/// <summary>
/// Configures this controller with a custom action selector
/// </summary>
private class TemplateControllerConfigurationAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
controllerSettings.Services.Replace(typeof(IHttpActionSelector), new ParameterSwapControllerActionSelector(
new ParameterSwapControllerActionSelector.ParameterSwapInfo("GetById", "id", typeof(int), typeof(Guid), typeof(Udi))
));
}
}
/// <summary>
/// Gets data type by alias
/// </summary>
@@ -48,7 +65,7 @@ namespace Umbraco.Web.Editors
}
/// <summary>
/// Gets the content json for the content id
/// Gets the template json for the template id
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
@@ -61,6 +78,40 @@ namespace Umbraco.Web.Editors
return Mapper.Map<ITemplate, TemplateDisplay>(template);
}
/// <summary>
/// Gets the template json for the template guid
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public TemplateDisplay GetById(Guid id)
{
var template = Services.FileService.GetTemplate(id);
if (template == null)
throw new HttpResponseException(HttpStatusCode.NotFound);
return Mapper.Map<ITemplate, TemplateDisplay>(template);
}
/// <summary>
/// Gets the template json for the template udi
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public TemplateDisplay GetById(Udi id)
{
var guidUdi = id as GuidUdi;
if (guidUdi == null)
throw new HttpResponseException(HttpStatusCode.NotFound);
var template = Services.FileService.GetTemplate(guidUdi.Guid);
if (template == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return Mapper.Map<ITemplate, TemplateDisplay>(template);
}
/// <summary>
/// Deletes a template with a given ID
/// </summary>