-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathDBSession.m
More file actions
117 lines (89 loc) · 3.47 KB
/
DBSession.m
File metadata and controls
117 lines (89 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
//
// DBSession.m
// DropboxSDK
//
// Created by Brian Smith on 4/8/10.
// Copyright 2010 Dropbox, Inc. All rights reserved.
//
#import "DBSession.h"
#import "MPOAuthCredentialConcreteStore.h"
#import "MPOAuthSignatureParameter.h"
NSString* kDBDropboxAPIHost = @"api.dropbox.com";
NSString* kDBDropboxAPIContentHost = @"api-content.dropbox.com";
NSString* kDBDropboxAPIVersion = @"0";
static DBSession* _sharedSession = nil;
static NSString* kDBDropboxSavedCredentialsKey = @"kDBDropboxSavedCredentialsKey";
@interface DBSession ()
- (NSDictionary*)savedCredentials;
- (void)saveCredentials:(NSDictionary*)credentials;
- (void)clearSavedCredentials;
@end
@implementation DBSession
+ (DBSession*)sharedSession {
return _sharedSession;
}
+ (void)setSharedSession:(DBSession*)session {
if (session == _sharedSession) return;
[_sharedSession release];
_sharedSession = [session retain];
}
- (id)initWithConsumerKey:(NSString*)key consumerSecret:(NSString*)secret {
if ((self = [super init])) {
NSMutableDictionary* credentials =
[NSMutableDictionary dictionaryWithObjectsAndKeys:
key, kMPOAuthCredentialConsumerKey,
secret, kMPOAuthCredentialConsumerSecret,
kMPOAuthSignatureMethodHMACSHA1, kMPOAuthSignatureMethod, nil];
NSDictionary* savedCredentials = [self savedCredentials];
if (savedCredentials != nil) {
if ([key isEqualToString:[savedCredentials objectForKey:kMPOAuthCredentialConsumerKey]]) {
[credentials setObject:[savedCredentials objectForKey:kMPOAuthCredentialAccessToken]
forKey:kMPOAuthCredentialAccessToken];
[credentials setObject:[savedCredentials objectForKey:kMPOAuthCredentialAccessTokenSecret]
forKey:kMPOAuthCredentialAccessTokenSecret];
} else {
[self clearSavedCredentials];
}
}
credentialStore = [[MPOAuthCredentialConcreteStore alloc] initWithCredentials:credentials];
}
return self;
}
- (void)dealloc {
[credentialStore release];
[super dealloc];
}
@synthesize credentialStore;
@synthesize delegate;
- (void)updateAccessToken:(NSString*)token accessTokenSecret:(NSString*)secret {
credentialStore.accessToken = token;
credentialStore.accessTokenSecret = secret;
NSDictionary* credentials = [NSDictionary dictionaryWithObjectsAndKeys:
credentialStore.consumerKey, kMPOAuthCredentialConsumerKey,
credentialStore.accessToken, kMPOAuthCredentialAccessToken,
credentialStore.accessTokenSecret, kMPOAuthCredentialAccessTokenSecret,
nil];
[self saveCredentials:credentials];
}
- (BOOL) isLinked {
return credentialStore.accessToken != nil;
}
- (void)unlink {
credentialStore.accessToken = nil;
credentialStore.accessTokenSecret = nil;
[self clearSavedCredentials];
}
#pragma mark private methods
- (NSDictionary*)savedCredentials {
return [[NSUserDefaults standardUserDefaults] objectForKey:kDBDropboxSavedCredentialsKey];
}
- (void)saveCredentials:(NSDictionary*)credentials {
if (credentials == nil) return;
[[NSUserDefaults standardUserDefaults]
setObject:credentials forKey:kDBDropboxSavedCredentialsKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (void)clearSavedCredentials {
[[NSUserDefaults standardUserDefaults] removeObjectForKey:kDBDropboxSavedCredentialsKey];
}
@end