Skip to content
This repository has been archived by the owner on Mar 20, 2023. It is now read-only.

Commit

Permalink
Add forced-private uploading.
Browse files Browse the repository at this point in the history
  • Loading branch information
Nick Paulson committed Jul 19, 2011
1 parent 896dc18 commit 975a1f9
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 6 deletions.
1 change: 1 addition & 0 deletions Source/libCloud/Cloud/API Parsing/CLAPISerializer.h
Expand Up @@ -20,6 +20,7 @@
+ (NSData *)itemWithPrivate:(BOOL)isPrivate;
+ (NSData *)itemForRestore;
+ (NSData *)bookmarkWithURL:(NSURL *)URL name:(NSString *)name;
+ (NSData *)bookmarkWithURL:(NSURL *)URL name:(NSString *)name private:(BOOL)private;
+ (NSData *)receiptWithBase64String:(NSString *)base64String;

+ (NSData *)JSONDataFromDictionary:(NSDictionary *)dict;
Expand Down
12 changes: 12 additions & 0 deletions Source/libCloud/Cloud/API Parsing/CLAPISerializer.m
Expand Up @@ -94,6 +94,18 @@ + (NSData *)bookmarkWithURL:(NSURL *)URL name:(NSString *)name
return [self JSONDataFromDictionary:dict];
}

+ (NSData *)bookmarkWithURL:(NSURL *)URL name:(NSString *)name private:(BOOL)private
{
if (URL == nil || name == nil)
return nil;

NSString *privateString = private ? @"true" : @"false";
NSDictionary *item = [NSDictionary dictionaryWithObjectsAndKeys:[URL absoluteString], @"redirect_url",
name, @"name", privateString, @"private", nil];
NSDictionary *dict = [NSDictionary dictionaryWithObject:item forKey:@"item"];
return [self JSONDataFromDictionary:dict];
}

