Git Repository Public Repository

CPE_learningsite

URLs

Copy to Clipboard

This repository has no backups
This repository's network speed is throttled to 100KB/sec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using CPE.App.Api.Helpers;
using CPE.App.Web.Models;
using System.Web;
using System.Web.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System.Web.Mvc;
using System.Diagnostics;
using System.Net.Http.Formatting;
using CPE.App.Web.Elucidat;
using CPE.App.Web.Helpers;

namespace CPE.App.Api.Controllers
{
    public class ElucidatWebHookController : ApiController
    {
        private readonly JsonMediaTypeFormatter[] _jsonFormatters =
{
            new JsonMediaTypeFormatter
            {
                SerializerSettings = new JsonSerializerSettings
                {
                    ContractResolver = new UnderscoreContractResolver(),
                }
            }
        };

        // GET: api/ElucidatWebHook
        public bool Get()
        {
            return true;
        }

        // POST: api/ElucidatWebHook
        public async Task<HttpResponseMessage> Post()
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            string root = HttpContext.Current.Server.MapPath("~/App_Data");
            var provider = new MultipartFormDataStreamProvider(root);

            try
            {
                await Request.Content.ReadAsMultipartAsync(provider);

                foreach (var key in provider.FormData.AllKeys)
                {
                    foreach (var val in provider.FormData.GetValues(key))
                    {
                        if (val.IndexOf("release_code") >-1)
                        {
                            ReleaseModel release = (ReleaseModel)JsonConvert.DeserializeObject(val, typeof(ReleaseModel), _jsonFormatters[0].SerializerSettings);
                            if (release.Project.Name.IndexOf("Template") < 0) {
                                if (release.ReleaseMode == "online-private")
                                {
                                    var done = true;
                                    if (release.LrsEndpoint == null)
                                    {
                                        done = ProjectConfigureHelper.ProjectConfiguration(release.Project.ProjectCode, release.ReleaseCode);
                                    }
                                    done = ReleaseDetailHelper.GetReleaseDescriptionDetails(release) && done;
                                    if (!done)
                                    {
                                        Utilities.LogWrapper.Error("[ElucidatWebHookController][Post] Bad Release: ProjectCode={0} ReleaseCode={1}", release.Project.ProjectCode, release.ReleaseCode);

                                        //send email to cpe that something went wrong capturing release description or updating lrs info
                                        var result = SendEmailHelper.SendBadReleaseEmail(release);
                                    }
                                }
                            }                            
                        }
                    }
                }

                return Request.CreateResponse(HttpStatusCode.OK);
            }
            catch (System.Exception e)
            {
                Utilities.LogWrapper.Error("[ElucidatWebHookController][Post] Unhandled exception: exception={0}", e.ToString());
                return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
            }
            
        }

    }
}

Commits for CPE_learningsiteCPE/CPE.App/CPE.App.Api/Controllers/ElucidatWebHookController.cs

Diff revisions: vs.
Revision Author Commited Message
4cd176 ... v.shishlov Fri 27 Aug, 2021 14:33:17 +0000

initial commit