예제 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CloudMediaContext"/> class.
        /// </summary>
        /// <param name="apiServer">A <see cref="Uri"/> representing a the API endpoint.</param>
        /// <param name="accountName">The Microsoft WindowsAzure Media Services account name to authenticate with.</param>
        /// <param name="accountKey">The Microsoft WindowsAzure Media Services account key to authenticate with.</param>
        /// <param name="scope">The scope of authorization.</param>
        /// <param name="acsBaseAddress">The access control endpoint to authenticate against.</param>
        public CloudMediaContext(Uri apiServer, string accountName, string accountKey, string scope, string acsBaseAddress)
        {
            this.ParallelTransferThreadCount = 10;
            this.NumberOfConcurrentTransfers = 2;

            OAuthDataServiceAdapter dataServiceAdapter =
                new OAuthDataServiceAdapter(accountName, accountKey, scope, acsBaseAddress, NimbusRestApiCertificateThumbprint, NimbusRestApiCertificateSubject);
            ServiceVersionAdapter versionAdapter = new ServiceVersionAdapter(KnownApiVersions.Current);

            this._dataContextFactory = new AzureMediaServicesDataServiceContextFactory(apiServer, dataServiceAdapter, versionAdapter, this);

            this._jobs                  = new JobBaseCollection(this);
            this._jobTemplates          = new JobTemplateBaseCollection(this);
            this._assets                = new AssetCollection(this);
            this._files                 = new AssetFileCollection(this);
            this._accessPolicies        = new AccessPolicyBaseCollection(this);
            this._contentKeys           = new ContentKeyCollection(this);
            this._notificationEndPoints = new NotificationEndPointCollection(this);
            this._mediaProcessors       = new MediaProcessorBaseCollection(this);
            this._locators              = new LocatorBaseCollection(this);
            this._ingestManifests       = new IngestManifestCollection(this);
            this._ingestManifestAssets  = new IngestManifestAssetCollection(this, null);
            this._ingestManifestFiles   = new IngestManifestFileCollection(this, null);
            this._storageAccounts       = new StorageAccountBaseCollection(this);
        }
예제 #2
0
 /// <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)
 {
     _dataServiceAdapter         = dataServiceAdapter;
     _serviceVersionAdapter      = serviceVersionAdapter;
     _mediaContext               = mediaContext;
     _userAgentAdapter           = userAgentAdapter;
     _azureMediaServicesEndpoint = CreateAzureMediaServicesEndPoint(azureMediaServicesEndpoint, mediaContext);
 }
예제 #3
0
 /// <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="mediaContext">The <seealso cref="CloudMediaContext" /> instance.</param>
 public AzureMediaServicesClassFactory(Uri azureMediaServicesEndpoint, CloudMediaContext mediaContext)
 {
     _dataServiceAdapter         = new OAuthDataServiceAdapter(mediaContext.Credentials, NimbusRestApiCertificateThumbprint, NimbusRestApiCertificateSubject);
     _serviceVersionAdapter      = new ServiceVersionAdapter(KnownApiVersions.Current);
     _userAgentAdapter           = new UserAgentAdapter(KnownClientVersions.Current);
     _mediaContext               = mediaContext;
     _azureMediaServicesEndpoint = CreateAzureMediaServicesEndPoint(azureMediaServicesEndpoint, mediaContext);
 }
