diff --git a/SignalServiceKit/src/Network/API/Requests/TSRequest.h b/SignalServiceKit/src/Network/API/Requests/TSRequest.h index d465d4a60..eaae5f82f 100644 --- a/SignalServiceKit/src/Network/API/Requests/TSRequest.h +++ b/SignalServiceKit/src/Network/API/Requests/TSRequest.h @@ -6,10 +6,22 @@ @property (nonatomic) BOOL shouldHaveAuthorizationHeaders; -@property (nonatomic) NSDictionary *parameters; +@property (nonatomic, readonly) NSDictionary *parameters; + +- (instancetype)init NS_UNAVAILABLE; + +- (instancetype)initWithURL:(NSURL *)URL; + +- (instancetype)initWithURL:(NSURL *)URL + cachePolicy:(NSURLRequestCachePolicy)cachePolicy + timeoutInterval:(NSTimeInterval)timeoutInterval NS_UNAVAILABLE; + +- (instancetype)initWithURL:(NSURL *)URL + method:(NSString *)method + parameters:(nullable NSDictionary *)parameters; + (instancetype)requestWithUrl:(NSURL *)url method:(NSString *)method - parameters:(NSDictionary *)parameters; + parameters:(nullable NSDictionary *)parameters; @end diff --git a/SignalServiceKit/src/Network/API/Requests/TSRequest.m b/SignalServiceKit/src/Network/API/Requests/TSRequest.m index e3d9f0be2..27937ba7d 100644 --- a/SignalServiceKit/src/Network/API/Requests/TSRequest.m +++ b/SignalServiceKit/src/Network/API/Requests/TSRequest.m @@ -17,13 +17,14 @@ return nil; } - self.parameters = @{}; + _parameters = @{}; self.shouldHaveAuthorizationHeaders = YES; return self; } -- (id)init { +- (instancetype)init +{ OWSRaiseException(NSInternalInconsistencyException, @"You must use the initWithURL: method"); return nil; } @@ -31,21 +32,41 @@ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wobjc-designated-initializers" -- (id)initWithURL:(NSURL *)URL - cachePolicy:(NSURLRequestCachePolicy)cachePolicy - timeoutInterval:(NSTimeInterval)timeoutInterval { +- (instancetype)initWithURL:(NSURL *)URL + cachePolicy:(NSURLRequestCachePolicy)cachePolicy + timeoutInterval:(NSTimeInterval)timeoutInterval +{ OWSRaiseException(NSInternalInconsistencyException, @"You must use the initWithURL method"); return nil; } +- (instancetype)initWithURL:(NSURL *)URL + method:(NSString *)method + parameters:(nullable NSDictionary *)parameters +{ + OWSAssert(URL); + OWSAssert(method.length > 0); + OWSAssert(parameters); + + self = [super initWithURL:URL + cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData + timeoutInterval:textSecureHTTPTimeOut]; + if (!self) { + return nil; + } + + _parameters = parameters ?: @{}; + [self setHTTPMethod:method]; + self.shouldHaveAuthorizationHeaders = YES; + + return self; +} + + (instancetype)requestWithUrl:(NSURL *)url method:(NSString *)method - parameters:(NSDictionary *)parameters + parameters:(nullable NSDictionary *)parameters { - TSRequest *request = [[TSRequest alloc] initWithURL:url]; - [request setHTTPMethod:method]; - request.parameters = parameters; - return request; + return [[TSRequest alloc] initWithURL:url method:method parameters:parameters]; } @end diff --git a/SignalServiceKit/src/Network/API/Requests/TSVerifyCodeRequest.m b/SignalServiceKit/src/Network/API/Requests/TSVerifyCodeRequest.m index 5875faa19..8b8add53a 100644 --- a/SignalServiceKit/src/Network/API/Requests/TSVerifyCodeRequest.m +++ b/SignalServiceKit/src/Network/API/Requests/TSVerifyCodeRequest.m @@ -22,12 +22,8 @@ NS_ASSUME_NONNULL_BEGIN OWSAssert(signalingKey.length > 0); OWSAssert(authKey.length > 0); - self = [super - initWithURL:[NSURL URLWithString:[NSString - stringWithFormat:@"%@/code/%@", textSecureAccountsAPI, verificationCode]]]; - - _numberToValidate = phoneNumber; - + NSURL *url = + [NSURL URLWithString:[NSString stringWithFormat:@"%@/code/%@", textSecureAccountsAPI, verificationCode]]; NSMutableDictionary *parameters = [[TSAttributes attributesWithSignalingKey:signalingKey serverAuthToken:authKey manualMessageFetching:NO] mutableCopy]; @@ -35,9 +31,9 @@ NS_ASSUME_NONNULL_BEGIN OWSAssert(pin.length > 0); parameters[@"pin"] = pin; } - self.parameters = parameters; + self = [super initWithURL:url method:@"PUT" parameters:parameters]; - [self setHTTPMethod:@"PUT"]; + _numberToValidate = phoneNumber; return self; }