forked from nxtbgthng/OAuth2Client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNSString+NXOAuth2.m
More file actions
76 lines (61 loc) · 2.91 KB
/
NSString+NXOAuth2.m
File metadata and controls
76 lines (61 loc) · 2.91 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
//
// NSString+NXOAuth2.m
// OAuth2Client
//
// Created by Ullrich Schäfer on 07.10.09.
//
// Copyright 2010 nxtbgthng. All rights reserved.
//
// Licenced under the new BSD-licence.
// See README.md in this repository for
// the full licence.
//
#import "NSString+NXOAuth2.h"
@implementation NSString (NXOAuth2)
+ (NSString *)nxoauth2_stringWithUUID;
{
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
NSString *result = (__bridge_transfer NSString *)CFUUIDCreateString(kCFAllocatorDefault, theUUID);
CFRelease(theUUID);
return result;
}
#pragma mark Query String Helpers
+ (NSString *)nxoauth2_stringWithEncodedQueryParameters:(NSDictionary *)parameters;
{
NSMutableArray *parameterPairs = [NSMutableArray array];
for (NSString *key in [parameters allKeys]) {
NSString *pair = [NSString stringWithFormat:@"%@=%@", [key nxoauth2_URLEncodedString], [[parameters objectForKey:key] nxoauth2_URLEncodedString]];
[parameterPairs addObject:pair];
}
return [parameterPairs componentsJoinedByString:@"&"];
}
- (NSDictionary *)nxoauth2_parametersFromEncodedQueryString;
{
NSArray *encodedParameterPairs = [self componentsSeparatedByString:@"&"];
NSMutableDictionary *requestParameters = [NSMutableDictionary dictionary];
for (NSString *encodedPair in encodedParameterPairs) {
NSArray *encodedPairElements = [encodedPair componentsSeparatedByString:@"="];
if (encodedPairElements.count == 2) {
[requestParameters setValue:[[encodedPairElements objectAtIndex:1] nxoauth2_URLDecodedString]
forKey:[[encodedPairElements objectAtIndex:0] nxoauth2_URLDecodedString]];
}
}
return requestParameters;
}
#pragma mark URLEncoding
- (NSString *)nxoauth2_URLEncodedString;
{
return (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, //Allocator
(__bridge CFStringRef)self, //Original String
NULL, //Characters to leave unescaped
CFSTR("!*'();:@&=+$,/?%#[]"), //Legal Characters to be escaped
kCFStringEncodingUTF8); //Encoding
}
- (NSString *)nxoauth2_URLDecodedString;
{
return (__bridge_transfer NSString *) CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault,
(__bridge CFStringRef)self,
CFSTR(""),
kCFStringEncodingUTF8);
}
@end