예제 #1
0
파일: Account.cs 프로젝트: lulzzz/SkyMedia
 private static void DeleteLive(string authToken, string accountId, MediaClient mediaClient)
 {
     IProgram[] programs = mediaClient.GetEntities(MediaEntity.Program) as IProgram[];
     foreach (IProgram program in programs)
     {
         program.Delete();
         DeleteAsset(authToken, accountId, mediaClient, program.Asset);
     }
     IChannel[] channels = mediaClient.GetEntities(MediaEntity.Channel) as IChannel[];
     foreach (IChannel channel in channels)
     {
         channel.Delete();
     }
 }
예제 #2
0
        private static MediaProcessor[] GetProcessors(string authToken, bool presetsView)
        {
            MediaClient mediaClient = new MediaClient(authToken);

            IMediaProcessor[] processors = mediaClient.GetEntities(MediaEntity.Processor) as IMediaProcessor[];
            return(GetMediaProcessors(processors, presetsView));
        }
예제 #3
0
        public static object GetMediaProcessors(string authToken, bool gridView)
        {
            object mediaProcessors = null;

            if (gridView)
            {
                MediaClient mediaClient = new MediaClient(authToken);
                mediaProcessors = mediaClient.GetEntities(MediaEntity.Processor) as IMediaProcessor[];
            }
            else
            {
                CacheClient      cacheClient         = new CacheClient(authToken);
                string           itemKey             = Constants.Cache.ItemKey.MediaProcessors;
                MediaProcessor[] mediaProcessorTypes = cacheClient.GetValue <MediaProcessor[]>(itemKey);
                if (mediaProcessorTypes == null)
                {
                    mediaProcessorTypes = cacheClient.Initialize(authToken);
                }
                NameValueCollection processors = new NameValueCollection();
                foreach (MediaProcessor mediaProcessorType in mediaProcessorTypes)
                {
                    string processorName = Processors.GetMediaProcessorName(mediaProcessorType);
                    processors.Add(processorName, mediaProcessorType.ToString());
                }
                mediaProcessors = processors;
            }
            return(mediaProcessors);
        }
예제 #4
0
        public static NameValueCollection GetJobTemplates(string authToken)
        {
            NameValueCollection jobTemplates = new NameValueCollection();
            MediaClient         mediaClient  = new MediaClient(authToken);

            IJobTemplate[] templates = mediaClient.GetEntities(MediaEntity.JobTemplate) as IJobTemplate[];
            foreach (IJobTemplate template in templates)
            {
                jobTemplates.Add(template.Name, template.Id);
            }
            return(jobTemplates);
        }
예제 #5
0
파일: Media.cs 프로젝트: lulzzz/SkyMedia
 private static IEnumerable <ILocator> GetMediaLocators(MediaClient mediaClient, string assetName)
 {
     ILocator[] locators;
     if (string.IsNullOrEmpty(assetName))
     {
         locators = mediaClient.GetEntities(MediaEntity.Locator) as ILocator[];
     }
     else
     {
         IAsset[]        assets        = mediaClient.GetEntities(MediaEntity.Asset, assetName) as IAsset[];
         List <ILocator> assetLocators = new List <ILocator>();
         foreach (IAsset asset in assets)
         {
             assetLocators.AddRange(asset.Locators);
         }
         locators = assetLocators.ToArray();
     }
     locators = Array.FindAll(locators, FilterByStreaming);
     Array.Sort <ILocator>(locators, OrderByDate);
     return(locators);
 }
예제 #6
0
파일: Account.cs 프로젝트: lulzzz/SkyMedia
        private static IStreamingEndpoint GetStreamingEndpoint(MediaClient mediaClient)
        {
            IStreamingEndpoint streamingEndpoint = null;

            IStreamingEndpoint[] streamingEndpoints = mediaClient.GetEntities(MediaEntity.StreamingEndpoint) as IStreamingEndpoint[];
            if (streamingEndpoints.Length > 1)
            {
                streamingEndpoint = mediaClient.GetEntityByName(MediaEntity.StreamingEndpoint, Constant.Media.Stream.DefaultEndpointName) as IStreamingEndpoint;
            }
            else if (streamingEndpoints.Length == 1)
            {
                streamingEndpoint = streamingEndpoints[0];
            }
            return(streamingEndpoint);
        }