예제 #4
0
 /// <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="mediaContext">The <seealso cref="CloudMediaContext" /> instance.</param>
 public AzureMediaServicesClassFactory(Uri azureMediaServicesEndpoint, CloudMediaContext mediaContext)
 {
     _dataServiceAdapter         = new OAuthDataServiceAdapter(mediaContext.TokenProvider);
     _serviceVersionAdapter      = new ServiceVersionAdapter(KnownApiVersions.Current);
     _userAgentAdapter           = new UserAgentAdapter(KnownClientVersions.Current);
     _mediaContext               = mediaContext;
     _azureMediaServicesEndpoint = CreateAzureMediaServicesEndPoint(azureMediaServicesEndpoint, mediaContext);
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="AzureMediaServicesDataServiceContextFactory"/> 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="cloudMediaContext">The <seealso cref="CloudMediaContext"/> instance.</param>
        public AzureMediaServicesDataServiceContextFactory(Uri azureMediaServicesEndpoint, OAuthDataServiceAdapter dataServiceAdapter, ServiceVersionAdapter serviceVersionAdapter, CloudMediaContext cloudMediaContext)
        {
            this._dataServiceAdapter    = dataServiceAdapter;
            this._serviceVersionAdapter = serviceVersionAdapter;
            this._cloudMediaContext     = cloudMediaContext;

            this._azureMediaServicesEndpoint = GetAccountApiEndpoint(this._dataServiceAdapter, this._serviceVersionAdapter, azureMediaServicesEndpoint);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CloudMediaContext"/> class.
 /// </summary>
 /// <param name="apiServer">A <see cref="Uri"/> representing the API endpoint.</param>
 /// <param name="credentials">Microsoft WindowsAzure Media Services credentials.</param>
 public CloudMediaContext(Uri apiServer, MediaServicesCredentials credentials)
 {
     this.apiServer = apiServer;
     this.ParallelTransferThreadCount = 10;
     this.NumberOfConcurrentTransfers = 2;
     this.Credentials   = credentials;
     dataServiceAdapter = new OAuthDataServiceAdapter(credentials, NimbusRestApiCertificateThumbprint, NimbusRestApiCertificateSubject);
     versionAdapter     = new ServiceVersionAdapter(KnownApiVersions.Current);
 }
예제 #7
0
        public static IMediaDataServiceContext CreateCustomDataServiceContext(this MediaServicesClassFactory factory)
        {
            var azureFactory          = (AzureMediaServicesClassFactory)factory;
            var serviceVersionAdapter = new ServiceVersionAdapter(CurrentVersion);

            typeof(AzureMediaServicesClassFactory)
            .GetField("_serviceVersionAdapter", BindingFlags.Instance | BindingFlags.NonPublic)
            .SetValue(azureFactory, serviceVersionAdapter);

            return(azureFactory.CreateDataServiceContext());
        }
        /// <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>
        public AzureMediaServicesClassFactory(Uri azureMediaServicesEndpoint, OAuthDataServiceAdapter dataServiceAdapter, ServiceVersionAdapter serviceVersionAdapter, MediaContextBase mediaContext)
        {
            this._dataServiceAdapter    = dataServiceAdapter;
            this._serviceVersionAdapter = serviceVersionAdapter;
            this._mediaContext          = mediaContext;

            string cacheKey = string.Format(
                "{0},{1}",
                mediaContext.Credentials.ClientId,
                azureMediaServicesEndpoint.ToString());

            this._azureMediaServicesEndpoint = _endpointCache.GetOrAdd(
                cacheKey,
                () => GetAccountApiEndpoint(this._dataServiceAdapter, this._serviceVersionAdapter, azureMediaServicesEndpoint),
                () => mediaContext.Credentials.TokenExpiration);
        }
예제 #9
0
        public void ServiceVersionHeaderPresentAndContainsVersion()
        {
            var mock    = new MockRepository(MockBehavior.Loose);
            var request = mock.Create <HttpWebRequest>();
            var headers = new WebHeaderCollection();

            request.SetupProperty(c => c.Headers, headers);
            ServiceVersionAdapter adapter = new ServiceVersionAdapter(new Version(1, 0));

            adapter.AddVersionToRequest(request.Object);
            Assert.AreEqual(1, request.Object.Headers.Count);
            string xMsVersion = "x-ms-version";

            Assert.IsNotNull(request.Object.Headers[xMsVersion]);
            Assert.AreEqual("1.0", request.Object.Headers[xMsVersion]);
        }
예제 #10
0
        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);
        }