using DotNetNuke.Web.Api; using System.Net.Http; using System.Web.Http; using System.Net; using System.IO; using DotNetNuke.Application; namespace Summit.ApiDemo.DemoLibrary { public class TestController : DnnApiController, IServiceRouteMapper { private readonly DotNetNuke.Abstractions.Application.IApplicationStatusInfo applicationStatusInfo; public TestController(DotNetNuke.Abstractions.Application.IApplicationStatusInfo applicationStatusInfo) { this.applicationStatusInfo = applicationStatusInfo; } public void RegisterRoutes(IMapRoute mapRouteManager) { mapRouteManager.MapHttpRoute( "Demo/DemoModule", "DemoModuleTestControllerMap1", "Test/{action}", new { Controller = "Test" }, null, new[] { "Summit.ApiDemo.DemoLibrary" }); } [HttpGet] [ApiTokenAuthorize("Test1", "~/App_LocalResources/DemoModule.resx", DotNetNuke.Web.Api.Auth.ApiTokens.Models.ApiTokenScope.Host)] public HttpResponseMessage Test1() { return Request.CreateResponse(HttpStatusCode.OK, "Hello from Test1"); } [HttpGet] [ApiTokenAuthorize("Test2", "~/App_LocalResources/DemoModule.resx", DotNetNuke.Web.Api.Auth.ApiTokens.Models.ApiTokenScope.Portal)] public HttpResponseMessage Test2() { return Request.CreateResponse(HttpStatusCode.OK, $"Hello from {PortalSettings.PortalName}"); } [HttpGet] [ApiTokenAuthorize("Test3", "~/App_LocalResources/DemoModule.resx", DotNetNuke.Web.Api.Auth.ApiTokens.Models.ApiTokenScope.User)] public HttpResponseMessage Test3() { return Request.CreateResponse(HttpStatusCode.OK, $"Hello from {UserInfo.DisplayName}."); } [HttpGet] [ApiTokenAuthorize("Test4", "~/App_LocalResources/DemoModule.resx", DotNetNuke.Web.Api.Auth.ApiTokens.Models.ApiTokenScope.Host)] public HttpResponseMessage Test4() { var webConfigPath = Path.Combine(applicationStatusInfo.ApplicationMapPath, "web.config"); // calculate md5 of web.config file var fileBytes = File.ReadAllBytes(webConfigPath); var md5 = System.Security.Cryptography.MD5.Create(); var hash = md5.ComputeHash(fileBytes); var md5String = System.BitConverter.ToString(hash).Replace("-", "").ToLower(); return Request.CreateResponse(HttpStatusCode.OK, md5String); } } }