2 using System.Collections.Generic;
6 using CPE.App.Api.Helpers;
7 using CPE.App.Web.Models;
11 using System.Threading.Tasks;
12 using Newtonsoft.Json.Linq;
13 using Newtonsoft.Json;
15 using System.Diagnostics;
16 using System.Net.Http.Formatting;
17 using CPE.App.Web.Elucidat;
18 using CPE.App.Web.Helpers;
20 namespace CPE.App.Api.Controllers
22 public class ElucidatWebHookController : ApiController
24 private readonly JsonMediaTypeFormatter[] _jsonFormatters =
26 new JsonMediaTypeFormatter
28 SerializerSettings = new JsonSerializerSettings
30 ContractResolver = new UnderscoreContractResolver(),
35 // GET: api/ElucidatWebHook
41 // POST: api/ElucidatWebHook
42 public async Task<HttpResponseMessage> Post()
44 if (!Request.Content.IsMimeMultipartContent())
46 throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
49 string root = HttpContext.Current.Server.MapPath("~/App_Data");
50 var provider = new MultipartFormDataStreamProvider(root);
54 await Request.Content.ReadAsMultipartAsync(provider);
56 foreach (var key in provider.FormData.AllKeys)
58 foreach (var val in provider.FormData.GetValues(key))
60 if (val.IndexOf("release_code") >-1)
62 ReleaseModel release = (ReleaseModel)JsonConvert.DeserializeObject(val, typeof(ReleaseModel), _jsonFormatters[0].SerializerSettings);
63 if (release.Project.Name.IndexOf("Template") < 0) {
64 if (release.ReleaseMode == "online-private")
67 if (release.LrsEndpoint == null)
69 done = ProjectConfigureHelper.ProjectConfiguration(release.Project.ProjectCode, release.ReleaseCode);
71 done = ReleaseDetailHelper.GetReleaseDescriptionDetails(release) && done;
74 Utilities.LogWrapper.Error("[ElucidatWebHookController][Post] Bad Release: ProjectCode={0} ReleaseCode={1}", release.Project.ProjectCode, release.ReleaseCode);
76 //send email to cpe that something went wrong capturing release description or updating lrs info
77 var result = SendEmailHelper.SendBadReleaseEmail(release);
85 return Request.CreateResponse(HttpStatusCode.OK);
87 catch (System.Exception e)
89 Utilities.LogWrapper.Error("[ElucidatWebHookController][Post] Unhandled exception: exception={0}", e.ToString());
90 return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);