From 21d3023a9b7b6aff68c1170e345951396b1c6cfd Mon Sep 17 00:00:00 2001 From: 单军华 Date: Tue, 31 Jul 2018 13:35:21 +0800 Subject: [PATCH] no message --- screendisplay/Pods/ASIHTTPRequest/Classes/CloudFiles/ASICloudFilesCDNRequest.m | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 167 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/ASIHTTPRequest/Classes/CloudFiles/ASICloudFilesCDNRequest.m b/screendisplay/Pods/ASIHTTPRequest/Classes/CloudFiles/ASICloudFilesCDNRequest.m new file mode 100755 index 0000000..397a827 --- /dev/null +++ b/screendisplay/Pods/ASIHTTPRequest/Classes/CloudFiles/ASICloudFilesCDNRequest.m @@ -0,0 +1,167 @@ +// +// ASICloudFilesCDNRequest.m +// +// Created by Michael Mayo on 1/6/10. +// + +#import "ASICloudFilesCDNRequest.h" +#import "ASICloudFilesContainerXMLParserDelegate.h" + + +@implementation ASICloudFilesCDNRequest + +@synthesize accountName, containerName, xmlParserDelegate; + ++ (id)cdnRequestWithMethod:(NSString *)method query:(NSString *)query { + NSString *urlString = [NSString stringWithFormat:@"%@%@", [ASICloudFilesRequest cdnManagementURL], query]; + ASICloudFilesCDNRequest *request = [[[ASICloudFilesCDNRequest alloc] initWithURL:[NSURL URLWithString:urlString]] autorelease]; + [request setRequestMethod:method]; + [request addRequestHeader:@"X-Auth-Token" value:[ASICloudFilesRequest authToken]]; + return request; +} + ++ (id)cdnRequestWithMethod:(NSString *)method containerName:(NSString *)containerName { + NSString *urlString = [NSString stringWithFormat:@"%@/%@", [ASICloudFilesRequest cdnManagementURL], containerName]; + ASICloudFilesCDNRequest *request = [[[ASICloudFilesCDNRequest alloc] initWithURL:[NSURL URLWithString:urlString]] autorelease]; + [request setRequestMethod:method]; + [request addRequestHeader:@"X-Auth-Token" value:[ASICloudFilesRequest authToken]]; + request.containerName = containerName; + return request; +} + +#pragma mark - +#pragma mark HEAD - Container Info + ++ (id)containerInfoRequest:(NSString *)containerName { + ASICloudFilesCDNRequest *request = [ASICloudFilesCDNRequest cdnRequestWithMethod:@"HEAD" containerName:containerName]; + return request; +} + +- (BOOL)cdnEnabled { + NSNumber *enabled = [[self responseHeaders] objectForKey:@"X-CDN-Enabled"]; + if (!enabled) { + enabled = [[self responseHeaders] objectForKey:@"X-Cdn-Enabled"]; + } + return [enabled boolValue]; +} + +- (NSString *)cdnURI { + NSString *uri = [[self responseHeaders] objectForKey:@"X-CDN-URI"]; + if (!uri) { + uri = [[self responseHeaders] objectForKey:@"X-Cdn-Uri"]; + } + return uri; +} + +- (NSString *)cdnSSLURI { + NSString *uri = [[self responseHeaders] objectForKey:@"X-CDN-SSL-URI"]; + if (!uri) { + uri = [[self responseHeaders] objectForKey:@"X-Cdn-Ssl-Uri"]; + } + return uri; +} + +- (NSUInteger)cdnTTL { + NSNumber *ttl = [[self responseHeaders] objectForKey:@"X-TTL"]; + if (!ttl) { + ttl = [[self responseHeaders] objectForKey:@"X-Ttl"]; + } + return [ttl intValue]; +} + +#pragma mark - +#pragma mark GET - CDN Container Lists + ++ (id)listRequest { + ASICloudFilesCDNRequest *request = [ASICloudFilesCDNRequest cdnRequestWithMethod:@"GET" query:@"?format=xml"]; + return request; +} + ++ (id)listRequestWithLimit:(NSUInteger)limit marker:(NSString *)marker enabledOnly:(BOOL)enabledOnly { + NSString *query = @"?format=xml"; + + if (limit > 0) { + query = [query stringByAppendingString:[NSString stringWithFormat:@"&limit=%i", limit]]; + } + + if (marker) { + query = [query stringByAppendingString:[NSString stringWithFormat:@"&marker=%@", marker]]; + } + + if (limit > 0) { + query = [query stringByAppendingString:[NSString stringWithFormat:@"&limit=%i", limit]]; + } + + ASICloudFilesCDNRequest *request = [ASICloudFilesCDNRequest cdnRequestWithMethod:@"GET" query:query]; + return request; +} + +- (NSArray *)containers { + if (xmlParserDelegate.containerObjects) { + return xmlParserDelegate.containerObjects; + } + + NSXMLParser *parser = [[[NSXMLParser alloc] initWithData:[self responseData]] autorelease]; + if (xmlParserDelegate == nil) { + xmlParserDelegate = [[ASICloudFilesContainerXMLParserDelegate alloc] init]; + } + + [parser setDelegate:xmlParserDelegate]; + [parser setShouldProcessNamespaces:NO]; + [parser setShouldReportNamespacePrefixes:NO]; + [parser setShouldResolveExternalEntities:NO]; + [parser parse]; + + return xmlParserDelegate.containerObjects; +} + +#pragma mark - +#pragma mark PUT - CDN Enable Container + +// PUT /<api version>/<account>/<container> +// PUT operations against a Container are used to CDN-enable that Container. +// Include an HTTP header of X-TTL to specify a custom TTL. ++ (id)putRequestWithContainer:(NSString *)containerName { + ASICloudFilesCDNRequest *request = [ASICloudFilesCDNRequest cdnRequestWithMethod:@"PUT" containerName:containerName]; + return request; +} + ++ (id)putRequestWithContainer:(NSString *)containerName ttl:(NSUInteger)ttl { + ASICloudFilesCDNRequest *request = [ASICloudFilesCDNRequest cdnRequestWithMethod:@"PUT" containerName:containerName]; + [request addRequestHeader:@"X-Ttl" value:[NSString stringWithFormat:@"%i", ttl]]; + return request; +} + +#pragma mark - +#pragma mark POST - Adjust CDN Attributes + +// POST /<api version>/<account>/<container> +// POST operations against a CDN-enabled Container are used to adjust CDN attributes. +// The POST operation can be used to set a new TTL cache expiration or to enable/disable public sharing over the CDN. +// X-TTL: 86400 +// X-CDN-Enabled: True ++ (id)postRequestWithContainer:(NSString *)containerName { + ASICloudFilesCDNRequest *request = [ASICloudFilesCDNRequest cdnRequestWithMethod:@"POST" containerName:containerName]; + return request; +} + ++ (id)postRequestWithContainer:(NSString *)containerName cdnEnabled:(BOOL)cdnEnabled ttl:(NSUInteger)ttl { + ASICloudFilesCDNRequest *request = [ASICloudFilesCDNRequest cdnRequestWithMethod:@"POST" containerName:containerName]; + if (ttl > 0) { + [request addRequestHeader:@"X-Ttl" value:[NSString stringWithFormat:@"%i", ttl]]; + } + [request addRequestHeader:@"X-CDN-Enabled" value:cdnEnabled ? @"True" : @"False"]; + return request; +} + +#pragma mark - +#pragma mark Memory Management + +-(void)dealloc { + [accountName release]; + [containerName release]; + [xmlParserDelegate release]; + [super dealloc]; +} + +@end -- Gitblit v1.8.0