public LanguageService(ApiClientFactory apiClientFactory) { _apiClientFactory = apiClientFactory; }
public RunnerService(ApiClientFactory apiClientFactory) { _apiClientFactory = apiClientFactory; }
public DiplomaService(ApiClientFactory apiClientFactory) { _apiClientFactory = apiClientFactory; }
public void CreateClient_ShouldThrowException_WhenMessageHandlerFactory_Is_Null() { Assert.Throws <ArgumentNullException>(() => ApiClientFactory <ITestApi> .Create("http://www.test.com/api", null, ApiConfiguration.DefaultJsonSerializationSettingsFactory)); }
public void Setup() { httpClient = new HttpClient(); baseUri = new Uri("http://test"); instance = CreateFactory(); }
public ExampleTester() { var config = TestConfig.Instance; _client = ApiClientFactory.GetClient <IExampleClient>(config.ApiUrl); }
/// <summary> /// Submits an aggregation to the Records365 vNext Connector API. /// </summary> /// <param name="submitContext"></param> /// <returns></returns> public async override Task Submit(SubmitContext submitContext) { // Submit via HTTP API Client that is generated with AutoRest var apiClient = ApiClientFactory.CreateApiClient(submitContext.ApiClientFactorySettings); Func <string, DateTime> parseDateTime = (string value) => { DateTime result; return(!string.IsNullOrEmpty(value) && DateTime.TryParse(value, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out result) ? result : DateTime.UtcNow); }; var aggregationModel = new AggregationSubmissionInputModel() { ItemTypeId = submitContext.ItemTypeId, ExternalId = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.ExternalId)?.Value ?? "", ParentExternalId = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.ParentExternalId)?.Value ?? "", Title = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.Title)?.Value ?? "", Author = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.Author)?.Value ?? "", SourceLastModifiedDate = parseDateTime(submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.SourceLastModifiedDate)?.Value), SourceCreatedDate = parseDateTime(submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.SourceCreatedDate)?.Value), SourceLastModifiedBy = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.SourceLastModifiedBy)?.Value ?? "", SourceCreatedBy = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.SourceCreatedBy)?.Value ?? "", ConnectorId = submitContext.ConnectorConfigId.ToString(), Location = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.Location)?.Value ?? "", MediaType = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.MediaType)?.Value ?? "Electronic", BarcodeType = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.BarcodeType)?.Value ?? "", BarcodeValue = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.BarcodeValue)?.Value ?? "", RecordCategoryId = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.RecordCategoryID)?.Value ?? "", SecurityProfileIdentifier = submitContext.CoreMetaData?.FirstOrDefault(metadata => metadata.Name == Fields.SecurityProfileIdentifier)?.Value ?? "", SourceProperties = new List <SubmissionMetaDataModel>(), Relationships = new List <RelationshipDataModel>() }; if (submitContext.SourceMetaData != null) { aggregationModel.SourceProperties = submitContext.SourceMetaData; } if (submitContext.Relationships != null) { aggregationModel.Relationships = submitContext.Relationships; } var shouldContinue = true; try { var result = await GetRetryPolicy(submitContext).ExecuteAsync( async(ct) => { var authHelper = ApiClientFactory.CreateAuthenticationHelper(); var headers = await authHelper.GetHttpRequestHeaders(submitContext.AuthenticationHelperSettings).ConfigureAwait(false); return(await apiClient.ApiAggregationsPostWithHttpMessagesAsync( aggregationModel, customHeaders: headers, cancellationToken: ct ).ConfigureAwait(false)); }, submitContext.CancellationToken ).ConfigureAwait(false); shouldContinue = await HandleSubmitResponse(submitContext, result, "Aggregation").ConfigureAwait(false); } catch (HttpOperationException ex) when(ex.Response?.StatusCode == System.Net.HttpStatusCode.Conflict) { // submitted item already exists! Nothing to do but continue with the submission pipeline LogVerbose(submitContext, nameof(Submit), $"Submission returned {ex.Response.StatusCode} : Aggregation already submitted."); } if (shouldContinue) { await InvokeNext(submitContext).ConfigureAwait(false); } }
public ApiFixture() { ApiClient = ApiClientFactory.GetInstance(CreateClient()); }
public ExampleTester() { _client = ApiClientFactory.GetClient <IExampleClient>(); }
public DepartementService(ApiClientFactory apiClientFactory) { _apiClientFactory = apiClientFactory; }
public ExperienceService(ApiClientFactory apiClientFactory) { _apiClientFactory = apiClientFactory; }
public RiskService(ApiClientFactory apiClientFactory) { _apiClientFactory = apiClientFactory; }
/// <summary> /// /// </summary> /// <param name="submitContext"></param> /// <returns></returns> public override async Task Submit(SubmitContext submitContext) { var binarySubmitContext = submitContext as BinarySubmitContext; ValidateFields(binarySubmitContext); if (!CircuitProvider.IsCircuitClosed(out _)) { submitContext.SubmitResult.SubmitStatus = SubmitResult.Status.Deferred; return; } //Create the DirectBinarySubmissionInputModel needed for the SaS token call var binarySubmissionInputModel = new DirectBinarySubmissionInputModel( binarySubmitContext.ConnectorConfigId.ToString(), binarySubmitContext.ItemExternalId, binarySubmitContext.ExternalId, sourceLastModifiedDate: binarySubmitContext?.SourceLastModifiedDate, fileSize: binarySubmitContext.Stream.Length, fileName: binarySubmitContext.FileName, fileHash: binarySubmitContext.FileHash, mimeType: binarySubmitContext.MimeType ?? binarySubmitContext.SourceMetaData?.FirstOrDefault(metaInfo => metaInfo.Name == Fields.MimeType)?.Value, correlationId: binarySubmitContext.CorrelationId.ToString() ); // Get token and URL via Autorest-generated API call var apiClient = ApiClientFactory.CreateApiClient(submitContext.ApiClientFactorySettings); var retryPolicy = GetRetryPolicy(binarySubmitContext); var result = await retryPolicy.ExecuteAsync( async (ct) => { var authHelper = ApiClientFactory.CreateAuthenticationHelper(); var headers = await authHelper.GetHttpRequestHeaders(submitContext.AuthenticationHelperSettings).ConfigureAwait(false); return(await apiClient.ApiBinariesGetSASTokenPostWithHttpMessagesAsync( binarySubmissionInputModel: binarySubmissionInputModel, customHeaders: headers, cancellationToken: ct ).ConfigureAwait(false)); }, submitContext.CancellationToken ).ConfigureAwait(false); if (result.Response.StatusCode == HttpStatusCode.MethodNotAllowed) { // Direct binary submission is disabled, fall back to old submission method await base.Submit(submitContext).ConfigureAwait(false); return; } if (await HandleSubmitResponse(submitContext, result, "Binary").ConfigureAwait(false)) { var response = result.Body as DirectBinarySubmissionResponseModel; if (binarySubmitContext.Stream.CanSeek && binarySubmitContext.Stream.Length > response.MaxFileSize) { // We want to skip submission if the binary is too large. The CanSeek is to prevent NotSupportedException if // we attempt to get the length of an unseekable stream. // If we cannot seek the stream, we assume it's under the maxFileSize and allow submission. submitContext.SubmitResult.SubmitStatus = SubmitResult.Status.Skipped; return; } if (!binarySubmitContext.Stream.CanSeek) { //TODO: Log that submission is was allowed to proceed since size could not be determined. } // Retrieve reference to a blob. Use the DefaultBlobFactory if the BlobFactory on the pipeline element has not been set var blockBlob = BlobFactory != null?BlobFactory(response.Url) : DefaultBlobFactory(response.Url); // Set Blob ContentType blockBlob.Properties.ContentType = "application/octet-stream"; // If catch TooManyRequestsException, make it return a TooManyRequests Status try { await RetryProvider.ExecuteWithRetry( blockBlob.ServiceClient, //Upload to blob async() => { await blockBlob.UploadFromStreamAsync(binarySubmitContext.Stream, binarySubmitContext.CancellationToken).ConfigureAwait(false); }, GetType(), nameof(Submit)).ConfigureAwait(false); } catch (TooManyRequestsException ex) { submitContext.SubmitResult.SubmitStatus = SubmitResult.Status.TooManyRequests; submitContext.SubmitResult.WaitUntilTime = ex.WaitUntilTime; return; } if (!string.IsNullOrWhiteSpace(binarySubmitContext.FileName)) { blockBlob.Metadata[MetaDataKeys.ItemBinary_FileName] = EscapeBlobMetaDataValue(binarySubmitContext.FileName); blockBlob.Metadata[MetaDataKeys.ItemBinary_CorrelationId] = EscapeBlobMetaDataValue(binarySubmitContext.CorrelationId.ToString()); // If catch TooManyRequestsException, make it return a TooManyRequests Status try { await RetryProvider.ExecuteWithRetry( blockBlob.ServiceClient, async() => { await blockBlob.SetMetadataAsync(binarySubmitContext.CancellationToken).ConfigureAwait(false); }, GetType(), nameof(Submit)).ConfigureAwait(false); } catch (TooManyRequestsException ex) { submitContext.SubmitResult.SubmitStatus = SubmitResult.Status.TooManyRequests; submitContext.SubmitResult.WaitUntilTime = ex.WaitUntilTime; return; } } var notifyResult = await retryPolicy.ExecuteAsync( async (ct) => { //If the item corresponding to the submitted binary is not yet present, the platform will have to handle this. var authHelper = ApiClientFactory.CreateAuthenticationHelper(); var headers = await authHelper.GetHttpRequestHeaders(submitContext.AuthenticationHelperSettings).ConfigureAwait(false); return(await apiClient.ApiBinariesNotifyBinarySubmissionPostWithHttpMessagesAsync( binarySubmissionInputModel: binarySubmissionInputModel, customHeaders: headers, cancellationToken: ct ).ConfigureAwait(false)); }, submitContext.CancellationToken ).ConfigureAwait(false); if (notifyResult.Response.StatusCode != HttpStatusCode.OK) { var notificationStatusCode = "<No Status Code>"; if (result.Response != null) { notificationStatusCode = result.Response.StatusCode.ToString(); } // An issue with notification occurred, so we must throw throw new HttpOperationException(submitContext.LogPrefix() + $"Submission returned {notificationStatusCode} : Notification of binary submission failed."); } } else { return; } await InvokeNext(submitContext).ConfigureAwait(false); }
public DiagnosticsTester() { _client = ApiClientFactory.GetClient <IDiagnosticsClient>(); }
/// <summary> /// Functionality of different Customer APIs /// </summary> public CustomerApis() { ApiClient = ApiClientFactory.GetApiClient(AvailableApiClients.Resharp, UnleashedApiHelpers.ApiHost); }
public AuthController(ILogger <AuthController> logger, ApiClientFactory factory) : base(logger) { Factory = factory; }