From 5614ade527061069345149b71dda7a66c2414002 Mon Sep 17 00:00:00 2001 From: Kaan Date: Wed, 28 Aug 2019 09:45:46 +0200 Subject: [PATCH] upgrade to sites9 --- DD4T RestService.Targets | 2 +- .../content/web.config.transform | 6 +- .../AppBuilderExtensions.cs | 85 ++--- .../Controllers/BinaryController.cs | 341 +++++++++--------- .../ComponentPresentationController.cs | 177 +++++---- .../Controllers/LinkController.cs | 101 +++--- .../Controllers/PageController.cs | 155 ++++---- .../Controllers/TaxonomyController.cs | 65 ++-- .../Controllers/fjcs1wze.q2z | 94 ----- .../DD4T.RestService.WebApi.csproj | 133 +++---- .../Helpers/CustomParamBinder.cs | 88 ++--- .../Helpers/Extensions.cs | 60 ++- .../Helpers/Messages.cs | 21 +- source/DD4T.RestService.WebApi/app.config | 101 +++--- .../DD4T.RestService.WebApi/packages.config | 38 +- 15 files changed, 640 insertions(+), 827 deletions(-) delete mode 100644 source/DD4T.RestService.WebApi/Controllers/fjcs1wze.q2z diff --git a/DD4T RestService.Targets b/DD4T RestService.Targets index 40baeb2..322214c 100644 --- a/DD4T RestService.Targets +++ b/DD4T RestService.Targets @@ -38,7 +38,7 @@ - + diff --git a/configuration/packagecontent/content/web.config.transform b/configuration/packagecontent/content/web.config.transform index b05239d..b45c1b1 100644 --- a/configuration/packagecontent/content/web.config.transform +++ b/configuration/packagecontent/content/web.config.transform @@ -4,6 +4,7 @@ + @@ -23,8 +24,9 @@ - + + \ No newline at end of file diff --git a/source/DD4T.RestService.WebApi/AppBuilderExtensions.cs b/source/DD4T.RestService.WebApi/AppBuilderExtensions.cs index 8620a11..01e9265 100644 --- a/source/DD4T.RestService.WebApi/AppBuilderExtensions.cs +++ b/source/DD4T.RestService.WebApi/AppBuilderExtensions.cs @@ -1,58 +1,45 @@ using Autofac; using Autofac.Integration.WebApi; -using DD4T.ContentModel.Contracts.Configuration; -using DD4T.ContentModel.Contracts.Logging; -using DD4T.ContentModel.Contracts.Providers; -using DD4T.ContentModel.Contracts.Resolvers; using DD4T.DI.Autofac; -using DD4T.Utils; -using DD4T.Utils.Logging; -using DD4T.Utils.Resolver; using Owin; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Web.Http; namespace DD4T.RestService.WebApi { - public static class AppBuilderExtensions - { - - public static void UseDD4TWebApi(this IAppBuilder appBuilder) - { - var builder = new ContainerBuilder(); - appBuilder.UseDD4TWebApi(builder); - } - - public static void UseDD4TWebApi(this IAppBuilder appBuilder, HttpConfiguration config) - { - var builder = new ContainerBuilder(); - appBuilder.UseDD4TWebApi(builder, config); - } - - public static void UseDD4TWebApi(this IAppBuilder appBuilder, ContainerBuilder builder) - { - var config = new HttpConfiguration(); - appBuilder.UseDD4TWebApi(builder, config); - } - - public static void UseDD4TWebApi(this IAppBuilder appBuilder, ContainerBuilder builder, HttpConfiguration config) - { - builder.RegisterApiControllers(typeof(AppBuilderExtensions).Assembly); - builder.UseDD4T(); - - var container = builder.Build(); - - config.DependencyResolver = new AutofacWebApiDependencyResolver(container); - config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; - config.MapHttpAttributeRoutes(); - - appBuilder.UseAutofacMiddleware(container); - appBuilder.UseAutofacWebApi(config); - appBuilder.UseWebApi(config); - } - } + public static class AppBuilderExtensions + { + public static void UseDD4TWebApi(this IAppBuilder appBuilder) + { + var builder = new ContainerBuilder(); + appBuilder.UseDD4TWebApi(builder); + } + + public static void UseDD4TWebApi(this IAppBuilder appBuilder, HttpConfiguration config) + { + var builder = new ContainerBuilder(); + appBuilder.UseDD4TWebApi(builder, config); + } + + public static void UseDD4TWebApi(this IAppBuilder appBuilder, ContainerBuilder builder) + { + var config = new HttpConfiguration(); + appBuilder.UseDD4TWebApi(builder, config); + } + + public static void UseDD4TWebApi(this IAppBuilder appBuilder, ContainerBuilder builder, HttpConfiguration config) + { + builder.RegisterApiControllers(typeof(AppBuilderExtensions).Assembly); + builder.UseDD4T(); + + var container = builder.Build(); + + config.DependencyResolver = new AutofacWebApiDependencyResolver(container); + config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; + config.MapHttpAttributeRoutes(); + + appBuilder.UseAutofacMiddleware(container); + appBuilder.UseAutofacWebApi(config); + appBuilder.UseWebApi(config); + } + } } diff --git a/source/DD4T.RestService.WebApi/Controllers/BinaryController.cs b/source/DD4T.RestService.WebApi/Controllers/BinaryController.cs index 09cba16..870545a 100644 --- a/source/DD4T.RestService.WebApi/Controllers/BinaryController.cs +++ b/source/DD4T.RestService.WebApi/Controllers/BinaryController.cs @@ -2,185 +2,178 @@ using DD4T.ContentModel.Contracts.Logging; using DD4T.RestService.WebApi.Helpers; using System; -using System.Collections.Generic; using System.IO; -using System.Linq; -using System.Net; -using System.Net.Http; using System.Web.Http; using DD4T.ContentModel; using System.Web.Http.Description; namespace DD4T.RestService.WebApi.Controllers { - [RoutePrefix("binary")] - public class BinaryController : ApiController - { - private readonly IBinaryProvider BinaryProvider; - private readonly ILogger Logger; - - public BinaryController(IBinaryProvider binaryProvider, ILogger logger) - { - if (binaryProvider == null) - throw new ArgumentNullException("binaryProvider"); - if (logger == null) - throw new ArgumentNullException("logger"); - - Logger = logger; - BinaryProvider = binaryProvider; - } - - - [HttpGet] - [Route("GetBinaryByUri/{publicationId:int}/{id:int}")] - public IHttpActionResult GetBinaryByUri(int publicationId, int id) - { - Logger.Debug("GetBinaryByUri publicationId={0}, componentId={1}", publicationId, id); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - BinaryProvider.PublicationId = publicationId; - var binary = BinaryProvider.GetBinaryByUri(id.ToComponentTcmUri(publicationId)); - - if (binary == null) - NotFound(); - - return Ok(binary); - } - - [HttpGet] - [Route("GetBinaryByUrl/{publicationId:int}/{extension}/{*url}")] - public IHttpActionResult GetBinaryByUrl(int publicationId, string extension, string url) - { - Logger.Debug("GetBinaryByUrl publicationId={0}, url={1}, extension={2}", publicationId, url, extension); - - BinaryProvider.PublicationId = publicationId; - var binary = BinaryProvider.GetBinaryByUrl(url.GetUrl(extension)); - - if (binary == null) - NotFound(); - - return Ok(binary); - } - - [HttpGet] - [Route("GetBinaryStreamByUri/{publicationId:int}/{id:int}")] - public IHttpActionResult GetBinaryStreamByUri(int publicationId, int id) - { - Logger.Debug("GetBinaryStreamByUri publicationId={0}, componentId={1}", publicationId, id); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - BinaryProvider.PublicationId = publicationId; - var binary = BinaryProvider.GetBinaryStreamByUri(id.ToComponentTcmUri(publicationId)); - - if (binary == null) - NotFound(); - - return Ok(binary); - } - - [HttpGet] - [Route("GetBinaryStreamByUrl/{publicationId:int}/{extension}/{*url}")] - public IHttpActionResult GetBinaryStreamByUrl(int publicationId, string extension, string url) - { - Logger.Debug("GetBinaryStreamByUrl publicationId={0}, url={1}, extension={2}", publicationId, url, extension); - - BinaryProvider.PublicationId = publicationId; - var binary = BinaryProvider.GetBinaryStreamByUrl(url.GetUrl(extension)); - - if (binary == null) - NotFound(); - - return Ok(binary); - } - - [Obsolete("Use GetBinaryMetaByUri method")] - [HttpGet] - [Route("GetLastPublishedDateByUri/{publicationId:int}/{id:int}")] - public IHttpActionResult GetLastPublishedDateByUri(int publicationId, int id) - { - Logger.Debug("GetLastPublishedDateByUri publicationId={0}, componentId={1}", publicationId, id); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - BinaryProvider.PublicationId = publicationId; - var binary = BinaryProvider.GetLastPublishedDateByUri(id.ToComponentTcmUri(publicationId)); - - if (binary == null) - NotFound(); - - return Ok(binary); - } - - [Obsolete("Use GetBinaryMetaByUrl method")] - [HttpGet] - [Route("GetLastPublishedDateByUrl/{publicationId:int}/{extension}/{*url}")] - public IHttpActionResult GetLastPublishedDateByUrl(int publicationId, string extension, string url) - { - Logger.Debug("GetLastPublishedDateByUrl publicationId={0}, url={1}, extension={2}", publicationId, url, extension); - - BinaryProvider.PublicationId = publicationId; - var binary = BinaryProvider.GetLastPublishedDateByUrl(url.GetUrl(extension)); - - if (binary == null) - NotFound(); - - return Ok(binary); - } - - [HttpGet] - [Route("GetBinaryMetaByUri/{publicationId:int}/{id:int}")] - public IHttpActionResult GetBinaryMetaByUri(int publicationId, int id) - { - Logger.Debug("GetBinaryMetaByUri publicationId={0}, componentId={1}", publicationId, id); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - BinaryProvider.PublicationId = publicationId; - var binary = BinaryProvider.GetBinaryMetaByUri(id.ToComponentTcmUri(publicationId)); - - if (binary == null) - NotFound(); - - return Ok(binary); - } - - [HttpGet] - [Route("GetBinaryMetaByUrl/{publicationId:int}/{extension}/{*url}")] - [ResponseType(typeof(BinaryMeta))] - public IHttpActionResult GetBinaryMetaByUrl(int publicationId, string extension, string url) - { - Logger.Debug("GetBinaryMetaByUrl publicationId={0}, url={1}, extension={2}", publicationId, url, extension); - - BinaryProvider.PublicationId = publicationId; - IBinaryMeta binaryMeta = BinaryProvider.GetBinaryMetaByUrl(url.GetUrl(extension)) as IBinaryMeta; - - if (binaryMeta == null) - { - return NotFound(); - } - Logger.Debug($"about to return binarymeta {binaryMeta.Id}"); - - - return Ok(binaryMeta); - } - - [HttpGet] - [Route("GetUrlForUri/{publicationId:int}/{id:int}")] - public IHttpActionResult GetUrlForUri(int publicationId, int id) - { - Logger.Debug("GetUrlForUri publicationId={0}, componentId={1}", publicationId, id); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - BinaryProvider.PublicationId = publicationId; - var binary = BinaryProvider.GetUrlForUri(id.ToComponentTcmUri(publicationId)); - - if (binary == null) - NotFound(); - - return Ok(binary); - } - } + [RoutePrefix("binary")] + public class BinaryController : ApiController + { + private readonly IBinaryProvider BinaryProvider; + private readonly ILogger Logger; + + public BinaryController(IBinaryProvider binaryProvider, ILogger logger) + { + Logger = logger ?? throw new ArgumentNullException("logger"); + BinaryProvider = binaryProvider ?? throw new ArgumentNullException("binaryProvider"); + } + + [HttpGet] + [Route("GetBinaryByUri/{publicationId:int}/{id:int}")] + public IHttpActionResult GetBinaryByUri(int publicationId, int id) + { + Logger.Debug($"GetBinaryByUri publicationId={publicationId}, componentId={id}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + BinaryProvider.PublicationId = publicationId; + var binary = BinaryProvider.GetBinaryByUri(id.ToComponentTcmUri(publicationId)); + + if (binary == null) + return NotFound(); + + return Ok(binary); + } + + [HttpGet] + [Route("GetBinaryByUrl/{publicationId:int}/{extension}/{*url}")] + public IHttpActionResult GetBinaryByUrl(int publicationId, string extension, string url) + { + Logger.Debug($"GetBinaryByUrl publicationId={publicationId}, url={url}, extension={extension}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + BinaryProvider.PublicationId = publicationId; + var binary = BinaryProvider.GetBinaryByUrl(url.GetUrl(extension)); + + if (binary == null) + return NotFound(); + + return Ok(binary); + } + + [HttpGet] + [Route("GetBinaryStreamByUri/{publicationId:int}/{id:int}")] + public IHttpActionResult GetBinaryStreamByUri(int publicationId, int id) + { + Logger.Debug($"GetBinaryStreamByUri publicationId={publicationId}, componentId={id}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + BinaryProvider.PublicationId = publicationId; + var binary = BinaryProvider.GetBinaryStreamByUri(id.ToComponentTcmUri(publicationId)); + + if (binary == null) + return NotFound(); + + return Ok(binary); + } + + [HttpGet] + [Route("GetBinaryStreamByUrl/{publicationId:int}/{extension}/{*url}")] + public IHttpActionResult GetBinaryStreamByUrl(int publicationId, string extension, string url) + { + Logger.Debug($"GetBinaryStreamByUrl publicationId={publicationId}, url={url}, extension={extension}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + BinaryProvider.PublicationId = publicationId; + var binary = BinaryProvider.GetBinaryStreamByUrl(url.GetUrl(extension)); + + if (binary == null) + return NotFound(); + + return Ok(binary); + } + + [Obsolete("Use GetBinaryMetaByUri method")] + [HttpGet] + [Route("GetLastPublishedDateByUri/{publicationId:int}/{id:int}")] + public IHttpActionResult GetLastPublishedDateByUri(int publicationId, int id) + { + Logger.Debug($"GetLastPublishedDateByUri publicationId={publicationId}, componentId={id}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + BinaryProvider.PublicationId = publicationId; + var lastPublishedDate = BinaryProvider.GetLastPublishedDateByUri(id.ToComponentTcmUri(publicationId)); + + if (lastPublishedDate == DateTime.MinValue) + return NotFound(); + + return Ok(lastPublishedDate); + } + + [Obsolete("Use GetBinaryMetaByUrl method")] + [HttpGet] + [Route("GetLastPublishedDateByUrl/{publicationId:int}/{extension}/{*url}")] + public IHttpActionResult GetLastPublishedDateByUrl(int publicationId, string extension, string url) + { + Logger.Debug("GetLastPublishedDateByUrl publicationId={0}, url={1}, extension={2}", publicationId, url, extension); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + BinaryProvider.PublicationId = publicationId; + var lastPublishedDate = BinaryProvider.GetLastPublishedDateByUrl(url.GetUrl(extension)); + + if (lastPublishedDate == DateTime.MinValue) + return NotFound(); + + return Ok(lastPublishedDate); + } + + [HttpGet] + [Route("GetBinaryMetaByUri/{publicationId:int}/{id:int}")] + public IHttpActionResult GetBinaryMetaByUri(int publicationId, int id) + { + Logger.Debug("GetBinaryMetaByUri publicationId={0}, componentId={1}", publicationId, id); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + BinaryProvider.PublicationId = publicationId; + var binaryMeta = BinaryProvider.GetBinaryMetaByUri(id.ToComponentTcmUri(publicationId)); + + if (binaryMeta == null) + return NotFound(); + + return Ok(binaryMeta); + } + + [HttpGet] + [Route("GetBinaryMetaByUrl/{publicationId:int}/{extension}/{*url}")] + [ResponseType(typeof(BinaryMeta))] + public IHttpActionResult GetBinaryMetaByUrl(int publicationId, string extension, string url) + { + Logger.Debug("GetBinaryMetaByUrl publicationId={0}, url={1}, extension={2}", publicationId, url, extension); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + BinaryProvider.PublicationId = publicationId; + if (!(BinaryProvider.GetBinaryMetaByUrl(url.GetUrl(extension)) is IBinaryMeta binaryMeta)) + return NotFound(); + + Logger.Debug($"about to return binarymeta {binaryMeta.Id}"); + return Ok(binaryMeta); + } + + [HttpGet] + [Route("GetUrlForUri/{publicationId:int}/{id:int}")] + public IHttpActionResult GetUrlForUri(int publicationId, int id) + { + Logger.Debug("GetUrlForUri publicationId={0}, componentId={1}", publicationId, id); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + BinaryProvider.PublicationId = publicationId; + var url = BinaryProvider.GetUrlForUri(id.ToComponentTcmUri(publicationId)); + + if (string.IsNullOrEmpty(url)) + return NotFound(); + + return Ok(url); + } + } } diff --git a/source/DD4T.RestService.WebApi/Controllers/ComponentPresentationController.cs b/source/DD4T.RestService.WebApi/Controllers/ComponentPresentationController.cs index b314bb6..7304c3b 100644 --- a/source/DD4T.RestService.WebApi/Controllers/ComponentPresentationController.cs +++ b/source/DD4T.RestService.WebApi/Controllers/ComponentPresentationController.cs @@ -3,103 +3,92 @@ using DD4T.ContentModel.Querying; using DD4T.RestService.WebApi.Helpers; using System; -using System.Collections.Generic; using System.Linq; -using System.Net; -using System.Net.Http; using System.Web.Http; namespace DD4T.RestService.WebApi.Controllers { - [RoutePrefix("componentpresentation")] - public class ComponentPresentationController : ApiController - { - private readonly IComponentPresentationProvider ComponentPresentationProvider; - private readonly ILogger Logger; - - public ComponentPresentationController(IComponentPresentationProvider componentPresentationProvider, ILogger logger) - { - if (componentPresentationProvider == null) - throw new ArgumentNullException("componentPresenstationProvider"); - - if (logger == null) - throw new ArgumentNullException("logger"); - - Logger = logger; - ComponentPresentationProvider = componentPresentationProvider; - } - - [HttpGet] - [Route("GetContent/{publicationId:int}/{id:int}/{templateId?}")] - public IHttpActionResult GetContent(int publicationId, int id, int templateId = 0) - { - //var templateId = string.Empty; - Logger.Debug("GetContent publicationId={0}, componentId={1} tempalteid={2}", publicationId, id, templateId); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - ComponentPresentationProvider.PublicationId = publicationId; - - var content = (templateId == 0) ? ComponentPresentationProvider.GetContent(id.ToComponentTcmUri(publicationId)) : - ComponentPresentationProvider.GetContent(id.ToComponentTcmUri(publicationId), templateId.ToComponentTemplateTcmUri(publicationId)); - - if (string.IsNullOrEmpty(content)) - return NotFound(); - - return Ok(content); - } - - [HttpGet] - [Route("GetLastPublishedDate/{publicationId:int}/{id:int}")] - public IHttpActionResult GetLastPublishedDate(int publicationId, int id) - { - Logger.Debug("GetLastPublishedDate publicationId={0}, componentId={1}", publicationId, id); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - ComponentPresentationProvider.PublicationId = publicationId; - var content = ComponentPresentationProvider.GetLastPublishedDate(id.ToComponentTcmUri(publicationId)); - - return Ok(content); - } - - [HttpGet] - [Route("GetContentMultiple/{publicationId:int}/{ids}")] - //api/componentpresentation/GetContentMultiple/3/1,2,3,4 - public IHttpActionResult GetContentMultiple(int publicationId, [ArrayParam] int[] ids) - { - Logger.Debug("GetContentMultiple publicationId={0}, componentId={1}", publicationId, ids); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - ComponentPresentationProvider.PublicationId = publicationId; - - //Convert the componentid (input is just item_referenceid to tcmuri's - var tcmuri = ids.Select(compId => compId.ToComponentTcmUri(publicationId)).ToArray(); - var content = ComponentPresentationProvider.GetContentMultiple(tcmuri); - - if (content.Count == 0) - return NotFound(); - - return Ok>(content); - } - - [HttpGet] - [Route("FindComponents/{publicationId:int}/{queryParameters}")] - public IHttpActionResult FindComponents(int publicationId, IQuery queryParameters) - { - Logger.Debug("FindComponents publicationId={0}, queryParameters={1}", publicationId, queryParameters); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - ComponentPresentationProvider.PublicationId = publicationId; - var content = ComponentPresentationProvider.FindComponents(queryParameters); - - if (content.Count == 0) - return NotFound(); - - return Ok>(content); - } - - } + [RoutePrefix("componentpresentation")] + public class ComponentPresentationController : ApiController + { + private readonly IComponentPresentationProvider ComponentPresentationProvider; + private readonly ILogger Logger; + + public ComponentPresentationController(IComponentPresentationProvider componentPresentationProvider, ILogger logger) + { + Logger = logger ?? throw new ArgumentNullException("logger"); + ComponentPresentationProvider = componentPresentationProvider ?? throw new ArgumentNullException("componentPresenstationProvider"); + } + + [HttpGet] + [Route("GetContent/{publicationId:int}/{id:int}/{templateId?}")] + public IHttpActionResult GetContent(int publicationId, int id, int templateId = 0) + { + Logger.Debug($"GetContent publicationId={publicationId}, componentId={id} tempalteid={templateId}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + ComponentPresentationProvider.PublicationId = publicationId; + + var content = (templateId == 0) ? + ComponentPresentationProvider.GetContent(id.ToComponentTcmUri(publicationId)) : + ComponentPresentationProvider.GetContent(id.ToComponentTcmUri(publicationId), templateId.ToComponentTemplateTcmUri(publicationId)); + + if (string.IsNullOrEmpty(content)) + return NotFound(); + + return Ok(content); + } + + [HttpGet] + [Route("GetLastPublishedDate/{publicationId:int}/{id:int}")] + public IHttpActionResult GetLastPublishedDate(int publicationId, int id) + { + Logger.Debug($"GetLastPublishedDate publicationId={publicationId}, componentId={id}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + ComponentPresentationProvider.PublicationId = publicationId; + var content = ComponentPresentationProvider.GetLastPublishedDate(id.ToComponentTcmUri(publicationId)); + + return Ok(content); + } + + [HttpGet] + [Route("GetContentMultiple/{publicationId:int}/{ids}")] + //api/componentpresentation/GetContentMultiple/3/1,2,3,4 + public IHttpActionResult GetContentMultiple(int publicationId, [ArrayParam] int[] ids) + { + Logger.Debug($"GetContentMultiple publicationId={publicationId}, componentId={ids}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + ComponentPresentationProvider.PublicationId = publicationId; + + var tcmuris = ids.Select(compId => compId.ToComponentTcmUri(publicationId)).ToArray(); + var content = ComponentPresentationProvider.GetContentMultiple(tcmuris); + + if (content.Count == 0) + return NotFound(); + + return Ok(content); + } + + [HttpGet] + [Route("FindComponents/{publicationId:int}/{queryParameters}")] + public IHttpActionResult FindComponents(int publicationId, IQuery queryParameters) + { + Logger.Debug($"FindComponents publicationId={publicationId}, queryParameters={queryParameters}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + ComponentPresentationProvider.PublicationId = publicationId; + var content = ComponentPresentationProvider.FindComponents(queryParameters); + + if (content.Count == 0) + return NotFound(); + + return Ok(content); + } + } } diff --git a/source/DD4T.RestService.WebApi/Controllers/LinkController.cs b/source/DD4T.RestService.WebApi/Controllers/LinkController.cs index 62dc284..4babe44 100644 --- a/source/DD4T.RestService.WebApi/Controllers/LinkController.cs +++ b/source/DD4T.RestService.WebApi/Controllers/LinkController.cs @@ -2,63 +2,54 @@ using DD4T.ContentModel.Contracts.Logging; using DD4T.RestService.WebApi.Helpers; using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Net.Http; using System.Web.Http; namespace DD4T.Rest.WebApi.Controllers { - [RoutePrefix("link")] - public class LinkController : ApiController - { - private readonly ILinkProvider LinkProvider; - private readonly ILogger Logger; - - public LinkController(ILinkProvider linkProvider, ILogger logger) - { - if (linkProvider == null) - throw new ArgumentNullException("linkProvider"); - - if (logger == null) - throw new ArgumentNullException("logger"); - - LinkProvider = linkProvider; - Logger = logger; - } - - [HttpGet] - [Route("ResolveLink/{publicationId:int}/{componentUri:int}")] - public IHttpActionResult ResolveLink(int publicationId, int componentUri) - { - Logger.Debug("ResolveLink publicationId={0}, componentUri={1}", publicationId, componentUri); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - LinkProvider.PublicationId = publicationId; - var link = LinkProvider.ResolveLink(componentUri.ToComponentTcmUri(publicationId)); - - if (string.IsNullOrEmpty(link)) - return NotFound(); - - return Ok(link); - } - [HttpGet] - [Route("ResolveLink/{publicationId:int}/{componentUri:int}/{sourcePageUri:int}/{excludeComponentTemplateUri:int}")] - public IHttpActionResult ResolveLink(int publicationId, int componentUri, int sourcePageUri, int excludeComponentTemplateUri) - { - Logger.Debug("GetContentByUrl publicationId={0}, componentUri={1}, sourcePageUri={2}, excludeComponentTemplateUri{3}", publicationId, componentUri, sourcePageUri, excludeComponentTemplateUri); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - LinkProvider.PublicationId = publicationId; - var link = LinkProvider.ResolveLink(sourcePageUri.ToPageTcmUri(publicationId), componentUri.ToComponentTcmUri(publicationId), excludeComponentTemplateUri.ToComponentTemplateTcmUri(publicationId)); - - if (string.IsNullOrEmpty(link)) - return NotFound(); - - return Ok(link); - } - } + [RoutePrefix("link")] + public class LinkController : ApiController + { + private readonly ILinkProvider LinkProvider; + private readonly ILogger Logger; + + public LinkController(ILinkProvider linkProvider, ILogger logger) + { + LinkProvider = linkProvider ?? throw new ArgumentNullException("linkProvider"); + Logger = logger ?? throw new ArgumentNullException("logger"); + } + + [HttpGet] + [Route("ResolveLink/{publicationId:int}/{componentUri:int}")] + public IHttpActionResult ResolveLink(int publicationId, int componentUri) + { + Logger.Debug($"ResolveLink publicationId={publicationId}, componentUri={componentUri}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + LinkProvider.PublicationId = publicationId; + var link = LinkProvider.ResolveLink(componentUri.ToComponentTcmUri(publicationId)); + + if (string.IsNullOrEmpty(link)) + return NotFound(); + + return Ok(link); + } + + [HttpGet] + [Route("ResolveLink/{publicationId:int}/{componentUri:int}/{sourcePageUri:int}/{excludeComponentTemplateUri:int}")] + public IHttpActionResult ResolveLink(int publicationId, int componentUri, int sourcePageUri, int excludeComponentTemplateUri) + { + Logger.Debug($"GetContentByUrl publicationId={publicationId}, componentUri={componentUri}, sourcePageUri={sourcePageUri}, excludeComponentTemplateUri{excludeComponentTemplateUri}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + LinkProvider.PublicationId = publicationId; + var link = LinkProvider.ResolveLink(sourcePageUri.ToPageTcmUri(publicationId), componentUri.ToComponentTcmUri(publicationId), excludeComponentTemplateUri.ToComponentTemplateTcmUri(publicationId)); + + if (string.IsNullOrEmpty(link)) + return NotFound(); + + return Ok(link); + } + } } diff --git a/source/DD4T.RestService.WebApi/Controllers/PageController.cs b/source/DD4T.RestService.WebApi/Controllers/PageController.cs index edfb0a2..a6c62b1 100644 --- a/source/DD4T.RestService.WebApi/Controllers/PageController.cs +++ b/source/DD4T.RestService.WebApi/Controllers/PageController.cs @@ -2,89 +2,82 @@ using DD4T.ContentModel.Contracts.Logging; using DD4T.RestService.WebApi.Helpers; using System; -using System.Collections.Generic; -using System.Configuration; -using System.Linq; -using System.Net; -using System.Net.Http; using System.Web.Http; namespace DD4T.RestService.WebApi.Controllers { - [RoutePrefix("page")] - public class PageController : ApiController - { - private readonly IPageProvider PageProvider; - private readonly ILogger Logger; - - public PageController(IPageProvider pageProvider, ILogger logger) - { - if (pageProvider == null) - throw new ArgumentNullException("pageProvider"); - - if (logger == null) - throw new ArgumentNullException("logger"); - - PageProvider = pageProvider; - Logger = logger; - } - - [HttpGet] - [Route("GetContentByUrl/{publicationId:int}/{extension}/{*url}")] - public IHttpActionResult GetContentByUrl(int publicationId, string extension, string url) - { - Logger.Debug("PageController.GetContentByUrl publicationId={0}, Url={1}, extension={2}", publicationId, url, extension); - - PageProvider.PublicationId = publicationId; - var content = PageProvider.GetContentByUrl(url.GetUrl(extension)); - - if (string.IsNullOrEmpty(content)) - return NotFound(); - - return Ok(content); - } - - [HttpGet] - [Route("GetContentByUri/{publicationId:int}/{id:int}")] - public IHttpActionResult GetContentByUri(int publicationId, int id) - { - Logger.Debug("PageController.GetContentByUri publicationId={0}, Url={1}", publicationId, id); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - PageProvider.PublicationId = publicationId; - var content = PageProvider.GetContentByUri(id.ToPageTcmUri(publicationId)); - - if (string.IsNullOrEmpty(content)) - return NotFound(); - - return Ok(content); - } - - [HttpGet] - [Route("GetLastPublishedDateByUrl/{publicationId:int}/{extension}/{*url}")] - public IHttpActionResult GetLastPublishedDateByUrl(int publicationId, string extension, string url) - { - Logger.Debug("PageController.GetLastPublishedDateByUrl publicationId={0}, Url={1}, Extension={2}", publicationId, url, extension); - - PageProvider.PublicationId = publicationId; - var content = PageProvider.GetLastPublishedDateByUrl(url.GetUrl(extension)); - - return Ok(content); - } - - [HttpGet] - [Route("GetLastPublishedDateByUri/{publicationId:int}/{id:int}")] - public IHttpActionResult GetLastPublishedDateByUri(int publicationId, int id) - { - Logger.Debug("PageController.GetLastPublishedDateByUri publicationId={0}, Url={1}", publicationId, id); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - PageProvider.PublicationId = publicationId; - var content = PageProvider.GetLastPublishedDateByUri(id.ToPageTcmUri(publicationId)); - - return Ok(content); - } - } + [RoutePrefix("page")] + public class PageController : ApiController + { + private readonly IPageProvider PageProvider; + private readonly ILogger Logger; + + public PageController(IPageProvider pageProvider, ILogger logger) + { + PageProvider = pageProvider ?? throw new ArgumentNullException("pageProvider"); + Logger = logger ?? throw new ArgumentNullException("logger"); + } + + [HttpGet] + [Route("GetContentByUrl/{publicationId:int}/{extension}/{*url}")] + public IHttpActionResult GetContentByUrl(int publicationId, string extension, string url) + { + Logger.Debug($"PageController.GetContentByUrl publicationId={publicationId}, Url={url}, extension={extension}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + PageProvider.PublicationId = publicationId; + var content = PageProvider.GetContentByUrl(url.GetUrl(extension)); + + if (string.IsNullOrEmpty(content)) + return NotFound(); + + return Ok(content); + } + + [HttpGet] + [Route("GetContentByUri/{publicationId:int}/{id:int}")] + public IHttpActionResult GetContentByUri(int publicationId, int id) + { + Logger.Debug($"PageController.GetContentByUri publicationId={publicationId}, id={id}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + PageProvider.PublicationId = publicationId; + var content = PageProvider.GetContentByUri(id.ToPageTcmUri(publicationId)); + + if (string.IsNullOrEmpty(content)) + return NotFound(); + + return Ok(content); + } + + [HttpGet] + [Route("GetLastPublishedDateByUrl/{publicationId:int}/{extension}/{*url}")] + public IHttpActionResult GetLastPublishedDateByUrl(int publicationId, string extension, string url) + { + Logger.Debug($"PageController.GetLastPublishedDateByUrl publicationId={publicationId}, Url={url}, Extension={extension}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + PageProvider.PublicationId = publicationId; + var content = PageProvider.GetLastPublishedDateByUrl(url.GetUrl(extension)); + + return Ok(content); + } + + [HttpGet] + [Route("GetLastPublishedDateByUri/{publicationId:int}/{id:int}")] + public IHttpActionResult GetLastPublishedDateByUri(int publicationId, int id) + { + Logger.Debug($"PageController.GetLastPublishedDateByUri publicationId={publicationId}, id={id}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + PageProvider.PublicationId = publicationId; + var content = PageProvider.GetLastPublishedDateByUri(id.ToPageTcmUri(publicationId)); + + return Ok(content); + } + } } diff --git a/source/DD4T.RestService.WebApi/Controllers/TaxonomyController.cs b/source/DD4T.RestService.WebApi/Controllers/TaxonomyController.cs index 0072fdb..77acfff 100644 --- a/source/DD4T.RestService.WebApi/Controllers/TaxonomyController.cs +++ b/source/DD4T.RestService.WebApi/Controllers/TaxonomyController.cs @@ -3,47 +3,34 @@ using DD4T.ContentModel.Contracts.Logging; using DD4T.RestService.WebApi.Helpers; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Web.Http; namespace DD4T.RestService.WebApi.Controllers { - [RoutePrefix("taxonomy")] - public class TaxonomyController : ApiController - { - private readonly ITaxonomyProvider TaxonomyProvider; - private readonly ILogger Logger; - - public TaxonomyController(ITaxonomyProvider taxonomyProvider, ILogger logger) - { - if (taxonomyProvider == null) - throw new ArgumentNullException("taxonomyProvider"); - - if (logger == null) - throw new ArgumentNullException("logger"); - - TaxonomyProvider = taxonomyProvider; - Logger = logger; - } - - [HttpGet] - [Route("GetKeyword/{publicationId:int}/{categoryUriToLookIn:int}/{keywordName}")] - public IHttpActionResult GetKeyword(int publicationId, int categoryUriToLookIn, string keywordName) - { - Logger.Debug("ResolveLink publicationId={0}, categoryUriToLookIn={1}, keywordName={2}", publicationId, categoryUriToLookIn, keywordName); - if (publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - TaxonomyProvider.PublicationId = publicationId; - var keyword = TaxonomyProvider.GetKeyword(categoryUriToLookIn.ToCategoryTcmUri(publicationId), keywordName); - - return Ok(keyword); - - } - - - } + [RoutePrefix("taxonomy")] + public class TaxonomyController : ApiController + { + private readonly ITaxonomyProvider TaxonomyProvider; + private readonly ILogger Logger; + + public TaxonomyController(ITaxonomyProvider taxonomyProvider, ILogger logger) + { + TaxonomyProvider = taxonomyProvider ?? throw new ArgumentNullException("taxonomyProvider"); + Logger = logger ?? throw new ArgumentNullException("logger"); + } + + [HttpGet] + [Route("GetKeyword/{publicationId:int}/{categoryUriToLookIn:int}/{keywordName}")] + public IHttpActionResult GetKeyword(int publicationId, int categoryUriToLookIn, string keywordName) + { + Logger.Debug($"ResolveLink publicationId={publicationId}, categoryUriToLookIn={categoryUriToLookIn}, keywordName={keywordName}"); + if (publicationId <= 0) + return BadRequest(Messages.EmptyPublicationId); + + TaxonomyProvider.PublicationId = publicationId; + var keyword = TaxonomyProvider.GetKeyword(categoryUriToLookIn.ToCategoryTcmUri(publicationId), keywordName); + + return Ok(keyword); + } + } } diff --git a/source/DD4T.RestService.WebApi/Controllers/fjcs1wze.q2z b/source/DD4T.RestService.WebApi/Controllers/fjcs1wze.q2z deleted file mode 100644 index 4fd9994..0000000 --- a/source/DD4T.RestService.WebApi/Controllers/fjcs1wze.q2z +++ /dev/null @@ -1,94 +0,0 @@ -using DD4T.ContentModel.Contracts.Providers; -using DD4T.ContentModel.Logging; -using DD4T.Rest.Helpers; -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Web.Http; - -namespace DD4T.Rest.WebApi.Controllers -{ - [RoutePrefix("api/page")] - public class PageController : ApiController - { - private readonly IPageProvider PageProvider; - private readonly ILogger Logger; - - public PageController(IPageProvider pageProvider, ILogger logger) - { - if (pageProvider == null) - throw new ArgumentException("pageProvider"); - - if (logger == null) - throw new ArgumentException("logger"); - - PageProvider = pageProvider; - Logger = logger; - } - - [HttpGet] - [Route("{action}/{publicationId:int}/{extension}/{*url}")] - public IHttpActionResult GetContentByUrl(int publicationId, string extension, string url) - { - Logger.Debug("GetContentByUrl publicationId={0}, Url={1}, extension={2}", publicationId, url, extension); - if (publicationId == null || publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - PageProvider.PublicationId = publicationId; - var content = PageProvider.GetContentByUrl(url.GetUrl(extension)); - - if (string.IsNullOrEmpty(content)) - return NotFound(); - - return Ok(content); - } - - [HttpGet] - [Route("{action}/{publicationId:int}/{id:int}")] - public IHttpActionResult GetContentByUri(int publicationId, int id) - { - Logger.Debug("GetContentByUri publicationId={0}, Url={1}", publicationId, id); - if (publicationId == null || publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - PageProvider.PublicationId = publicationId; - var content = PageProvider.GetContentByUri(id.ToPageTcmUri(publicationId)); - - if (string.IsNullOrEmpty(content)) - return NotFound(); - - return Ok(content); - } - - [HttpGet] - [Route("{action}/{publicationId:int}/{extension}/{*url}")] - public IHttpActionResult GetLastPublishedDateByUrl(int publicationId, string extension, string url) - { - Logger.Debug("GetLastPublishedDateByUrl publicationId={0}, Url={1}, Extension={2}", publicationId, url, extension); - if (publicationId == null || publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - PageProvider.PublicationId = publicationId; - var content = PageProvider.GetLastPublishedDateByUrl(url.GetUrl(extension)); - - return Ok(content); - } - - [HttpGet] - [Route("{action}/{publicationId:int}/{id:int}")] - public IHttpActionResult GetLastPublishedDateByUri(int publicationId, int id) - { - Logger.Debug("GetLastPublishedDateByUri publicationId={0}, Url={1}", publicationId, id); - if (publicationId == null || publicationId == 0) - return BadRequest(Messages.EmptyPublicationId); - - PageProvider.PublicationId = publicationId; - var content = PageProvider.GetLastPublishedDateByUri(id.ToPageTcmUri(publicationId)); - - return Ok(content); - } - } -} diff --git a/source/DD4T.RestService.WebApi/DD4T.RestService.WebApi.csproj b/source/DD4T.RestService.WebApi/DD4T.RestService.WebApi.csproj index c370060..ac2e005 100644 --- a/source/DD4T.RestService.WebApi/DD4T.RestService.WebApi.csproj +++ b/source/DD4T.RestService.WebApi/DD4T.RestService.WebApi.csproj @@ -9,11 +9,13 @@ Properties DD4T.RestService.WebApi DD4T.RestService.WebApi - v4.5.1 + v4.6.2 512 ..\ true + + true @@ -34,121 +36,92 @@ 4 - - ..\packages\Autofac.3.5.2\lib\net40\Autofac.dll - False + + ..\packages\Autofac.4.9.4\lib\net45\Autofac.dll - - ..\packages\Autofac.Mvc5.3.3.4\lib\net45\Autofac.Integration.Mvc.dll - False + + ..\packages\Autofac.Mvc5.4.0.2\lib\net45\Autofac.Integration.Mvc.dll - - ..\packages\Autofac.Owin.3.1.0\lib\net45\Autofac.Integration.Owin.dll - False + + ..\packages\Autofac.Owin.4.2.0\lib\net45\Autofac.Integration.Owin.dll - - ..\packages\Autofac.WebApi2.3.4.0\lib\net45\Autofac.Integration.WebApi.dll - False + + ..\packages\Autofac.WebApi2.4.3.0\lib\net45\Autofac.Integration.WebApi.dll - - ..\packages\Autofac.WebApi2.Owin.3.2.0\lib\net45\Autofac.Integration.WebApi.Owin.dll - False + + ..\packages\Autofac.WebApi2.Owin.4.0.0\lib\net45\Autofac.Integration.WebApi.Owin.dll - - ..\packages\DD4T.Model.2.1.0\lib\net45\DD4T.ContentModel.dll - False + + ..\packages\DD4T.Model.2.2.2\lib\net45\DD4T.ContentModel.dll - - ..\packages\DD4T.Model.2.1.0\lib\net45\DD4T.ContentModel.Contracts.dll - False + + ..\packages\DD4T.Model.2.2.2\lib\net45\DD4T.ContentModel.Contracts.dll - - ..\packages\DD4T.Model.2.1.0\lib\net45\DD4T.ContentModel.XmlSerializers.dll - False + + ..\packages\DD4T.Model.2.2.2\lib\net45\DD4T.ContentModel.XmlSerializers.dll - - ..\packages\DD4T.Core.2.1.0\lib\net45\DD4T.Core.Contracts.dll - False + + ..\packages\DD4T.Core.2.2.10\lib\net45\DD4T.Core.Contracts.dll - - ..\packages\DD4T.DI.Autofac.2.1.0\lib\net45\DD4T.DI.Autofac.dll - False + + ..\packages\DD4T.DI.Autofac.2.2.3\lib\net45\DD4T.DI.Autofac.dll - - ..\packages\DD4T.Core.2.1.0\lib\net45\DD4T.Factories.dll - False + + ..\packages\DD4T.Core.2.2.10\lib\net45\DD4T.Factories.dll - - ..\packages\DD4T.Model.2.1.0\lib\net45\DD4T.Serialization.dll - False + + ..\packages\DD4T.Model.2.2.2\lib\net45\DD4T.Serialization.dll - - ..\packages\DD4T.Core.2.1.0\lib\net45\DD4T.Utils.dll - False + + ..\packages\DD4T.Core.2.2.10\lib\net45\DD4T.Utils.dll - - ..\packages\DD4T.Core.2.1.0\lib\net45\DD4T.ViewModels.dll - False + + ..\packages\DD4T.Core.2.2.10\lib\net45\DD4T.ViewModels.dll - - ..\packages\log4net.2.0.3\lib\net40-full\log4net.dll - False + + ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll - - False - ..\packages\Microsoft.Owin.3.0.0\lib\net45\Microsoft.Owin.dll - False + + ..\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll - False + + + ..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll - False ..\packages\Owin.1.0\lib\net40\Owin.dll - False - - False - ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll - False + + ..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll - ..\packages\Microsoft.AspNet.WebPages.3.1.0\lib\net45\System.Web.Helpers.dll - True + ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll - - False - ..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll - False + + ..\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll - - False - ..\packages\Microsoft.AspNet.WebApi.Owin.5.2.3\lib\net45\System.Web.Http.Owin.dll - False + + ..\packages\Microsoft.AspNet.WebApi.Owin.5.2.7\lib\net45\System.Web.Http.Owin.dll - - ..\packages\Microsoft.AspNet.Mvc.5.1.0\lib\net45\System.Web.Mvc.dll - False + + ..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll - ..\packages\Microsoft.AspNet.Razor.3.1.0\lib\net45\System.Web.Razor.dll - False + ..\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll - ..\packages\Microsoft.AspNet.WebPages.3.1.0\lib\net45\System.Web.WebPages.dll - False + ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll - ..\packages\Microsoft.AspNet.WebPages.3.1.0\lib\net45\System.Web.WebPages.Deployment.dll - False + ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll - ..\packages\Microsoft.AspNet.WebPages.3.1.0\lib\net45\System.Web.WebPages.Razor.dll - False + ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll @@ -172,9 +145,7 @@ Designer - - Designer - + diff --git a/source/DD4T.RestService.WebApi/Helpers/CustomParamBinder.cs b/source/DD4T.RestService.WebApi/Helpers/CustomParamBinder.cs index 495fd79..2da36c8 100644 --- a/source/DD4T.RestService.WebApi/Helpers/CustomParamBinder.cs +++ b/source/DD4T.RestService.WebApi/Helpers/CustomParamBinder.cs @@ -1,63 +1,47 @@ using System; -using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using System.Web; using System.Net.Http; using System.Web.Http; using System.Web.Http.Controllers; -using System.Web.Http.Metadata; +using ModelMetadataProvider = System.Web.Http.Metadata.ModelMetadataProvider; namespace DD4T.RestService.WebApi.Helpers { - [AttributeUsage(AttributeTargets.Parameter, Inherited = false, AllowMultiple = false)] - public class ArrayParamAttribute : ParameterBindingAttribute - { - public override HttpParameterBinding GetBinding(HttpParameterDescriptor paramDesc) - { - return new ArrayParamBinding(paramDesc); - } - } - - public class ArrayParamBinding : HttpParameterBinding - { - public ArrayParamBinding(HttpParameterDescriptor paramDesc) : base(paramDesc) { } - - public override bool WillReadBody - { - get - { - return false; - } - } - - public override Task ExecuteBindingAsync(ModelMetadataProvider metadataProvider, HttpActionContext actionContext, - CancellationToken cancellationToken) - { - //TODO: VALIDATION & ERROR CHECKS - string idsAsString = actionContext.Request.GetRouteData().Values["ids"].ToString(); - - idsAsString = idsAsString.Trim('[', ']'); - - IEnumerable ids = idsAsString.Split(','); - ids = ids.Where(str => !string.IsNullOrEmpty(str)); - - IEnumerable idList = ids.Select(strId => - { - if (string.IsNullOrEmpty(strId)) return -1; - - return Convert.ToInt32(strId); - - }).ToArray(); - - SetValue(actionContext, idList); - - TaskCompletionSource tcs = new TaskCompletionSource(); - tcs.SetResult(null); - return tcs.Task; - } - - - } + [AttributeUsage(AttributeTargets.Parameter, Inherited = false, AllowMultiple = false)] + public class ArrayParamAttribute : ParameterBindingAttribute + { + public override HttpParameterBinding GetBinding(HttpParameterDescriptor paramDesc) + { + return new ArrayParamBinding(paramDesc); + } + } + + public class ArrayParamBinding : HttpParameterBinding + { + public ArrayParamBinding(HttpParameterDescriptor paramDesc) : base(paramDesc) { } + + public override bool WillReadBody => false; + + public override Task ExecuteBindingAsync(ModelMetadataProvider metadataProvider, HttpActionContext actionContext, CancellationToken cancellationToken) + { + var idsAsString = actionContext.Request.GetRouteData().Values["ids"]?.ToString(); + if (string.IsNullOrEmpty(idsAsString)) + return Task.FromCanceled(cancellationToken); + + var ids = idsAsString + .Trim('[', ']') + .Split(',') + .Where(str => !string.IsNullOrEmpty(str) && int.TryParse(str, out _)) + .Select(int.Parse) + .ToArray(); + + SetValue(actionContext, ids); + + var tcs = new TaskCompletionSource(); + tcs.SetResult(null); + return tcs.Task; + } + } } \ No newline at end of file diff --git a/source/DD4T.RestService.WebApi/Helpers/Extensions.cs b/source/DD4T.RestService.WebApi/Helpers/Extensions.cs index 612abf9..f4e3be2 100644 --- a/source/DD4T.RestService.WebApi/Helpers/Extensions.cs +++ b/source/DD4T.RestService.WebApi/Helpers/Extensions.cs @@ -1,40 +1,34 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Linq; -using System.Web; - -namespace DD4T.RestService.WebApi.Helpers +namespace DD4T.RestService.WebApi.Helpers { - public static class Extensions - { - - public static string GetUrl(this string url, string extension) - { - if (url.EndsWith("/")) - url = url.Remove(url.Length - 1); + public static class Extensions + { + + public static string GetUrl(this string url, string extension) + { + if (url.EndsWith("/")) + url = url.Remove(url.Length - 1); - return string.Format("/{0}.{1}", url, extension); - } + return $"/{url}.{extension}"; + } - public static string ToPageTcmUri(this int id, int publicationId) - { - return string.Format("tcm:{0}-{1}-64", publicationId, id); - } + public static string ToPageTcmUri(this int id, int publicationId) + { + return $"tcm:{publicationId}-{id}-64"; + } - public static string ToComponentTcmUri(this int id, int publicationId) - { - return string.Format("tcm:{0}-{1}-16", publicationId, id); - } + public static string ToComponentTcmUri(this int id, int publicationId) + { + return $"tcm:{publicationId}-{id}-16"; + } - public static string ToComponentTemplateTcmUri(this int id, int publicationId) - { - return string.Format("tcm:{0}-{1}-32", publicationId, id); - } + public static string ToComponentTemplateTcmUri(this int id, int publicationId) + { + return $"tcm:{publicationId}-{id}-32"; + } - public static string ToCategoryTcmUri(this int id, int publicationId) - { - return string.Format("tcm:{0}-{1}-512", publicationId, id); - } - } + public static string ToCategoryTcmUri(this int id, int publicationId) + { + return $"tcm:{publicationId}-{id}-512"; + } + } } \ No newline at end of file diff --git a/source/DD4T.RestService.WebApi/Helpers/Messages.cs b/source/DD4T.RestService.WebApi/Helpers/Messages.cs index 3f9a205..94e440b 100644 --- a/source/DD4T.RestService.WebApi/Helpers/Messages.cs +++ b/source/DD4T.RestService.WebApi/Helpers/Messages.cs @@ -1,14 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; - -namespace DD4T.RestService.WebApi.Helpers +namespace DD4T.RestService.WebApi.Helpers { - public static class Messages - { - //Error Message - - public const string EmptyPublicationId = "publicationId is mandatory"; - } + /// + /// Use for global messages + /// + public static class Messages + { + // Errors + public const string EmptyPublicationId = "publicationId is mandatory"; + } } \ No newline at end of file diff --git a/source/DD4T.RestService.WebApi/app.config b/source/DD4T.RestService.WebApi/app.config index db14b24..3d620a4 100644 --- a/source/DD4T.RestService.WebApi/app.config +++ b/source/DD4T.RestService.WebApi/app.config @@ -1,43 +1,62 @@  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/DD4T.RestService.WebApi/packages.config b/source/DD4T.RestService.WebApi/packages.config index 6f885f7..5326899 100644 --- a/source/DD4T.RestService.WebApi/packages.config +++ b/source/DD4T.RestService.WebApi/packages.config @@ -1,22 +1,22 @@  - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + \ No newline at end of file