aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/JobsModule.cs
blob: ad0eb6f4507f406a282923c54a23222a4b7b2b61 (plain)
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
using Tango.BL.Enumerations;
using Tango.PPC.Common;
using Tango.PPC.Jobs.Views;
using Tango.SharedUI.Helpers;

namespace Tango.PPC.Jobs
{
    [PPCModule(1, nameof(JobsView))]
    public class JobsModule : PPCModuleBase
    {
        public override string Name
        {
            get
            {
                return "Jobs";
            }
        }

        public override string Description
        {
            get
            {
                return "Manage and run jobs";
            }
        }

        public override BitmapSource Image
        {
            get
            {
                return ResourceHelper.GetImageFromResources("Images/jobs-module.png");
            }
        }

        public override Type MainViewType
        {
            get
            {
                return typeof(MainView);
            }
        }

        public override Permissions Permission
        {
            get
            {
                return Permissions.RunTechnicianModule;
            }
        }

        public override void Dispose()
        {

        }
    }
}
/span>Empty; string actionName = String.Empty; try { var routeData = HttpContext.Current.Request.RequestContext.RouteData; actionName = routeData.Values["action"].ToString(); controllerName = routeData.Values["controller"].ToString(); } catch { } try { String request = String.Empty; try { request = context.Request.Content.ReadAsStringAsync().Result; } catch { } LogManager.Log($"Request Received on {controllerName + "/" + actionName}: \n{request}"); OnRequestArrived(context.Request); var result = await base.ExecuteAsync(context, cancellationToken); return result; } catch (Exception ex) { LogManager.Log(ex, $"An error occurred while processing the request message on {controllerName + "/" + actionName}."); HttpStatusCode code = HttpStatusCode.InternalServerError; if (ex is ArgumentException || ex is InvalidDataException) { code = HttpStatusCode.BadRequest; } else if (ex is AuthenticationException) { code = HttpStatusCode.Unauthorized; } var httpException = new HttpResponseException(Request.CreateErrorResponse(code, ex.FlattenMessage(), ex)); #if DEBUG throw httpException; #else //Remove Stack trace var expandedException = httpException.Response.Content as System.Net.Http.ObjectContent<System.Web.Http.HttpError>; if (expandedException != null) { var expandedExceptionValues = expandedException.Value as HttpError; if (expandedExceptionValues != null) { expandedExceptionValues["StackTrace"] = "StackTrace not provided."; } } #endif throw httpException; } } protected virtual void OnRequestArrived(HttpRequestMessage request) { //Do nothing. } } public class TangoController<T> : TangoController where T : class { public WebToken<T> RequestToken { get; set; } protected override void OnRequestArrived(HttpRequestMessage request) { base.OnRequestArrived(request); var authorizationHeader = request.Headers.Authorization; if (authorizationHeader != null) { try { RequestToken = WebToken<T>.FromToken(authorizationHeader.Parameter != null ? authorizationHeader.Parameter : authorizationHeader.ToString()); } catch (Exception ex) { throw new HttpParseException("Could not parse the provided token embedded object.", ex); } } } } }