public async Task Handle(ProjectServiceTemplateCreatedEvent @event) { CreateOrganizationRepositoryOptions createOrganizationRepositoryOptions = new CreateOrganizationRepositoryOptions(); createOrganizationRepositoryOptions.VSTSAccessId = _vstsOptions.Value.AccessId; createOrganizationRepositoryOptions.VSTSAccessSecret = _vstsOptions.Value.AccessSecret; createOrganizationRepositoryOptions.VSTSRepositoryTemplateUrl = @event.SourceTemplateUrl; createOrganizationRepositoryOptions.TemplateAccess = @event.TemplateAccess; createOrganizationRepositoryOptions.NeedCredentials = @event.NeedCredentials; createOrganizationRepositoryOptions.RepositoryCMSType = @event.RepositoryCMSType; createOrganizationRepositoryOptions.RepositoryAccessId = @event.RepositoryAccessId; createOrganizationRepositoryOptions.RepositoryAccessSecret = @event.RepositoryAccessSecret; createOrganizationRepositoryOptions.RepositoryAccessToken = @event.RepositoryAccessToken; createOrganizationRepositoryOptions.RepositoryUrl = @event.RepositoryUrl; createOrganizationRepositoryOptions.Branch = @"refs/heads/master"; await _pipelineSpaceManagerService.CreateOrganizationRepository(createOrganizationRepositoryOptions); var oAuthToken = _httpClientWrapperService.GetTokenFromClientCredentials($"{_applicationOptions.Value.Url}/connect/token", _applicationOptions.Value.ClientId, _applicationOptions.Value.ClientSecret, _applicationOptions.Value.Scope).GetAwaiter().GetResult(); var InternalAuthCredentials = new HttpClientWrapperAuthorizationModel(); InternalAuthCredentials.Schema = "Bearer"; InternalAuthCredentials.Value = oAuthToken.access_token; string projectActivateUrl = $"{_applicationOptions.Value.Url}/internalapi/organizations/{@event.OrganizationId}/servicetemplates/{@event.ProjectServiceTemplateId}/activate"; var projectActivateResponse = await _httpClientWrapperService.PatchAsync(projectActivateUrl, new { }, InternalAuthCredentials); projectActivateResponse.EnsureSuccessStatusCode(); }
public async Task DeleteRepository(ProjectServiceDeletedEvent @event) { HttpClientWrapperAuthorizationModel authCredentials = new HttpClientWrapperAuthorizationModel(); authCredentials.Schema = "Bearer"; authCredentials.Value = @event.CMSAccessToken; string deleteRepositoryUrl = $"https://api.github.com/repos/{@event.CMSAccountName}/{@event.ServiceName}"; var deleteRepositoryResponse = await _httpClientWrapperService.DeleteAsync(deleteRepositoryUrl, authCredentials, Headers); deleteRepositoryResponse.EnsureSuccessStatusCode(); }
public async Task CreateProject(ProjectCreatedEvent @event, ApplicationOptions applicationOptions) { string accountUrl = $"https://{@event.CMSAccountName}.visualstudio.com"; int index = 0; while (true) { HttpClientWrapperAuthorizationModel authCredentials = new HttpClientWrapperAuthorizationModel(); authCredentials.Schema = "Basic"; authCredentials.Value = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", @event.CMSAccessSecret))); string projectUrl = $"{accountUrl}/_apis/projects?api-version={_vstsOptions.Value.ApiVersion}"; var projectResponse = await _httpClientWrapperService.GetAsync(projectUrl, authCredentials); projectResponse.EnsureSuccessStatusCode(); var projects = await projectResponse.MapTo <CMSVSTSProjectListModel>(); var project = projects.Items.FirstOrDefault(x => x.Name.Equals(@event.ProjectName, StringComparison.InvariantCultureIgnoreCase)); if (project != null) { var oAuthToken = await _httpClientWrapperService.GetTokenFromClientCredentials($"{applicationOptions.Url}/connect/token", applicationOptions.ClientId, applicationOptions.ClientSecret, applicationOptions.Scope); HttpClientWrapperAuthorizationModel internalAuthCredentials = new HttpClientWrapperAuthorizationModel(); internalAuthCredentials.Schema = "Bearer"; internalAuthCredentials.Value = oAuthToken.access_token; //Patch Project External Id string projectPatchUrl = $"{applicationOptions.Url}/internalapi/organizations/{@event.OrganizationId}/projects/{@event.ProjectId}"; var projectPatchResponse = await _httpClientWrapperService.PatchAsync(projectPatchUrl, new { ProjectExternalId = project.Id, ProjectExternalName = project.Name }, internalAuthCredentials); projectPatchResponse.EnsureSuccessStatusCode(); break; } else { index++; //this means after 20 seconds it didn't create the project if (index == 6) { throw new Exception($"After 20 seconds it could be possible to retreive the external project id: Ref: {@event.ProjectId} - {@event.ProjectName}"); } Thread.Sleep(TimeSpan.FromSeconds(5)); } } }
public async Task DeleteProject(ProjectDeletedEvent @event) { string accountUrl = $"https://{@event.CMSAccountName}.visualstudio.com"; HttpClientWrapperAuthorizationModel authCredentials = new HttpClientWrapperAuthorizationModel(); authCredentials.Schema = "Basic"; authCredentials.Value = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", @event.CMSAccessSecret))); string projectUrl = $"{accountUrl}/_apis/projects/{@event.ProjectExternalId}?api-version={_vstsOptions.Value.ApiVersion}"; var projectResponse = await _httpClientWrapperService.DeleteAsync(projectUrl, authCredentials); projectResponse.EnsureSuccessStatusCode(); }
public BaseHandler(IHttpClientWrapperService httpClientWrapperService, IOptions <ApplicationOptions> applicationOptions, IRealtimeService realtimeService) { _httpClientWrapperService = httpClientWrapperService; _applicationOptions = applicationOptions; this._realtimeService = realtimeService; var oAuthToken = _httpClientWrapperService.GetTokenFromClientCredentials($"{_applicationOptions.Value.Url}/connect/token", _applicationOptions.Value.ClientId, _applicationOptions.Value.ClientSecret, _applicationOptions.Value.Scope).GetAwaiter().GetResult(); InternalAuthCredentials = new HttpClientWrapperAuthorizationModel(); InternalAuthCredentials.Schema = "Bearer"; InternalAuthCredentials.Value = oAuthToken.access_token; }
public async Task DeleteProject(ProjectDeletedEvent @event) { //Begin: check data ********** @event.CMSAccountName = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId; @event.CMSAccessSecret = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret; string cmsProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectExternalId : @event.ProjectVSTSFakeId; //End: check data ********** string accountUrl = $"https://{@event.CMSAccountName}.visualstudio.com"; HttpClientWrapperAuthorizationModel authCredentials = new HttpClientWrapperAuthorizationModel(); authCredentials.Schema = "Basic"; authCredentials.Value = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", @event.CMSAccessSecret))); string projectUrl = $"{accountUrl}/_apis/projects/{cmsProjectId}?api-version={_fakeAccountOptions.Value.ApiVersion}"; var projectResponse = await _httpClientWrapperService.DeleteAsync(projectUrl, authCredentials); projectResponse.EnsureSuccessStatusCode(); }
public async Task DeleteProject(ProjectDeletedEvent @event) { //Begin: check data ********** @event.CMSAccountName = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId; @event.CMSAccessSecret = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret; string cmsProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectExternalId : @event.ProjectVSTSFakeId; //End: check data ********** string accountUrl = $"https://{@event.CMSAccountName}.visualstudio.com"; HttpClientWrapperAuthorizationModel authCredentials = new HttpClientWrapperAuthorizationModel(); authCredentials.Schema = "Basic"; authCredentials.Value = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", @event.CMSAccessSecret))); string projectUrl = $"{accountUrl}/_apis/projects/{cmsProjectId}?api-version={_fakeAccountOptions.Value.ApiVersion}"; var projectResponse = await _httpClientWrapperService.DeleteAsync(projectUrl, authCredentials); projectResponse.EnsureSuccessStatusCode(); // Delete from Bitbucket var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", @event.CMSAccountId, @event.CMSAccessToken)))); client.BaseAddress = new Uri(API_URL); var response = await client.GetAsync($"/{API_VERSION}/teams?role=admin"); var teamResult = await response.MapTo <CMSBitBucketTeamListModel>(); var defaultTeam = teamResult.Teams.FirstOrDefault(c => c.TeamId.Equals(@event.OrganizationExternalId)); response = await client.DeleteAsync($"/{API_VERSION}/teams/{defaultTeam.UserName}/projects/{@event.ProjectExternalId}"); response.EnsureSuccessStatusCode(); }
public async Task CompleteProjectFeature(ProjectFeatureCompletedEvent @event) { string accountUrl = $"https://{@event.CMSAccountName}.visualstudio.com"; foreach (var item in @event.Services) { /*Delete Infrastructure*/ if (@event.DeleteInfrastructure) { CPSAuthModel authModel = new CPSAuthModel(); authModel.AccessId = @event.CPSAccessId; authModel.AccessName = @event.CPSAccessName; authModel.AccessSecret = @event.CPSAccessSecret; authModel.AccessRegion = @event.CPSAccessRegion; authModel.AccessAppId = @event.CPSAccessAppId; authModel.AccessAppSecret = @event.CPSAccessAppSecret; authModel.AccessDirectory = @event.CPSAccessDirectory; string cloudServiceName = $"{@event.OrganizationName}{@event.ProjectName}{item.ServiceName}development{@event.FeatureName}".ToLower(); await _cpsService(@event.CPSType).DeleteService(cloudServiceName, authModel); } HttpClientWrapperAuthorizationModel authCredentials = new HttpClientWrapperAuthorizationModel(); authCredentials.Schema = "Basic"; authCredentials.Value = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", @event.CMSAccessSecret))); CMSVSTSPullRequestCreateModel pullRequestModel = new CMSVSTSPullRequestCreateModel(); pullRequestModel.SourceRefName = $"refs/heads/{@event.FeatureName.ToLower()}"; pullRequestModel.TargetRefName = "refs/heads/master"; pullRequestModel.Title = $"feature {@event.FeatureName}"; pullRequestModel.Description = $"The feature {@event.FeatureName} requests merge operation"; string pullRequestUrl = $"{accountUrl}/{@event.ProjectExternalId}/_apis/git/repositories/{item.ServiceExternalId}/pullrequests?api-version={_vstsOptions.Value.ApiVersion}"; var pullRequestResponse = await _httpClientWrapperService.PostAsync(pullRequestUrl, pullRequestModel, authCredentials); pullRequestResponse.EnsureSuccessStatusCode(); } }
public async Task CompleteProjectFeature(ProjectFeatureCompletedEvent @event) { foreach (var item in @event.Services) { /*Delete Infrastructure*/ if (@event.DeleteInfrastructure) { CPSAuthModel authModel = new CPSAuthModel(); authModel.AccessId = @event.CPSAccessId; authModel.AccessName = @event.CPSAccessName; authModel.AccessSecret = @event.CPSAccessSecret; authModel.AccessRegion = @event.CPSAccessRegion; authModel.AccessAppId = @event.CPSAccessAppId; authModel.AccessAppSecret = @event.CPSAccessAppSecret; authModel.AccessDirectory = @event.CPSAccessDirectory; string cloudServiceName = $"{@event.OrganizationName}{@event.ProjectName}{item.ServiceName}development{@event.FeatureName}".ToLower(); await _cpsService(@event.CPSType).DeleteService(cloudServiceName, authModel); } CMSGitHubPullRequestCreateModel pullRequestModel = new CMSGitHubPullRequestCreateModel(); pullRequestModel.SourceRefName = $"{@event.FeatureName.ToLower()}"; pullRequestModel.TargetRefName = "master"; pullRequestModel.Title = $"feature {@event.FeatureName}"; pullRequestModel.Description = $"The feature {@event.FeatureName} requests merge operation"; HttpClientWrapperAuthorizationModel authCredentials = new HttpClientWrapperAuthorizationModel(); authCredentials.Schema = "Bearer"; authCredentials.Value = @event.CMSAccessToken; string pullRequestUrl = $"https://api.github.com/repos/{@event.CMSAccountName}/{item.ServiceName}/pulls"; var pullRequestResponse = await _httpClientWrapperService.PostAsync(pullRequestUrl, pullRequestModel, authCredentials, headers : Headers); pullRequestResponse.EnsureSuccessStatusCode(); } }
public async Task NotifyProjectStatus(string userId, Guid organizationId, Guid projectId, string activityName, string status, HttpClientWrapperAuthorizationModel internalAuthCredentials) { string notificationUrl = $"{_applicationOptions.Value.Url}/internalapi/realtime/organizations/{organizationId}/projects/{projectId}/activities"; var response = await _httpClientWrapperService.PostAsync(notificationUrl, new { userId = userId, activityName = activityName, status = status }, internalAuthCredentials); response.EnsureSuccessStatusCode(); }
public async Task Handle(ProjectImportedEvent @event) { this.userId = @event.UserId; string accountUrl = string.Empty; string accountSecret = string.Empty; string accountProject = string.Empty; if (@event.CMSType == ConfigurationManagementService.VSTS) { accountUrl = $"https://{@event.CMSAccountName}.visualstudio.com"; accountSecret = @event.CMSAccessSecret; accountProject = @event.ProjectExternalName; } else { accountUrl = $"https://{_vstsFakeOptions.Value.AccountId}.visualstudio.com"; accountSecret = _vstsFakeOptions.Value.AccessSecret; accountProject = @event.ProjectVSTSFake; } await ExecuteProjectActivity(@event.OrganizationId, @event.ProjectId, nameof(DomainConstants.Activities.PRCRBA), async() => { await _projectHandlerService(@event.CMSType).ImportProject(@event, _applicationOptions.Value); }); HttpClientWrapperAuthorizationModel authCredentials = new HttpClientWrapperAuthorizationModel(); authCredentials.Schema = "Basic"; authCredentials.Value = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", accountSecret))); //Extesions if (@event.CPSType == CloudProviderService.AWS) { if (@event.CMSType == ConfigurationManagementService.VSTS) { await ExecuteProjectActivity(@event.OrganizationId, @event.ProjectId, nameof(DomainConstants.Activities.PREXBA), async() => { string extensionUrl = $"https://extmgmt.dev.azure.com/{@event.CMSAccountName}/_apis/extensionmanagement/installedextensionsbyname/AmazonWebServices/aws-vsts-tools?api-version=4.1-preview.1"; var extensionResponse = await _httpClientWrapperService.GetAsync(extensionUrl, authCredentials); if (extensionResponse.StatusCode == System.Net.HttpStatusCode.NotFound) { extensionResponse = await _httpClientWrapperService.PostAsync(extensionUrl, new { }, authCredentials); extensionResponse.EnsureSuccessStatusCode(); } }); } if (@event.CMSType == ConfigurationManagementService.GitHub) { await ExecuteProjectActivity(@event.OrganizationId, @event.ProjectId, nameof(DomainConstants.Activities.PREXBA), async() => { await Task.CompletedTask; }); } } if (@event.CPSType == CloudProviderService.Azure) { await ExecuteProjectActivity(@event.OrganizationId, @event.ProjectId, nameof(DomainConstants.Activities.PREXBO), async() => { string extensionUrl = $"https://extmgmt.dev.azure.com/{@event.CMSAccountName}/_apis/extensionmanagement/installedextensionsbyname/keesschollaart/arm-outputs?api-version=4.1-preview.1"; var extensionResponse = await _httpClientWrapperService.GetAsync(extensionUrl, authCredentials); if (extensionResponse.StatusCode == System.Net.HttpStatusCode.NotFound) { extensionResponse = await _httpClientWrapperService.PostAsync(extensionUrl, new { }, authCredentials); extensionResponse.EnsureSuccessStatusCode(); } }); } //Create Service Endpoint - Cloud //###################################################################################################################################################### Guid serviceEndpointId = Guid.NewGuid(); CMSVSTSServiceEndpointModel service = null; if (@event.CPSType == CloudProviderService.AWS) { service = CMSVSTSServiceEndpointModel.Factory.CreateAWSService(serviceEndpointId, $"{@event.ProjectName}AWS", @event.CPSAccessId, @event.CPSAccessSecret); } if (@event.CPSType == CloudProviderService.Azure) { service = CMSVSTSServiceEndpointModel.Factory.CreateAzureService(serviceEndpointId, $"{@event.ProjectName}Az", @event.CPSAccessId, @event.CPSAccessName, @event.CPSAccessAppId, @event.CPSAccessAppSecret, @event.CPSAccessDirectory); } string serviceEndpointUrl = string.Empty; HttpResponseMessage serviceEndpointResponse = null; string projectPatchUrl = string.Empty; HttpResponseMessage projectPatchResponse = null; CMSVSTSServiceEndpointModel serviceEndpoint = null; await ExecuteProjectActivity(@event.OrganizationId, @event.ProjectId, nameof(DomainConstants.Activities.PRCLEP), async() => { serviceEndpointUrl = $"{accountUrl}/{accountProject}/_apis/serviceendpoint/endpoints?api-version={_vstsOptions.Value.ApiVersion}-preview"; serviceEndpointResponse = await _httpClientWrapperService.PostAsync(serviceEndpointUrl, service, authCredentials); serviceEndpointResponse.EnsureSuccessStatusCode(); serviceEndpoint = await serviceEndpointResponse.MapTo <CMSVSTSServiceEndpointModel>(); //Patch External Endpoint Id projectPatchUrl = $"{_applicationOptions.Value.Url}/internalapi/organizations/{@event.OrganizationId}/projects/{@event.ProjectId}"; projectPatchResponse = await _httpClientWrapperService.PatchAsync(projectPatchUrl, new { ProjectExternalEndpointId = serviceEndpoint.Id.ToString() }, InternalAuthCredentials); projectPatchResponse.EnsureSuccessStatusCode(); }); //Create Service Endpoint - Git //###################################################################################################################################################### await ExecuteProjectActivity(@event.OrganizationId, @event.ProjectId, nameof(DomainConstants.Activities.PRGTEP), async() => { if (@event.CMSType == ConfigurationManagementService.GitHub) { var serviceConnectionModel = new { id = Guid.NewGuid(), name = $"{@event.ProjectName}GitHub", description = "PipelineSpaceGitHub", authorization = new { parameters = new { accessToken = @event.CMSAccessToken }, scheme = "PersonalAccessToken", }, type = "github", url = "https://api.github.com" }; serviceEndpointUrl = $"{accountUrl}/{accountProject}/_apis/serviceendpoint/endpoints?api-version={_vstsOptions.Value.ApiVersion}-preview"; serviceEndpointResponse = await _httpClientWrapperService.PostAsync(serviceEndpointUrl, serviceConnectionModel, authCredentials); serviceEndpointResponse.EnsureSuccessStatusCode(); serviceEndpoint = await serviceEndpointResponse.MapTo <CMSVSTSServiceEndpointModel>(); //Patch External Git Endpoint Id projectPatchUrl = $"{_applicationOptions.Value.Url}/internalapi/organizations/{@event.OrganizationId}/projects/{@event.ProjectId}"; projectPatchResponse = await _httpClientWrapperService.PatchAsync(projectPatchUrl, new { ProjectExternalGitEndpoint = serviceEndpoint.Id.ToString() }, InternalAuthCredentials); projectPatchResponse.EnsureSuccessStatusCode(); } if (@event.CMSType == ConfigurationManagementService.Bitbucket) { // Create External Connection. var serviceConnectionModel = new { id = Guid.NewGuid(), name = $"{@event.ProjectName}BitBucket", description = "PipelineSpaceBitBucket", authorization = new { parameters = new { username = @event.CMSAccessId, password = @event.CMSAccessSecret }, scheme = "UsernamePassword", }, type = "bitbucket", url = "https://api.bitbucket.org" }; serviceEndpointUrl = $"{accountUrl}/{accountProject}/_apis/serviceendpoint/endpoints?api-version={_vstsOptions.Value.ApiVersion}-preview"; serviceEndpointResponse = await _httpClientWrapperService.PostAsync(serviceEndpointUrl, serviceConnectionModel, authCredentials); serviceEndpointResponse.EnsureSuccessStatusCode(); serviceEndpoint = await serviceEndpointResponse.MapTo <CMSVSTSServiceEndpointModel>(); //Patch External Git Endpoint Id projectPatchUrl = $"{_applicationOptions.Value.Url}/internalapi/organizations/{@event.OrganizationId}/projects/{@event.ProjectId}"; projectPatchResponse = await _httpClientWrapperService.PatchAsync(projectPatchUrl, new { ProjectExternalGitEndpoint = serviceEndpoint.Id.ToString() }, InternalAuthCredentials); projectPatchResponse.EnsureSuccessStatusCode(); } }); //Activate Project External Id await ExecuteProjectActivity(@event.OrganizationId, @event.ProjectId, nameof(DomainConstants.Activities.PRACBA), async() => { string projectActivateUrl = $"{_applicationOptions.Value.Url}/internalapi/organizations/{@event.OrganizationId}/projects/{@event.ProjectId}/activate"; var projectActivateResponse = await _httpClientWrapperService.PatchAsync(projectActivateUrl, new { }, InternalAuthCredentials); projectActivateResponse.EnsureSuccessStatusCode(); }); //Import Services From Git if (@event.ProjectRepository != null && @event.ProjectRepository.Repositories != null && @event.ProjectRepository.Repositories.Count > 0) { await ExecuteProjectActivity(@event.OrganizationId, @event.ProjectId, nameof(DomainConstants.Activities.PRSTIR), async() => { foreach (var item in @event.ProjectRepository.Repositories) { string projecServicePostUrl = $"{_applicationOptions.Value.Url}/internalapi/organizations/{@event.OrganizationId}/projects/{@event.ProjectId}/services/imports"; var projecServicePostResponse = await _httpClientWrapperService.PostAsync(projecServicePostUrl, new { ServiceExternalId = item.Id, ServiceExternalUrl = item.Link, ServiceExternalName = item.ExternalName, Name = item.Name, Description = item.Name, BranchName = item.BranchName, UserId = @event.UserId, OrganizationCMSId = @event.OrganizationCMSId, BuildDefinitionYML = @event.BuildDefinitionYML, ProjectServiceTemplateId = @event.ProjectServiceTemplateId, ProjectExternalId = @event.ProjectExternalId, ProjectExternalName = @event.ProjectExternalName }, InternalAuthCredentials); projecServicePostResponse.EnsureSuccessStatusCode(); } }); } }
private async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, HttpClientWrapperAuthorizationModel authCredentials, Dictionary <string, string> headers) { try { if (authCredentials != null) { request.Headers.Authorization = new AuthenticationHeaderValue(authCredentials.Schema, authCredentials.Value); } if (headers != null) { foreach (var item in headers) { request.Headers.Add(item.Key, (string)item.Value); } } var startTime = DateTime.UtcNow; var timer = System.Diagnostics.Stopwatch.StartNew(); var response = await _httpClientFactory.CreateClient("RemoteServerFromWorker").SendAsync(request); timer.Stop(); TelemetryClientManager.Instance.TrackDependency(new DependencyTelemetry() { Type = "HTTP", Data = $"Call {request.RequestUri.AbsolutePath}", Timestamp = DateTime.UtcNow, Duration = timer.Elapsed, Success = response.IsSuccessStatusCode, Name = $"Call {request.RequestUri.AbsolutePath}", Target = request.RequestUri.Host }); return(response); } catch (Exception ex) { throw ex; } }
public async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, HttpClientWrapperAuthorizationModel authCredentials) { return(await SendAsync(request, authCredentials, null)); }
public async Task <HttpResponseMessage> PutAsync <T>(string resource, T model, HttpClientWrapperAuthorizationModel authCredentials, Dictionary <string, string> headers = null) { var request = new HttpRequestMessage(HttpMethod.Put, resource); request.Content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json"); return(await this.SendAsync(request, authCredentials, headers)); }
public async Task <HttpResponseMessage> GetAsync(string resource, HttpClientWrapperAuthorizationModel authCredentials, Dictionary <string, string> headers = null, bool cache = false, double cacheExpiration = 60) { var request = new HttpRequestMessage(HttpMethod.Get, resource); return(await this.SendAsync(request, authCredentials, headers)); }
public async Task <HttpResponseMessage> DeleteAsync(string resource, HttpClientWrapperAuthorizationModel authCredentials, Dictionary <string, string> headers = null) { var request = new HttpRequestMessage(HttpMethod.Delete, resource); return(await this.SendAsync(request, authCredentials, headers)); }