Beispiel #1
0
        public IHttpActionResult ValidateRequest(CreateUpdatePackageRequest request)
        {
            if (!ApiRequestsValidator.IsRequestValid(request, out List <string> errors))
            {
                return(this.BadRequest(string.Join(", ", errors)));
            }

            return(this.Ok());
        }
        public async Task <TelemetryInitializeResponse> Initialize(TelemetryInitializeRequest request)
        {
            try
            {
                Stopwatch sw = Stopwatch.StartNew();

                if (!ApiRequestsValidator.IsRequestValid(request))
                {
                    return(new TelemetryInitializeResponse()
                    {
                        Exception = new BadRequestException("Request is not valid")
                    });
                }

                TelemetryRootObject program = await work.GetMonitoredProgram(request.TelemetryKey).ConfigureAwait(false);

                if (program == null)
                {
                    {
                        return(new TelemetryInitializeResponse {
                            Exception = new InvalidOperationException($"Program [{request.TelemetryKey}] is null")
                        });
                    }
                }

                string        ip            = "0.0.0.0";
                ClientAppUser clientAppUser = await TelemetryControllerHelpers.GetUserOrAddIfMissing(this.work, request.UserInfo, ip).ConfigureAwait(false);

                await this.work.CompleteAsync().ConfigureAwait(false);

                TelemetryInitializeResponse response = new TelemetryInitializeResponse {
                    UserId = clientAppUser.PublicId
                };
                sw.Stop();
                this.telemetryClient.TrackEvent("Initialize", new Dictionary <string, string>()
                {
                    { $"ProgramName", request.ProgramInfo?.Name },
                    { $"ExecutionTime", sw.ElapsedMilliseconds.ToString() },
                    { $"ProgramId", program.ProgramId.ToString() },
                    { $"TelemetryKey", program.TelemetryKey.ToString() },
                });
                return(response);
            }
            catch (Exception ex)
            {
                return(new TelemetryInitializeResponse {
                    Exception = new InvalidOperationException("Error while processing telemetry initialize request", ex)
                });
            }
        }
Beispiel #3
0
        public async Task <RegisterProgramResponse> Register(RegisterProgramRequest request)
        {
            try
            {
                if (!ApiRequestsValidator.IsRequestValid(request, out List <string> errors))
                {
                    return(new RegisterProgramResponse(new BadRequestException(string.Join(", ", errors))));
                }

                if (await this.Work.Programs.GetByTelemetryKey(request.TelemetryKey).ConfigureAwait(false) != null)
                {
                    return(new RegisterProgramResponse(new BadRequestException($"Use different telemetry key")));
                }

                TelimenaUser user = await this.Work.Users.FirstOrDefaultAsync(x => x.UserName == this.User.Identity.Name).ConfigureAwait(false);

                if (user == null)
                {
                    return(new RegisterProgramResponse(new BadRequestException($"Cannot find user [{this.User.Identity.Name}]")));
                }
                DeveloperTeam developerTeam = user.GetDeveloperAccountsLedByUser().FirstOrDefault();
                if (developerTeam == null)
                {
                    return(new RegisterProgramResponse(new BadRequestException($"Cannot find developer account associated with user [{user.UserName}]")));
                }

                Program program = new Program(request.Name, request.TelemetryKey)
                {
                    Description = request.Description
                };

                ProgramAssembly primaryAss = new ProgramAssembly()
                {
                    Name      = Path.GetFileNameWithoutExtension(request.PrimaryAssemblyFileName),
                    Extension = Path.GetExtension(request.PrimaryAssemblyFileName)
                };

                await this.Work.RegisterProgram(developerTeam, program, primaryAss).ConfigureAwait(false);

                program = await this.Work.Programs.GetByTelemetryKey(request.TelemetryKey).ConfigureAwait(false);

                var url = this.Url?.Link("Default", new { Controller = "ProgramManagement", Action = "Index", telemetryKey = program.TelemetryKey });
                return(new RegisterProgramResponse(program.TelemetryKey, program.DeveloperTeam.PublicId, url));
            }
            catch (Exception ex)
            {
                return(new RegisterProgramResponse(ex));
            }
        }
        public async Task <TelemetryInitializeResponse> Initialize(TelemetryInitializeRequest request)
        {
            try
            {
                if (!ApiRequestsValidator.IsRequestValid(request))
                {
                    return(new TelemetryInitializeResponse()
                    {
                        Exception = new BadRequestException("Request is not valid")
                    });
                }

                TelemetryRootObject program = await work.GetMonitoredProgram(request.TelemetryKey).ConfigureAwait(false);

                if (program == null)
                {
                    {
                        return(new TelemetryInitializeResponse {
                            Exception = new InvalidOperationException($"Program [{request.TelemetryKey}] is null")
                        });
                    }
                }

                string        ip            = this.Request.GetClientIp();
                ClientAppUser clientAppUser = await TelemetryControllerHelpers.GetUserOrAddIfMissing(this.work, request.UserInfo, ip).ConfigureAwait(false);

                await this.work.CompleteAsync().ConfigureAwait(false);

                TelemetryInitializeResponse response = new TelemetryInitializeResponse {
                    UserId = clientAppUser.PublicId
                };
                return(response);
            }
            catch (Exception ex)
            {
                return(new TelemetryInitializeResponse {
                    Exception = new InvalidOperationException("Error while processing telemetry initialize request", ex)
                });
            }
        }