LCOV - code coverage report
Current view: top level - Cqrs.WebApi/Controllers - ClientController.cs Hit Total Coverage
Test: doc-coverage.info Lines: 0 6 0.0 %
Date: 2017-07-26

          Line data    Source code
       1             : using System.Collections.Generic;
       2             : using System.Linq;
       3             : using System.Net;
       4             : using System.Net.Http;
       5             : using System.Text;
       6             : using System.Web.Http;
       7             : using System.Web.Http.Description;
       8             : 
       9             : namespace Cqrs.WebApi.Controllers
      10             : {
      11             :         [RoutePrefix("Client")]
      12             :         public class ClientController : ApiController
      13           0 :         {
      14             :                 [Route("")]
      15             :                 [HttpGet]
      16           0 :                 public virtual HttpResponseMessage Index()
      17             :                 {
      18             :                         var apiExplorer = GlobalConfiguration.Configuration.Services.GetApiExplorer();
      19             :                         var apiMethods = apiExplorer.ApiDescriptions.Select(ad => new ApiMethodModel(ad)).ToList();
      20             : 
      21             :                         string host = Url.Content(Request.RequestUri.AbsoluteUri.Substring(0, Request.RequestUri.AbsoluteUri.Length - Request.RequestUri.AbsolutePath.Length));
      22             :                         string path = Url.Content("~/");
      23             :                         if (path.StartsWith(host))
      24             :                                 host = null;
      25             : 
      26             :                         var responseBody = string.Format(@"window.api = window.api || {{
      27             :         metadata: {0},
      28             :         useJson: true
      29             : }};
      30             : 
      31             : $.each(window.api.metadata, function (i, action)
      32             : {{
      33             :         if (!window.api[action.ControllerName])
      34             :         {{
      35             :                 window.api[action.ControllerName] = {{}};
      36             :         }}
      37             :         window.api[action.ControllerName][action.ActionName] = function (parameters)
      38             :         {{
      39             :                 var url = '{1}{2}' + action.Url;
      40             :                 var data = [];
      41             : 
      42             :                 if (action.Parameters.length == 1 && action.Parameters[0].Name == 'parameters')
      43             :                 {{
      44             :                         data = parameters;
      45             :                 }}
      46             :                 else if (action.Parameters.length == 2 && action.Parameters[0].Name == 'entity' && action.Parameters[1].Name == 'rsn')
      47             :                 {{
      48             :                         url = url.substring(0, url.length - 5) + parameters['Rsn'];
      49             :                         data = parameters;
      50             :                 }}
      51             :                 else
      52             :                 {{
      53             :                         $.each(action.Parameters, function (j, parameter)
      54             :                         {{
      55             :                                 if (parameters[parameter.Name] === undefined)
      56             :                                 {{
      57             :                                         console.error('Missing parameter: ' + parameter.Name + ' for API: ' + action.ControllerName + '/' + action.ActionName);
      58             :                                 }}
      59             :                                 else if (parameter.IsUriParameter)
      60             :                                 {{
      61             :                                         url = url.replace('{{' + parameter.Name + '}}', parameters[parameter.Name]);
      62             :                                 }}
      63             :                                 else if (data[parameter.Name] === undefined)
      64             :                                 {{
      65             :                                         data[parameter.Name] = parameters[parameter.Name];
      66             :                                 }}
      67             :                                 else
      68             :                                 {{
      69             :                                         console.error('Detected multiple body-parameters for API: ' + action.ControllerName + '/' + action.ActionName);
      70             :                                 }}
      71             :                         }});
      72             :                 }}
      73             : 
      74             :                 if (window.api.useJson)
      75             :                         return $.ajax({{
      76             :                                 type: action.Method,
      77             :                                 url: url,
      78             :                                 data: JSON.stringify(data),
      79             :                                 contentType: 'application/json'
      80             :                         }});
      81             :                 return $.ajax({{
      82             :                         type: action.Method,
      83             :                         url: url,
      84             :                         data: data
      85             :                 }});
      86             :         }};
      87             : }});",
      88             :                                 System.Web.Helpers.Json.Encode(apiMethods),
      89             :                                 host,
      90             :                                 path);
      91             : 
      92             :                         HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, responseBody);
      93             :                         response.Content = new StringContent(responseBody, Encoding.UTF8, "application/javascript");
      94             :                         return response;
      95             :                 }
      96             : 
      97             :                 public class ApiMethodModel
      98           0 :                 {
      99             :                         public string Method { get; set; }
     100             :                         public string Url { get; set; }
     101             :                         public string ControllerName { get; set; }
     102             :                         public string ActionName { get; set; }
     103             :                         public IEnumerable<ApiParameterModel> Parameters { get; set; }
     104             : 
     105           0 :                         public ApiMethodModel(ApiDescription apiDescription)
     106             :                         {
     107             :                                 Method = apiDescription.HttpMethod.Method;
     108             :                                 Url = apiDescription.RelativePath;
     109             :                                 ControllerName = apiDescription.ActionDescriptor.ControllerDescriptor.ControllerName;
     110             :                                 ActionName = apiDescription.ActionDescriptor.ActionName;
     111             :                                 Parameters = apiDescription.ParameterDescriptions.Select(pd => new ApiParameterModel(pd));
     112             :                         }
     113             :                 }
     114             : 
     115             :                 public class ApiParameterModel
     116           0 :                 {
     117             :                         public string Name { get; set; }
     118             :                         public bool IsUriParameter { get; set; }
     119             : 
     120           0 :                         public ApiParameterModel(ApiParameterDescription apiParameterDescription)
     121             :                         {
     122             :                                 Name = apiParameterDescription.Name;
     123             :                                 IsUriParameter = apiParameterDescription.Source == ApiParameterSource.FromUri;
     124             :                         }
     125             :                 }
     126             :         }
     127             : }
     128             : 

Generated by: LCOV version 1.10