예제 #7
0
        public static bool IsStreamingEnabled(MediaClient mediaClient)
        {
            bool streamingEnabled = false;

            IStreamingEndpoint[] streamingEndpoints = mediaClient.GetEntities(MediaEntity.StreamingEndpoint) as IStreamingEndpoint[];
            foreach (IStreamingEndpoint streamingEndpoint in streamingEndpoints)
            {
                if (streamingEndpoint.State == StreamingEndpointState.Running ||
                    streamingEndpoint.State == StreamingEndpointState.Scaling)
                {
                    streamingEnabled = true;
                }
            }
            return(streamingEnabled);
        }
예제 #8
0
        public MediaProcessor[] Initialize(string authToken)
        {
            MediaClient mediaClient = new MediaClient(authToken);

            IMediaProcessor[]     mediaProcessors    = mediaClient.GetEntities(MediaEntity.Processor) as IMediaProcessor[];
            List <MediaProcessor> mediaProcessorList = new List <MediaProcessor>();

            foreach (IMediaProcessor mediaProcessor in mediaProcessors)
            {
                MediaProcessor processorType = Processors.GetMediaProcessorType(mediaProcessor.Id);
                mediaProcessorList.Add(processorType);
            }
            MediaProcessor[] mediaProcessorTypes = mediaProcessorList.ToArray();
            SetValue <MediaProcessor[]>(Constants.Cache.ItemKey.MediaProcessors, mediaProcessorTypes);
            return(mediaProcessorTypes);
        }
예제 #9
0
        public static MediaStream[] GetMediaStreams(MediaClient mediaClient)
        {
            List <MediaStream> mediaStreams = new List <MediaStream>();
            string             settingKey   = Constants.AppSettingKey.MediaLocatorMaxStreamCount;
            int maxStreamCount = int.Parse(AppSetting.GetValue(settingKey));

            ILocator[] locators = mediaClient.GetEntities(MediaEntity.Locator) as ILocator[];
            Array.Sort <ILocator>(locators, OrderLocators);
            foreach (ILocator locator in locators)
            {
                IAsset asset = locator.Asset;
                if (asset.IsStreamable && asset.AssetFiles.Count() > 1)
                {
                    string locatorUrl = mediaClient.GetLocatorUrl(asset, locator.Type, null);
                    if (!string.IsNullOrEmpty(locatorUrl))
                    {
                        MediaTrack[]    textTracks          = GetTextTracks(mediaClient, asset, locator.Type);
                        string[]        protectionTypes     = mediaClient.GetProtectionTypes(asset);
                        MediaMetadata[] analyticsProcessors = GetAnalyticsProcessors(asset);

                        MediaStream mediaStream = new MediaStream();
                        mediaStream.Name                = asset.Name;
                        mediaStream.SourceUrl           = locatorUrl;
                        mediaStream.TextTracks          = textTracks;
                        mediaStream.ProtectionTypes     = protectionTypes;
                        mediaStream.AnalyticsProcessors = analyticsProcessors;
                        mediaStreams.Add(mediaStream);

                        foreach (IStreamingAssetFilter filter in asset.AssetFilters)
                        {
                            mediaStream                     = new MediaStream();
                            mediaStream.Name                = string.Concat(asset.Name, " (Filtered)");
                            mediaStream.SourceUrl           = string.Concat(locatorUrl, "(filter=", filter.Name, ")");
                            mediaStream.TextTracks          = new MediaTrack[] { };
                            mediaStream.ProtectionTypes     = new string[] { };
                            mediaStream.AnalyticsProcessors = new MediaMetadata[] { };
                            mediaStreams.Add(mediaStream);
                        }
                    }
                }
                if (mediaStreams.Count == maxStreamCount)
                {
                    break;
                }
            }
            return(mediaStreams.ToArray());
        }
