public void ClientRequestIdPresentInWebRequestAndValidGuid() { var mock = new MockRepository(MockBehavior.Loose); var request = mock.Create<HttpWebRequest>(); var headers = new WebHeaderCollection(); request.SetupProperty(c => c.Headers,headers); ClientRequestIdAdapter adapter = new ClientRequestIdAdapter(); adapter.AddClientRequestId(request.Object); Assert.AreEqual(1, request.Object.Headers.Count); string xMsClientRequestId = "x-ms-client-request-id"; Assert.IsNotNull(request.Object.Headers[xMsClientRequestId]); Guid guid; Assert.IsTrue(Guid.TryParse(request.Object.Headers[xMsClientRequestId],out guid)); }
/// <summary> /// Initializes a new instance of the <see cref="MediaServicesClassFactory" /> class. /// </summary> /// <param name="azureMediaServicesEndpoint">The Windows Azure Media Services endpoint to use.</param> /// <param name="dataServiceAdapter">The data service adapter.</param> /// <param name="serviceVersionAdapter">The service version adapter.</param> /// <param name="mediaContext">The <seealso cref="CloudMediaContext" /> instance.</param> /// <param name="userAgentAdapter">The user agent request adapter</param> public AzureMediaServicesClassFactory(Uri azureMediaServicesEndpoint, OAuthDataServiceAdapter dataServiceAdapter, ServiceVersionAdapter serviceVersionAdapter, MediaContextBase mediaContext, UserAgentAdapter userAgentAdapter) { this._dataServiceAdapter = dataServiceAdapter; this._serviceVersionAdapter = serviceVersionAdapter; this._mediaContext = mediaContext; _userAgentAdapter = userAgentAdapter; var clientRequestIdAdapter = new ClientRequestIdAdapter(); string cacheKey = string.Format( "{0},{1}", mediaContext.Credentials.ClientId, azureMediaServicesEndpoint.ToString()); this._azureMediaServicesEndpoint = _endpointCache.GetOrAdd( cacheKey, () => GetAccountApiEndpoint(this._dataServiceAdapter, this._serviceVersionAdapter, azureMediaServicesEndpoint, userAgentAdapter,clientRequestIdAdapter), () => mediaContext.Credentials.TokenExpiration); }
/// <summary> /// Creates a data service context. /// </summary> /// <returns>The new DataServiceContext instance.</returns> public override IMediaDataServiceContext CreateDataServiceContext() { DataServiceContext dataContext = new DataServiceContext(_azureMediaServicesEndpoint, DataServiceProtocolVersion.V3) { IgnoreMissingProperties = true, IgnoreResourceNotFoundException = true, MergeOption = MergeOption.PreserveChanges, }; var clientRequestIdAdapter = new ClientRequestIdAdapter(); this._dataServiceAdapter.Adapt(dataContext); this._serviceVersionAdapter.Adapt(dataContext); this._userAgentAdapter.Adapt(dataContext); clientRequestIdAdapter.Adapt(dataContext); dataContext.ReadingEntity += this.OnReadingEntity; var queryRetryPolicy = GetQueryRetryPolicy(null); var context = new MediaDataServiceContext(dataContext, queryRetryPolicy, clientRequestIdAdapter); queryRetryPolicy.RetryPolicyAdapter = context; return context; }
private Uri GetAccountApiEndpoint(OAuthDataServiceAdapter dataServiceAdapter, ServiceVersionAdapter versionAdapter, Uri apiServer, UserAgentAdapter userAgentAdapter,ClientRequestIdAdapter clientRequestIdAdapter) { MediaRetryPolicy retryPolicy = new MediaRetryPolicy( GetWebRequestTransientErrorDetectionStrategy(), RetryStrategyFactory.DefaultStrategy()); Uri apiEndpoint = null; retryPolicy.ExecuteAction( () => { HttpWebRequest request = (HttpWebRequest) WebRequest.Create(apiServer); request.AllowAutoRedirect = false; dataServiceAdapter.AddAccessTokenToRequest(request); versionAdapter.AddVersionToRequest(request); userAgentAdapter.AddUserAgentToRequest(request); clientRequestIdAdapter.AddClientRequestId(request); using (WebResponse response = request.GetResponse()) { apiEndpoint = GetAccountApiEndpointFromResponse(response); } } ); return apiEndpoint; }
/// <summary> /// Returns IEnumerable of type <see cref="IDataServiceContextAdapter"/> which applied by default for each request /// </summary> /// <returns></returns> public override IEnumerable<IDataServiceContextAdapter> GetDefaultDataContextAdapters() { var clientRequestIdAdapter = new ClientRequestIdAdapter(); return new IDataServiceContextAdapter[]{ _dataServiceAdapter, _serviceVersionAdapter, _userAgentAdapter, clientRequestIdAdapter }; }