public async static void ExampleDoc() { // Authenticate var identity = new CloudIdentity { APIKey = "{apikey}", Username = "******" }; var authProvider = new CloudIdentityProvider(identity); var cdnService = new ContentDeliveryNetworkService(authProvider, "{region}"); // List Flavors IEnumerable<Flavor> flavors = await cdnService.ListFlavorsAsync(); // Get Flavor Flavor flavor = await cdnService.GetFlavorAsync("{flavorId}"); // Create Service ServiceDefinition serviceDefinition = new ServiceDefinition("example_site", "{flavorId}", domains: new[] {new ServiceDomain("www.example.com")}, origins: new[] {new ServiceOrigin("example.com")}); string serviceId = await cdnService.CreateServiceAsync(serviceDefinition); await cdnService.WaitForServiceDeployedAsync(serviceId); // List Services IPage<Service> services = await cdnService.ListServicesAsync(); // Get Service Service service = await cdnService.GetServiceAsync("{serviceId}"); // Purge All Service Assets await cdnService.PurgeCachedAssetsAsync("{serviceId}"); // Purge a Specific Service Asset await cdnService.PurgeCachedAssetAsync("{serviceId}", "{relativeUrlOfAsset}"); // Update Service var patch = new JsonPatchDocument<ServiceDefinition>(); patch.Replace(svc => svc.Name, "newServiceName"); await cdnService.UpdateServiceAsync("{serviceId}", patch); await cdnService.WaitForServiceDeployedAsync("{serviceId}"); // Delete Service await cdnService.DeleteServiceAsync("{serviceId}"); await cdnService.WaitForServiceDeletedAsync("{serviceId}"); }
public async Task CreateAServiceOnAkamai_UsingDefaults() { Trace.WriteLine("Looking for a CDN flavor provided by Akamai..."); var flavors = await _cdnService.ListFlavorsAsync(); var flavor = flavors.FirstOrDefault(x => x.Providers.Any(p => string.Equals(p.Name, "Akamai", StringComparison.OrdinalIgnoreCase))); Assert.NotNull(flavor); var akamaiFlavor = flavor.Id; Trace.WriteLine(string.Format("Found the {0} flavor", akamaiFlavor)); Trace.WriteLine("Creating a CDN service using defaults for anything I can omit..."); var domains = new[] {new ServiceDomain("mirror.example.com")}; var origins = new[] {new ServiceOrigin("example.com")}; var serviceDefinition = new ServiceDefinition("ci-test", akamaiFlavor, domains, origins); var serviceId = await _cdnService.CreateServiceAsync(serviceDefinition); Trace.WriteLine(string.Format("Service was created: {0}", serviceId)); try { Trace.WriteLine("Waiting for the service to be deployed..."); var service = await _cdnService.WaitForServiceDeployedAsync(serviceId, progress: new Progress<bool>(x => Trace.WriteLine("..."))); Trace.WriteLine("Verifying service matches the requested definition..."); Assert.Equal("ci-test", service.Name); Assert.Equal(serviceDefinition.FlavorId, service.FlavorId); Assert.Equal(serviceDefinition.Origins.Count, service.Origins.Count()); Assert.Equal(serviceDefinition.Origins.First().Origin, service.Origins.First().Origin); Assert.Equal(serviceDefinition.Domains.Count, service.Domains.Count()); Assert.Equal(serviceDefinition.Domains.First().Domain, service.Domains.First().Domain); Trace.WriteLine("Updating the service..."); var patch = new JsonPatchDocument<ServiceDefinition>(); patch.Replace(x => x.Name, "ci-test2"); var intranetOnly = new ServiceRestriction("intranet", new[] {new ServiceRestrictionRule("intranet", "intranet.example.com")}); patch.Add(x => x.Restrictions, intranetOnly, 0); await _cdnService.UpdateServiceAsync(serviceId, patch); Trace.WriteLine("Waiting for the service changes to be deployed..."); service = await _cdnService.WaitForServiceDeployedAsync(serviceId, progress: new Progress<bool>(x => Trace.WriteLine("..."))); Trace.WriteLine("Verifying service matches updated definition..."); Assert.Equal("ci-test2", service.Name); Assert.Equal(JsonConvert.SerializeObject(intranetOnly), JsonConvert.SerializeObject(service.Restrictions.First())); Trace.WriteLine("Purging all assets on service"); await _cdnService.PurgeCachedAssetsAsync(serviceId); } finally { Trace.WriteLine("Cleaning up any test data..."); Trace.WriteLine("Removing the service..."); _cdnService.DeleteService(serviceId); _cdnService.WaitForServiceDeleted(serviceId); Trace.WriteLine("The service was cleaned up sucessfully."); } }
public async Task Run(string username, string apiKey) { // Authenticate var identity = new CloudIdentity { APIKey = apiKey, Username = username }; var authProvider = new CloudIdentityProvider(identity); var cdnService = new ContentDeliveryNetworkService(authProvider, "DFW"); // List Flavors Console.WriteLine(); Console.WriteLine("List Flavors..."); IEnumerable<Flavor> flavors = await cdnService.ListFlavorsAsync(); foreach (Flavor f in flavors) { Console.WriteLine("{0}\t{1}", f.Id, f.Providers.First().Name); } // Get Flavor Console.WriteLine(); Console.WriteLine("Get Flavor..."); Flavor flavor = await cdnService.GetFlavorAsync(flavors.First().Id); Console.WriteLine("{0}\t{1}", flavor.Id, flavor.Providers.First().Name); // Create Service Console.WriteLine(); Console.WriteLine("Create Service..."); ServiceDefinition serviceDefinition = new ServiceDefinition("example_site", flavor.Id, domains: new[] {new ServiceDomain("www.example.com")}, origins: new[] {new ServiceOrigin("example.com")}); string serviceId = await cdnService.CreateServiceAsync(serviceDefinition); await cdnService.WaitForServiceDeployedAsync(serviceId); Console.WriteLine("Service Created: {0}", serviceId); // List Services Console.WriteLine(); Console.WriteLine("List Services.."); IPage<Service> services = await cdnService.ListServicesAsync(); foreach (Service s in services) { Console.WriteLine("{0}\t{1}", s.Id, s.Name); } // Get Service Console.WriteLine(); Console.WriteLine("Get Service"); Service service = await cdnService.GetServiceAsync(serviceId); Console.WriteLine("{0}\t{1}", service.Id, service.Name); // Purge All Service Assets Console.WriteLine(); Console.WriteLine("Purge All Service Assets..."); await cdnService.PurgeCachedAssetsAsync(serviceId); // Purge a Specific Service Asset Console.WriteLine(); Console.WriteLine("Purge a Specific Service Asset..."); await cdnService.PurgeCachedAssetAsync(serviceId, "index.html"); // Update Service Console.WriteLine(); Console.WriteLine("Update Service..."); var patch = new JsonPatchDocument<ServiceDefinition>(); patch.Replace(svc => svc.Name, "newServiceName"); await cdnService.UpdateServiceAsync(serviceId, patch); await cdnService.WaitForServiceDeployedAsync(serviceId); // Delete Service Console.WriteLine(); Console.WriteLine("Delete Service..."); await cdnService.DeleteServiceAsync(serviceId); await cdnService.WaitForServiceDeletedAsync(serviceId); }
private async Task<string> CreateService(string name, string domain, string origin) { var flavors = await _cdnService.ListFlavorsAsync(); var flavor = flavors.First(); Trace.WriteLine(string.Format("Creating CDN Service: {0} for {1} originating from {2}", name, domain, origin)); var domains = new[] { new ServiceDomain(domain) }; var origins = new[] { new ServiceOrigin(origin) }; var serviceDefinition = new ServiceDefinition(name, flavor.Id, domains, origins); var serviceId = await _cdnService.CreateServiceAsync(serviceDefinition); Trace.WriteLine("Service was created: {0}", serviceId); return serviceId; }
public void CreateService() { using (var httpTest = new HttpTest()) { var response = new HttpResponseMessage(HttpStatusCode.Created); response.Headers.Location = "http://api.com".AppendPathSegments("services", "service-id").ToUri(); httpTest.ResponseQueue.Enqueue(response); var service = new ServiceDefinition("service-name", "flavor-id", "www.example.com", "example.com") { Caches = { new ServiceCache("keep-one-day", TimeSpan.FromDays(1)) }, Restrictions = { new ServiceRestriction("internal-users-only", new[] { new ServiceRestrictionRule("intranet", "intranet.example.com") }) } }; var serviceId = _cdnService.CreateService(service); Assert.Equal("service-id", serviceId); } }
/// <summary> /// Creates a Content Delivery Network service. /// </summary> /// <param name="cdnService">The <see cref="IContentDeliveryNetworkService"/> service instance.</param> /// <param name="service">The service definition.</param> /// <returns> /// The identifier of the newly created service. /// </returns> /// <exception cref="ArgumentNullException">If <paramref name="service" /> is <see langword="null" />.</exception> /// <exception cref="FlurlHttpException">If the API call returns a bad <see cref="HttpStatusCode" />.</exception> public static string CreateService(this IContentDeliveryNetworkService cdnService, ServiceDefinition service) { return cdnService.CreateServiceAsync(service).ForceSynchronous(); }
public async void CreateAServiceOnAkamai_UsingDefaults() { Trace.WriteLine("Looking for a CDN flavor provided by Akamai..."); var flavors = await _cdnService.ListFlavorsAsync(); var flavor = flavors.FirstOrDefault(x => x.Providers.Any(p => string.Equals(p.Name, "Akamai", StringComparison.OrdinalIgnoreCase))); Assert.NotNull(flavor); var akamaiFlavor = flavor.Id; Trace.WriteLine(string.Format("Found the {0} flavor", akamaiFlavor)); Trace.WriteLine("Creating a CDN service using defaults for anything I can omit..."); var domains = new[] { new ServiceDomain("mirror.example.com") }; var origins = new[] { new ServiceOrigin("example.com") }; var serviceDefinition = new ServiceDefinition("ci-test", akamaiFlavor, domains, origins); var serviceId = await _cdnService.CreateServiceAsync(serviceDefinition); Trace.WriteLine(string.Format("Service was created: {0}", serviceId)); try { Trace.WriteLine("Waiting for the service to be deployed..."); var service = await _cdnService.WaitForServiceDeployedAsync(serviceId, progress : new Progress <bool>(x => Trace.WriteLine("..."))); Trace.WriteLine("Verifying service matches the requested definition..."); Assert.Equal("ci-test", service.Name); Assert.Equal(serviceDefinition.FlavorId, service.FlavorId); Assert.Equal(serviceDefinition.Origins.Count, service.Origins.Count()); Assert.Equal(serviceDefinition.Origins.First().Origin, service.Origins.First().Origin); Assert.Equal(serviceDefinition.Domains.Count, service.Domains.Count()); Assert.Equal(serviceDefinition.Domains.First().Domain, service.Domains.First().Domain); Trace.WriteLine("Updating the service..."); var patch = new JsonPatchDocument <ServiceDefinition>(); patch.Replace(x => x.Name, "ci-test2"); var intranetOnly = new ServiceRestriction("intranet", new[] { new ServiceRestrictionRule("intranet", "intranet.example.com") }); patch.Add(x => x.Restrictions, intranetOnly, 0); await _cdnService.UpdateServiceAsync(serviceId, patch); Trace.WriteLine("Waiting for the service changes to be deployed..."); service = await _cdnService.WaitForServiceDeployedAsync(serviceId, progress : new Progress <bool>(x => Trace.WriteLine("..."))); Trace.WriteLine("Verifying service matches updated definition..."); Assert.Equal("ci-test2", service.Name); Assert.Equal(JsonConvert.SerializeObject(intranetOnly), JsonConvert.SerializeObject(service.Restrictions.First())); Trace.WriteLine("Purging all assets on service"); await _cdnService.PurgeCachedAssetsAsync(serviceId); } finally { Trace.WriteLine("Cleaning up any test data..."); Trace.WriteLine("Removing the service..."); _cdnService.DeleteService(serviceId); _cdnService.WaitForServiceDeleted(serviceId); Trace.WriteLine("The service was cleaned up sucessfully."); } }
/// <inheritdoc /> public async Task<string> CreateServiceAsync(ServiceDefinition service, CancellationToken cancellationToken = default(CancellationToken)) { if (service == null) throw new ArgumentNullException("service"); string endpoint = await _urlBuilder.GetEndpoint(cancellationToken).ConfigureAwait(false); var response = await endpoint .AppendPathSegments("services") .Authenticate(_authenticationProvider) .PostJsonAsync(service, cancellationToken) .ConfigureAwait(false); var location = response.Headers.Location; return location.Segments.Last(); }