6624801350dcc92935d6cc95e95179575676d4e6
[atutor.git] / mods / atsocial_iphone_app / OAuth / OAToken_KeychainExtensions.m
1 //
2 //  OAToken_KeychainExtensions.m
3 //  TouchTheFireEagle
4 //
5 //  Created by Jonathan Wight on 04/04/08.
6 //  Modified by Cassie Doll on 02/02/09
7 //
8 //  Permission is hereby granted, free of charge, to any person obtaining a copy
9 //  of this software and associated documentation files (the "Software"), to deal
10 //  in the Software without restriction, including without limitation the rights
11 //  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 //  copies of the Software, and to permit persons to whom the Software is
13 //  furnished to do so, subject to the following conditions:
14 //
15 //  The above copyright notice and this permission notice shall be included in
16 //  all copies or substantial portions of the Software.
17 //
18 //  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 //  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 //  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 //  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 //  THE SOFTWARE.
25
26 #import "OAToken_KeychainExtensions.h"
27 #import "SFHFKeychainUtils.h"
28
29 @implementation OAToken (OAToken_KeychainExtensions)
30
31
32 - (NSError *)storeInDefaultKeychainWithAppName:(NSString *)name tokenType:(NSString *)type {
33   NSString *password = [NSString stringWithFormat:@"%@:::%@", self.key, self.secret];
34   
35   NSError *error = nil;
36   [SFHFKeychainUtils storeUsername:type andPassword:password 
37                     forServiceName:name updateExisting:TRUE error:&error];
38   return error;
39 }
40
41 - (id)initWithKeychainUsingAppName:(NSString *)name tokenType:(NSString *)type {
42   self = [super init];
43   if (self) {
44     NSString *password = [SFHFKeychainUtils getPasswordForUsername:type andServiceName:name error:nil];
45     
46     if (!password || [password length] == 0) {
47       [self release];
48       return nil;  
49     }
50     
51     NSArray *components =[password componentsSeparatedByString:@":::"];
52     if (2 <= [components count]) {
53       self.key = [components objectAtIndex:0];
54       self.secret = [components objectAtIndex:1];
55     }
56     // TODO: this will fail if the key or the secret contain ':::'
57   }
58   return self;
59 }
60
61
62
63 @end