예제 #10
0
파일: Storage.cs 프로젝트: lulzzz/SkyMedia
        public static NameValueCollection GetAccounts(string authToken)
        {
            NameValueCollection storageAccounts = new NameValueCollection();
            MediaClient         mediaClient     = new MediaClient(authToken);
            IStorageAccount     defaultStorage  = mediaClient.DefaultStorageAccount;
            string accountInfo = GetAccountInfo(authToken, defaultStorage);

            storageAccounts.Add(accountInfo, defaultStorage.Name);
            IStorageAccount[] accounts = mediaClient.GetEntities(MediaEntity.StorageAccount) as IStorageAccount[];
            foreach (IStorageAccount account in accounts)
            {
                if (!account.IsDefault)
                {
                    accountInfo = GetAccountInfo(authToken, account);
                    storageAccounts.Add(accountInfo, account.Name);
                }
            }
            return(storageAccounts);
        }
예제 #11
0
        public static object GetMediaProcessors(string authToken, bool presetsView, bool getEntities)
        {
            object mediaProcessors;

            if (getEntities)
            {
                MediaClient mediaClient = new MediaClient(authToken);
                mediaProcessors = mediaClient.GetEntities(MediaEntity.Processor);
            }
            else
            {
                NameValueCollection processorNames = new NameValueCollection();
                MediaProcessor[]    processors     = GetMediaProcessors(authToken, presetsView);
                foreach (MediaProcessor processor in processors)
                {
                    string processorName = GetProcessorName(processor);
                    processorNames.Add(processorName, processor.ToString());
                }
                mediaProcessors = processorNames;
            }
            return(mediaProcessors);
        }
예제 #12
0
 public static void ClearAccount(MediaClient mediaClient, bool allEntities)
 {
     if (allEntities)
     {
         IProgram[] programs = mediaClient.GetEntities(MediaEntity.Program) as IProgram[];
         foreach (IProgram program in programs)
         {
             program.Delete();
         }
         IChannel[] channels = mediaClient.GetEntities(MediaEntity.Channel) as IChannel[];
         foreach (IChannel channel in channels)
         {
             channel.Delete();
         }
         IIngestManifest[] manifests = mediaClient.GetEntities(MediaEntity.Manifest) as IIngestManifest[];
         foreach (IIngestManifest manifest in manifests)
         {
             manifest.Delete();
         }
     }
     IJob[] jobs = mediaClient.GetEntities(MediaEntity.Job) as IJob[];
     foreach (IJob job in jobs)
     {
         job.Delete();
     }
     INotificationEndPoint[] notificationEndpoints = mediaClient.GetEntities(MediaEntity.NotificationEndpoint) as INotificationEndPoint[];
     foreach (INotificationEndPoint notificationEndpoint in notificationEndpoints)
     {
         if (notificationEndpoint.EndPointType == NotificationEndPointType.AzureTable)
         {
             IMonitoringConfiguration monitoringConfig = mediaClient.GetEntityById(MediaEntity.MonitoringConfiguration, notificationEndpoint.Id) as IMonitoringConfiguration;
             if (monitoringConfig != null)
             {
                 monitoringConfig.Delete();
             }
         }
         notificationEndpoint.Delete();
     }
     IAsset[] assets = mediaClient.GetEntities(MediaEntity.Asset) as IAsset[];
     foreach (IAsset asset in assets)
     {
         if (asset.ParentAssets.Count > 0 || allEntities)
         {
             DeleteAsset(mediaClient, asset);
         }
     }
     if (allEntities)
     {
         IAccessPolicy[] accessPolicies = mediaClient.GetEntities(MediaEntity.AccessPolicy) as IAccessPolicy[];
         foreach (IAccessPolicy accessPolicy in accessPolicies)
         {
             accessPolicy.Delete();
         }
         IAssetDeliveryPolicy[] deliveryPolicies = mediaClient.GetEntities(MediaEntity.DeliveryPolicy) as IAssetDeliveryPolicy[];
         foreach (IAssetDeliveryPolicy deliveryPolicy in deliveryPolicies)
         {
             deliveryPolicy.Delete();
         }
         IContentKeyAuthorizationPolicy[] contentKeyAuthPolicies = mediaClient.GetEntities(MediaEntity.ContentKeyAuthPolicy) as IContentKeyAuthorizationPolicy[];
         foreach (IContentKeyAuthorizationPolicy contentKeyAuthPolicy in contentKeyAuthPolicies)
         {
             contentKeyAuthPolicy.Delete();
         }
         IContentKeyAuthorizationPolicyOption[] contentKeyAuthPolicyOptions = mediaClient.GetEntities(MediaEntity.ContentKeyAuthPolicyOption) as IContentKeyAuthorizationPolicyOption[];
         foreach (IContentKeyAuthorizationPolicyOption contentKeyAuthPolicyOption in contentKeyAuthPolicyOptions)
         {
             contentKeyAuthPolicyOption.Delete();
         }
     }
 }
