From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001 From: 单军华 Date: Wed, 11 Jul 2018 10:47:42 +0800 Subject: [PATCH] 首次上传 --- screendisplay/Pods/ASIHTTPRequest/Classes/CloudFiles/ASICloudFilesRequest.m | 129 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 129 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/ASIHTTPRequest/Classes/CloudFiles/ASICloudFilesRequest.m b/screendisplay/Pods/ASIHTTPRequest/Classes/CloudFiles/ASICloudFilesRequest.m new file mode 100755 index 0000000..90cb9e7 --- /dev/null +++ b/screendisplay/Pods/ASIHTTPRequest/Classes/CloudFiles/ASICloudFilesRequest.m @@ -0,0 +1,129 @@ +// +// ASICloudFilesRequest.m +// Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest +// +// Created by Michael Mayo on 22/12/09. +// Copyright 2009 All-Seeing Interactive. All rights reserved. +// +// A class for accessing data stored on Rackspace's Cloud Files Service +// http://www.rackspacecloud.com/cloud_hosting_products/files +// +// Cloud Files Developer Guide: +// http://docs.rackspacecloud.com/servers/api/cs-devguide-latest.pdf + +#import "ASICloudFilesRequest.h" + +static NSString *username = nil; +static NSString *apiKey = nil; +static NSString *authToken = nil; +static NSString *storageURL = nil; +static NSString *cdnManagementURL = nil; +static NSString *rackspaceCloudAuthURL = @"https://auth.api.rackspacecloud.com/v1.0"; + +static NSRecursiveLock *accessDetailsLock = nil; + +@implementation ASICloudFilesRequest + ++ (void)initialize +{ + if (self == [ASICloudFilesRequest class]) { + accessDetailsLock = [[NSRecursiveLock alloc] init]; + } +} + +#pragma mark - +#pragma mark Attributes and Service URLs + ++ (NSString *)authToken { + return authToken; +} + ++ (NSString *)storageURL { + return storageURL; +} + ++ (NSString *)cdnManagementURL { + return cdnManagementURL; +} + +#pragma mark - +#pragma mark Authentication + ++ (id)authenticationRequest +{ + [accessDetailsLock lock]; + ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:rackspaceCloudAuthURL]] autorelease]; + [request addRequestHeader:@"X-Auth-User" value:username]; + [request addRequestHeader:@"X-Auth-Key" value:apiKey]; + [accessDetailsLock unlock]; + return request; +} + ++ (NSError *)authenticate +{ + [accessDetailsLock lock]; + ASIHTTPRequest *request = [ASICloudFilesRequest authenticationRequest]; + [request startSynchronous]; + + if (![request error]) { + NSDictionary *responseHeaders = [request responseHeaders]; + authToken = [responseHeaders objectForKey:@"X-Auth-Token"]; + storageURL = [responseHeaders objectForKey:@"X-Storage-Url"]; + cdnManagementURL = [responseHeaders objectForKey:@"X-CDN-Management-Url"]; + + // there is a bug in the Cloud Files API for some older accounts that causes + // the CDN URL to come back in a slightly different header + if (!cdnManagementURL) { + cdnManagementURL = [responseHeaders objectForKey:@"X-Cdn-Management-Url"]; + } + } + [accessDetailsLock unlock]; + return [request error]; +} + ++ (NSString *)username +{ + return username; +} + ++ (void)setUsername:(NSString *)newUsername +{ + [accessDetailsLock lock]; + [username release]; + username = [newUsername retain]; + [accessDetailsLock unlock]; +} + ++ (NSString *)apiKey { + return apiKey; +} + ++ (void)setApiKey:(NSString *)newApiKey +{ + [accessDetailsLock lock]; + [apiKey release]; + apiKey = [newApiKey retain]; + [accessDetailsLock unlock]; +} + +#pragma mark - +#pragma mark Date Parser + +-(NSDate *)dateFromString:(NSString *)dateString +{ + // We store our date formatter in the calling thread's dictionary + // NSDateFormatter is not thread-safe, this approach ensures each formatter is only used on a single thread + // This formatter can be reused many times in parsing a single response, so it would be expensive to keep creating new date formatters + NSMutableDictionary *threadDict = [[NSThread currentThread] threadDictionary]; + NSDateFormatter *dateFormatter = [threadDict objectForKey:@"ASICloudFilesResponseDateFormatter"]; + if (dateFormatter == nil) { + dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; + [dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]]; + // example: 2009-11-04T19:46:20.192723 + [dateFormatter setDateFormat:@"yyyy-MM-dd'T'H:mm:ss.SSSSSS"]; + [threadDict setObject:dateFormatter forKey:@"ASICloudFilesResponseDateFormatter"]; + } + return [dateFormatter dateFromString:dateString]; +} + +@end -- Gitblit v1.8.0