-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathNSURL+URLQueryBuilder.m
More file actions
62 lines (47 loc) · 3.01 KB
/
NSURL+URLQueryBuilder.m
File metadata and controls
62 lines (47 loc) · 3.01 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
//
// NSURL+URLQueryBuilder.m
// NSURLComponents
//
// Created by Yaroslav Arsenkin on 26.10.15.
// Copyright © 2015 Iaroslav Arsenkin. All rights reserved.
// Website: http://arsenkin.com
//
#import "NSURL+URLQueryBuilder.h"
@implementation NSURL (URLQueryBuilder)
+ (NSURL *)ars_queryWithString:(NSString *)URL queryElements:(NSDictionary<NSString *,NSString *> *)queryElements {
return [self ars_queryWithString:URL queryElements:queryElements resolveAgainstBaseURL:NO URLComponent:nil];
}
+ (NSURL *)ars_queryWithURL:(NSURL *)URL queryElements:(NSDictionary<NSString *,NSString *> *)queryElements {
return [self ars_queryWithURL:URL queryElements:queryElements resolveAgainstBaseURL:NO URLComponent:nil];
}
+ (NSURL *)ars_queryWithString:(NSString *)URL queryElements:(NSDictionary<NSString *, NSString *> *)queryElements resolveAgainstBaseURL:(BOOL)resolve {
return [self ars_queryWithURL:[NSURL URLWithString:URL] queryElements:queryElements resolveAgainstBaseURL:resolve URLComponent:nil];
}
+ (NSURL *)ars_queryWithURL:(NSURL *)URL queryElements:(NSDictionary<NSString *, NSString *> *)queryElements resolveAgainstBaseURL:(BOOL)resolve {
return [self ars_queryWithURL:URL queryElements:queryElements resolveAgainstBaseURL:resolve URLComponent:nil];
}
#pragma mark W/ Pointer to URLComponent
+ (NSURL *)ars_queryWithString:(NSString *)URL queryElements:(NSDictionary<NSString *,NSString *> *)queryElements URLComponent:(NSURLComponents * _Nullable * _Nullable)URLComponent {
return [self ars_queryWithString:URL queryElements:queryElements resolveAgainstBaseURL:NO URLComponent:URLComponent];
}
+ (NSURL *)ars_queryWithURL:(NSURL *)URL queryElements:(NSDictionary<NSString *,NSString *> *)queryElements URLComponent:(NSURLComponents * _Nullable * _Nullable)URLComponent {
return [self ars_queryWithURL:URL queryElements:queryElements resolveAgainstBaseURL:NO URLComponent:URLComponent];
}
+ (NSURL *)ars_queryWithString:(NSString *)URL queryElements:(NSDictionary<NSString *, NSString *> *)queryElements resolveAgainstBaseURL:(BOOL)resolve URLComponent:(NSURLComponents * _Nullable * _Nullable)URLComponent {
return [self ars_queryWithURL:[NSURL URLWithString:URL] queryElements:queryElements resolveAgainstBaseURL:resolve URLComponent:URLComponent];
}
#pragma mark Main Method
+ (NSURL *)ars_queryWithURL:(NSURL *)URL queryElements:(NSDictionary<NSString *, NSString *> *)queryElements resolveAgainstBaseURL:(BOOL)resolve URLComponent:(NSURLComponents * _Nullable * _Nullable)URLComponent {
NSMutableArray<NSURLQueryItem *> *mQueryItems = [NSMutableArray array];
for (NSString *key in queryElements) {
NSURLQueryItem *queryItem = [NSURLQueryItem queryItemWithName:key value:queryElements[key]];
[mQueryItems addObject:queryItem];
}
NSURLComponents *components = [NSURLComponents componentsWithURL:URL resolvingAgainstBaseURL:resolve];
components.queryItems = [mQueryItems copy];
if (URLComponent) {
*URLComponent = components;
}
return components.URL;
}
@end