예제 #13
0
파일: Account.cs 프로젝트: lulzzz/SkyMedia
        public static string[][] GetEntityCounts(MediaClient mediaClient)
        {
            IStorageAccount[] storageAccounts = mediaClient.GetEntities(MediaEntity.StorageAccount) as IStorageAccount[];
            IContentKey[]     contentKeys     = mediaClient.GetEntities(MediaEntity.ContentKey) as IContentKey[];
            IContentKeyAuthorizationPolicy[]       contentKeyAuthZPolicies      = mediaClient.GetEntities(MediaEntity.ContentKeyAuthPolicy) as IContentKeyAuthorizationPolicy[];
            IContentKeyAuthorizationPolicyOption[] contentKeyAuthZPolicyOptions = mediaClient.GetEntities(MediaEntity.ContentKeyAuthPolicyOption) as IContentKeyAuthorizationPolicyOption[];
            IIngestManifest[]      manifests       = mediaClient.GetEntities(MediaEntity.Manifest) as IIngestManifest[];
            IIngestManifestAsset[] manifestAssets  = mediaClient.GetEntities(MediaEntity.ManifestAsset) as IIngestManifestAsset[];
            IIngestManifestFile[]  manifestFiles   = mediaClient.GetEntities(MediaEntity.ManifestFile) as IIngestManifestFile[];
            IAsset[]                assets         = mediaClient.GetEntities(MediaEntity.Asset) as IAsset[];
            IAssetFile[]            files          = mediaClient.GetEntities(MediaEntity.File) as IAssetFile[];
            IChannel[]              channels       = mediaClient.GetEntities(MediaEntity.Channel) as IChannel[];
            IProgram[]              programs       = mediaClient.GetEntities(MediaEntity.Program) as IProgram[];
            IMediaProcessor[]       processors     = mediaClient.GetEntities(MediaEntity.Processor) as IMediaProcessor[];
            IEncodingReservedUnit[] processorUnits = mediaClient.GetEntities(MediaEntity.ProcessorUnit) as IEncodingReservedUnit[];
            IJobTemplate[]          jobTemplates   = mediaClient.GetEntities(MediaEntity.JobTemplate) as IJobTemplate[];
            IJob[] jobs = mediaClient.GetEntities(MediaEntity.Job) as IJob[];
            INotificationEndPoint[] notificationEndpoints = mediaClient.GetEntities(MediaEntity.NotificationEndpoint) as INotificationEndPoint[];
            IAccessPolicy[]         accessPolicies        = mediaClient.GetEntities(MediaEntity.AccessPolicy) as IAccessPolicy[];
            IAssetDeliveryPolicy[]  deliveryPolicies      = mediaClient.GetEntities(MediaEntity.DeliveryPolicy) as IAssetDeliveryPolicy[];
            IStreamingEndpoint[]    streamingEndpoints    = mediaClient.GetEntities(MediaEntity.StreamingEndpoint) as IStreamingEndpoint[];
            IStreamingFilter[]      streamingFilters      = mediaClient.GetEntities(MediaEntity.StreamingFilter) as IStreamingFilter[];
            ILocator[] locators = mediaClient.GetEntities(MediaEntity.Locator) as ILocator[];

            List <string[]> entityCounts = new List <string[]>();

            entityCounts.Add(new string[] { "Storage Accounts", storageAccounts.Length.ToString() });
            entityCounts.Add(new string[] { "Content Keys", contentKeys.Length.ToString(), "/account/contentKeys" });
            entityCounts.Add(new string[] { "Content Key AuthZ Policies", contentKeyAuthZPolicies.Length.ToString(), "/account/contentKeyAuthZPolicies" });
            entityCounts.Add(new string[] { "Content Key AuthZ Policy Options", contentKeyAuthZPolicyOptions.Length.ToString(), "/account/contentKeyAuthZPolicyOptions" });
            entityCounts.Add(new string[] { "Ingest Manifests", manifests.Length.ToString() });
            entityCounts.Add(new string[] { "Ingest Manifest Assets", manifestAssets.Length.ToString() });
            entityCounts.Add(new string[] { "Ingest Manifest Files", manifestFiles.Length.ToString() });
            entityCounts.Add(new string[] { "Assets", assets.Length.ToString() });
            entityCounts.Add(new string[] { "Asset Files", files.Length.ToString() });
            entityCounts.Add(new string[] { "Media Processors", processors.Length.ToString(), "/account/mediaProcessors" });
            entityCounts.Add(new string[] { "Media Processor Units", GetProcessorUnitCount(processorUnits).ToString() });
            entityCounts.Add(new string[] { "Channels", channels.Length.ToString() });
            entityCounts.Add(new string[] { "Channel Programs", programs.Length.ToString() });
            entityCounts.Add(new string[] { "Job Templates", jobTemplates.Length.ToString() });
            entityCounts.Add(new string[] { "Jobs", jobs.Length.ToString() });
            entityCounts.Add(new string[] { "Notification Endpoints", notificationEndpoints.Length.ToString(), "/account/notificationEndpoints" });
            entityCounts.Add(new string[] { "Access Policies", accessPolicies.Length.ToString() });
            entityCounts.Add(new string[] { "Delivery Policies", deliveryPolicies.Length.ToString() });
            entityCounts.Add(new string[] { "Streaming Endpoints", streamingEndpoints.Length.ToString() });
            entityCounts.Add(new string[] { "Streaming Units", GetStreamingUnitCount(streamingEndpoints).ToString() });
            entityCounts.Add(new string[] { "Streaming Filters", streamingFilters.Length.ToString() });
            entityCounts.Add(new string[] { "Locators", locators.Length.ToString() });
            return(entityCounts.ToArray());
        }
