summaryrefslogtreecommitdiff
path: root/StoneIsland/plugins/cordova-plugin-x-socialsharing/src/ios/NSString+URLEncoding.m
blob: b737626ce194b35419b08b22157599ba0d44410d (plain)
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
#import "NSString+URLEncoding.h"

@implementation NSString (URLEncoding)
- (NSString*)URLEncodedString
{
  NSString* result = (NSString *)CFBridgingRelease(
                          CFURLCreateStringByAddingPercentEscapes(
                                kCFAllocatorDefault,
                                (CFStringRef)self,
                                CFSTR("#%"), // don't escape these
                                NULL, // allow escaping these
                                kCFStringEncodingUTF8
                          )
                     );
  
  // we may have a URL with more than one '#' now - which iOS doesn't allow, so escape all but the first one
  NSArray *parts = [result componentsSeparatedByString:@"#"];
  NSString *finalResult = parts[0];
  for (int i=1; i<parts.count; i++) {
    NSString *part = [parts objectAtIndex:i];
    if (i==1) {
      finalResult = [finalResult stringByAppendingString:@"#"];
    } else {
      finalResult = [finalResult stringByAppendingString:@"%23"];
    }
    finalResult = [finalResult stringByAppendingString:part];
  }
  return finalResult;
}
@end