+ (NSData *)receiptWithBase64String:(NSString *)base64String
{
NSDictionary *receipt = [NSDictionary dictionaryWithObject:base64String
Expand Down
9 changes: 8 additions & 1 deletion Source/libCloud/Cloud/CLAPIEngine.h
Expand Up @@ -12,6 +12,11 @@
#import "CLWebItem.h"
#import "CLAccount.h"

// Upload options
extern NSString *const CLAPIEngineUploadOptionPrivacyKey; // Value is CLAPIEnginePrivacyOptionPrivate or CLAPIEnginePrivacyOptionPublic

extern NSString *const CLAPIEnginePrivacyOptionPrivate;
extern NSString *const CLAPIEnginePrivacyOptionPublic;

@interface CLAPIEngine : NSObject {
NSString *_email;
Expand Down Expand Up @@ -61,8 +66,10 @@
- (NSString *)getAccountInformationWithUserInfo:(id)userInfo;
- (NSString *)getItemInformation:(CLWebItem *)item userInfo:(id)userInfo;
- (NSString *)getItemInformationAtURL:(NSURL *)itemURL userInfo:(id)userInfo;
- (NSString *)bookmarkLinkWithURL:(NSURL *)url name:(NSString *)name userInfo:(id)userInfo;
- (NSString *)bookmarkLinkWithURL:(NSURL *)URL name:(NSString *)name userInfo:(id)userInfo;
- (NSString *)uploadFileWithName:(NSString *)fileName fileData:(NSData *)fileData userInfo:(id)userInfo;
- (NSString *)bookmarkLinkWithURL:(NSURL *)URL name:(NSString *)name options:(NSDictionary *)options userInfo:(id)userInfo;
- (NSString *)uploadFileWithName:(NSString *)fileName fileData:(NSData *)fileData options:(NSDictionary *)options userInfo:(id)userInfo;
- (NSString *)deleteItem:(CLWebItem *)webItem userInfo:(id)userInfo;
- (NSString *)deleteItemAtHref:(NSURL *)href userInfo:(id)userInfo;
- (NSString *)restoreItem:(CLWebItem *)webItem userInfo:(id)userInfo;
Expand Down
57 changes: 52 additions & 5 deletions Source/libCloud/Cloud/CLAPIEngine.m
Expand Up @@ -16,6 +16,11 @@

static NSString *_CLAPIEngineBaseURL = @"http://my.cl.ly";

NSString *const CLAPIEngineUploadOptionPrivacyKey = @"CLAPIEngineUploadOptionPrivacy"; // Value is CLAPIEnginePrivacyOptionPrivate or CLAPIEnginePrivacyOptionPublic

NSString *const CLAPIEnginePrivacyOptionPrivate = @"private";
NSString *const CLAPIEnginePrivacyOptionPublic = @"public";


@interface CLAPIEngine ()

Expand Down Expand Up @@ -195,19 +200,38 @@ - (NSString *)getAccountInformationWithUserInfo:(id)userInfo

- (NSString *)bookmarkLinkWithURL:(NSURL *)URL name:(NSString *)name userInfo:(id)userInfo
{
if (![self isReady] || [[URL absoluteString] length] == 0)
return [self bookmarkLinkWithURL:URL name:name options:nil userInfo:userInfo];
}

- (NSString *)bookmarkLinkWithURL:(NSURL *)URL name:(NSString *)name options:(NSDictionary *)options userInfo:(id)userInfo
{
if (![self isReady] || [[URL absoluteString] length] == 0)
return nil;

if ([name length] == 0)
name = [URL absoluteString];

CLAPITransaction *transaction = [CLAPITransaction transaction];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[self _URLWithPath:@"/items"]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

NSData *bodyData = [CLAPISerializer bookmarkWithURL:URL name:name];
NSData *bodyData = nil;

if ([options.allKeys containsObject:CLAPIEngineUploadOptionPrivacyKey]) {
NSString *privacySetting = [options objectForKey:CLAPIEngineUploadOptionPrivacyKey];
if ([privacySetting isEqualToString:CLAPIEnginePrivacyOptionPublic]) {
bodyData = [CLAPISerializer bookmarkWithURL:URL name:name private:NO];
} else if ([privacySetting isEqualToString:CLAPIEnginePrivacyOptionPrivate]) {
bodyData = [CLAPISerializer bookmarkWithURL:URL name:name private:YES];
} else {
bodyData = [CLAPISerializer bookmarkWithURL:URL name:name];
}
} else {
bodyData = [CLAPISerializer bookmarkWithURL:URL name:name];
}
if (bodyData == nil)
return nil;

Expand Down Expand Up @@ -350,11 +374,34 @@ - (NSString *)getItemListStartingAtPage:(NSInteger)pageNumStartingAtOne ofType:(

- (NSString *)uploadFileWithName:(NSString *)fileName fileData:(NSData *)fileData userInfo:(id)userInfo
{
if (![self isReady])
return [self uploadFileWithName:fileName fileData:fileData options:nil userInfo:userInfo];
}

- (NSString *)uploadFileWithName:(NSString *)fileName fileData:(NSData *)fileData options:(NSDictionary *)options userInfo:(id)userInfo
{
if (![self isReady])
return nil;


NSURL *apiURL = [self _URLWithPath:@"/items/new"];
if ([options.allKeys containsObject:CLAPIEngineUploadOptionPrivacyKey]) {
NSString *apiURLString = [apiURL absoluteString];
NSString *privacyOption = [options objectForKey:CLAPIEngineUploadOptionPrivacyKey];
if ([privacyOption isEqualToString:CLAPIEnginePrivacyOptionPublic])
apiURLString = [apiURLString stringByAppendingString:@"?item[private]=false"];
else if ([privacyOption isEqualToString:CLAPIEnginePrivacyOptionPrivate])
apiURLString = [apiURLString stringByAppendingString:@"?item[private]=true"];

apiURL = [NSURL URLWithString:apiURLString];
}

// Make sure that the API URL is still valid after the editing
if (apiURL == nil)
return nil;


CLAPITransaction *transaction = [CLAPITransaction transaction];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[self _URLWithPath:@"/items/new"]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:apiURL];
[request setHTTPMethod:@"GET"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];

Expand All @@ -363,7 +410,7 @@ - (NSString *)uploadFileWithName:(NSString *)fileName fileData:(NSData *)fileDat
transaction.requestType = CLAPIRequestTypeGetS3UploadCredentials;
transaction.userInfo = userInfo;
transaction.internalContext = [NSDictionary dictionaryWithObjectsAndKeys:fileName, @"name",
fileData, @"data", nil];
fileData, @"data", nil];

return [self _createAndStartConnectionForTransaction:transaction];
}
Expand Down

0 comments on commit 975a1f9

Please sign in to comment.