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) }); } }
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) }); } }