예제 #14
0
파일: Account.cs 프로젝트: lulzzz/SkyMedia
        public static object GetNotificationEndpoints(string authToken)
        {
            MediaClient mediaClient = new MediaClient(authToken);

            return(mediaClient.GetEntities(MediaEntity.NotificationEndpoint) as INotificationEndPoint[]);
        }
예제 #15
0
파일: Account.cs 프로젝트: lulzzz/SkyMedia
        public static object GetContentKeyAuthZPolicyOptions(string authToken)
        {
            MediaClient mediaClient = new MediaClient(authToken);

            return(mediaClient.GetEntities(MediaEntity.ContentKeyAuthPolicyOption) as IContentKeyAuthorizationPolicyOption[]);
        }
예제 #16
0
파일: Account.cs 프로젝트: lulzzz/SkyMedia
        public static object GetContentKeys(string authToken)
        {
            MediaClient mediaClient = new MediaClient(authToken);

            return(mediaClient.GetEntities(MediaEntity.ContentKey) as IContentKey[]);
        }
예제 #17
0
파일: Account.cs 프로젝트: lulzzz/SkyMedia
        public static void DeleteEntities(string authToken, bool allEntities, bool liveOnly)
        {
            User        authUser    = new User(authToken);
            MediaClient mediaClient = new MediaClient(authToken);

            if (liveOnly)
            {
                DeleteLive(authToken, authUser.MediaAccount.Id, mediaClient);
            }
            else if (!allEntities)
            {
                IAsset[] assets = mediaClient.GetEntities(MediaEntity.Asset) as IAsset[];
                foreach (IAsset asset in assets)
                {
                    if (asset.ParentAssets.Count > 0)
                    {
                        DeleteAsset(authToken, authUser.MediaAccount.Id, mediaClient, asset);
                    }
                }
            }
            else
            {
                DeleteLive(authToken, authUser.MediaAccount.Id, mediaClient);
                IIngestManifest[] manifests = mediaClient.GetEntities(MediaEntity.Manifest) as IIngestManifest[];
                foreach (IIngestManifest manifest in manifests)
                {
                    manifest.Delete();
                }
                IJobTemplate[] jobTemplates = mediaClient.GetEntities(MediaEntity.JobTemplate) as IJobTemplate[];
                foreach (IJobTemplate jobTemplate in jobTemplates)
                {
                    jobTemplate.Delete();
                }
                IJob[] jobs = mediaClient.GetEntities(MediaEntity.Job) as IJob[];
                foreach (IJob job in jobs)
                {
                    DeleteJob(authUser.MediaAccount.Id, job);
                }
                INotificationEndPoint[] notificationEndpoints = mediaClient.GetEntities(MediaEntity.NotificationEndpoint) as INotificationEndPoint[];
                foreach (INotificationEndPoint notificationEndpoint in notificationEndpoints)
                {
                    if (notificationEndpoint.EndPointType == NotificationEndPointType.AzureTable)
                    {
                        IMonitoringConfiguration monitoringConfig = mediaClient.GetEntityById(MediaEntity.MonitoringConfiguration, notificationEndpoint.Id) as IMonitoringConfiguration;
                        if (monitoringConfig != null)
                        {
                            monitoringConfig.Delete();
                        }
                    }
                    notificationEndpoint.Delete();
                }
                IAsset[] assets = mediaClient.GetEntities(MediaEntity.Asset) as IAsset[];
                foreach (IAsset asset in assets)
                {
                    DeleteAsset(authToken, authUser.MediaAccount.Id, mediaClient, asset);
                }
                IAccessPolicy[] accessPolicies = mediaClient.GetEntities(MediaEntity.AccessPolicy) as IAccessPolicy[];
                foreach (IAccessPolicy accessPolicy in accessPolicies)
                {
                    accessPolicy.Delete();
                }
                IAssetDeliveryPolicy[] deliveryPolicies = mediaClient.GetEntities(MediaEntity.DeliveryPolicy) as IAssetDeliveryPolicy[];
                foreach (IAssetDeliveryPolicy deliveryPolicy in deliveryPolicies)
                {
                    deliveryPolicy.Delete();
                }
                IContentKeyAuthorizationPolicy[] contentKeyAuthPolicies = mediaClient.GetEntities(MediaEntity.ContentKeyAuthPolicy) as IContentKeyAuthorizationPolicy[];
                foreach (IContentKeyAuthorizationPolicy contentKeyAuthPolicy in contentKeyAuthPolicies)
                {
                    contentKeyAuthPolicy.Delete();
                }
                IContentKeyAuthorizationPolicyOption[] contentKeyAuthPolicyOptions = mediaClient.GetEntities(MediaEntity.ContentKeyAuthPolicyOption) as IContentKeyAuthorizationPolicyOption[];
                foreach (IContentKeyAuthorizationPolicyOption contentKeyAuthPolicyOption in contentKeyAuthPolicyOptions)
                {
                    contentKeyAuthPolicyOption.Delete();
                }
                IContentKey[] contentKeys = mediaClient.GetEntities(MediaEntity.ContentKey) as IContentKey[];
                foreach (IContentKey contentKey in contentKeys)
                {
                    contentKey.Delete();
                }
            }
        }