Elaborate request factory.

pull/1/head
Matthew Chen 7 years ago
parent 0ca497846b
commit c17a819366

@ -165,10 +165,9 @@ class MessageFetcherJob: NSObject {
private func fetchUndeliveredMessages() -> Promise<(envelopes: [OWSSignalServiceProtosEnvelope], more: Bool)> {
return Promise { fulfill, reject in
let messagesRequest = OWSGetMessagesRequest()
let request = OWSRequestFactory.getMessagesRequest()
self.networkManager.makeRequest(
messagesRequest,
request,
success: { (_: URLSessionDataTask?, responseObject: Any?) -> Void in
guard let (envelopes, more) = self.parseMessagesResponse(responseObject: responseObject) else {
Logger.error("\(self.logTag) response object had unexpected content")

@ -116,7 +116,7 @@ class AccountManager: NSObject {
func getTurnServerInfo() -> Promise<TurnServerInfo> {
return Promise { fulfill, reject in
self.networkManager.makeRequest(TurnServerInfoRequest(),
self.networkManager.makeRequest(OWSRequestFactory.turnServerInfoRequest(),
success: { (_: URLSessionDataTask, responseObject: Any?) in
guard responseObject != nil else {
return reject(OWSErrorMakeUnableToProcessServerResponseError())

@ -89,8 +89,6 @@
#import <SignalServiceKit/OWSEndSessionMessage.h>
#import <SignalServiceKit/OWSError.h>
#import <SignalServiceKit/OWSFileSystem.h>
#import <SignalServiceKit/OWSGetMessagesRequest.h>
#import <SignalServiceKit/OWSGetProfileRequest.h>
#import <SignalServiceKit/OWSIdentityManager.h>
#import <SignalServiceKit/OWSMessageManager.h>
#import <SignalServiceKit/OWSMessageReceiver.h>
@ -101,7 +99,6 @@
#import <SignalServiceKit/OWSRequestFactory.h>
#import <SignalServiceKit/OWSSignalService.h>
#import <SignalServiceKit/OWSSyncContactsMessage.h>
#import <SignalServiceKit/OWSTurnServerInfoRequest.h>
#import <SignalServiceKit/PhoneNumber.h>
#import <SignalServiceKit/SignalAccount.h>
#import <SignalServiceKit/SignalRecipient.h>

@ -26,7 +26,7 @@ public class ProfileFetcherJob: NSObject {
@objc
public class func run(recipientId: String, networkManager: TSNetworkManager, ignoreThrottling: Bool) {
ProfileFetcherJob(networkManager: networkManager, ignoreThrottling:ignoreThrottling).run(recipientIds: [recipientId])
ProfileFetcherJob(networkManager: networkManager, ignoreThrottling: ignoreThrottling).run(recipientIds: [recipientId])
}
public init(networkManager: TSNetworkManager, ignoreThrottling: Bool = false) {
@ -95,7 +95,7 @@ public class ProfileFetcherJob: NSObject {
Logger.error("\(self.TAG) getProfile: \(recipientId)")
let request = OWSGetProfileRequest(recipientId: recipientId)
let request = OWSRequestFactory.getProfileRequest(withRecipientId: recipientId)
let (promise, fulfill, reject) = Promise<SignalServiceProfile>.pending()

@ -1,5 +1,5 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSAttachmentsProcessor.h"
@ -9,9 +9,9 @@
#import "NSNotificationCenter+OWS.h"
#import "OWSBackgroundTask.h"
#import "OWSError.h"
#import "OWSRequestFactory.h"
#import "OWSSignalServiceProtos.pb.h"
#import "TSAttachmentPointer.h"
#import "TSAttachmentRequest.h"
#import "TSAttachmentStream.h"
#import "TSGroupModel.h"
#import "TSGroupThread.h"
@ -186,9 +186,10 @@ static const CGFloat kAttachmentDownloadProgressTheta = 0.001f;
if (attachment.serverId < 100) {
DDLogError(@"%@ Suspicious attachment id: %llu", self.logTag, (unsigned long long)attachment.serverId);
}
TSAttachmentRequest *attachmentRequest = [[TSAttachmentRequest alloc] initWithId:attachment.serverId relay:attachment.relay];
TSRequest *request =
[OWSRequestFactory attachmentRequestWithAttachmentId:attachment.serverId relay:attachment.relay];
[self.networkManager makeRequest:attachmentRequest
[self.networkManager makeRequest:request
success:^(NSURLSessionDataTask *task, id responseObject) {
if (![responseObject isKindOfClass:[NSDictionary class]]) {
DDLogError(@"%@ Failed retrieval of attachment. Response had unexpected format.", self.logTag);

@ -5,7 +5,6 @@
#import "OWSDevicesService.h"
#import "OWSDevice.h"
#import "OWSError.h"
#import "OWSGetDevicesRequest.h"
#import "OWSRequestFactory.h"
#import "TSNetworkManager.h"
#import <Mantle/MTLJSONAdapter.h>
@ -17,7 +16,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)getDevicesWithSuccess:(void (^)(NSArray<OWSDevice *> *))successCallback
failure:(void (^)(NSError *))failureCallback
{
OWSGetDevicesRequest *request = [OWSGetDevicesRequest new];
TSRequest *request = [OWSRequestFactory getDevicesRequest];
[[TSNetworkManager sharedManager] makeRequest:request
success:^(NSURLSessionDataTask *task, id responseObject) {
DDLogVerbose(@"Get devices request succeeded");

@ -1,5 +1,5 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSUploadingService.h"
@ -8,6 +8,7 @@
#import "NSNotificationCenter+OWS.h"
#import "OWSError.h"
#import "OWSMessageSender.h"
#import "OWSRequestFactory.h"
#import "TSAttachmentStream.h"
#import "TSNetworkManager.h"
#import "TSOutgoingMessage.h"
@ -67,8 +68,8 @@ static const CGFloat kAttachmentUploadProgressTheta = 0.001f;
[self fireProgressNotification:kAttachmentUploadProgressTheta attachmentId:attachmentStream.uniqueId];
TSRequest *allocateAttachment = [[TSAllocAttachmentRequest alloc] init];
[self.networkManager makeRequest:allocateAttachment
TSRequest *request = [OWSRequestFactory allocAttachmentRequest];
[self.networkManager makeRequest:request
success:^(NSURLSessionDataTask *task, id responseObject) {
dispatch_async([OWSDispatch attachmentsQueue], ^{ // TODO can we move this queue specification up a level?
if (![responseObject isKindOfClass:[NSDictionary class]]) {

@ -1,11 +0,0 @@
// Copyright © 2016 Open Whisper Systems. All rights reserved.
#import "TSRequest.h"
NS_ASSUME_NONNULL_BEGIN
@interface OWSGetDevicesRequest : TSRequest
@end
NS_ASSUME_NONNULL_END

@ -1,25 +0,0 @@
// Copyright © 2016 Open Whisper Systems. All rights reserved.
#import "OWSGetDevicesRequest.h"
#import "TSConstants.h"
NS_ASSUME_NONNULL_BEGIN
@implementation OWSGetDevicesRequest
- (instancetype)init
{
NSString *getDevicesPath = [NSString stringWithFormat:textSecureDevicesAPIFormat, @""];
self = [super initWithURL:[NSURL URLWithString:getDevicesPath]];
if (!self) {
return self;
}
[self setHTTPMethod:@"GET"];
return self;
}
@end
NS_ASSUME_NONNULL_END

@ -1,12 +0,0 @@
// Created by Michael Kirk on 12/19/16.
// Copyright © 2016 Open Whisper Systems. All rights reserved.
#import "TSRequest.h"
NS_ASSUME_NONNULL_BEGIN
@interface OWSGetMessagesRequest : TSRequest
@end
NS_ASSUME_NONNULL_END

@ -1,18 +0,0 @@
// Created by Michael Kirk on 12/19/16.
// Copyright © 2016 Open Whisper Systems. All rights reserved.
#import "OWSGetMessagesRequest.h"
NS_ASSUME_NONNULL_BEGIN
@implementation OWSGetMessagesRequest
- (instancetype)init
{
NSURL *url = [NSURL URLWithString:@"v1/messages"];
return [super initWithURL:url];
}
@end
NS_ASSUME_NONNULL_END

@ -1,15 +0,0 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "TSRequest.h"
NS_ASSUME_NONNULL_BEGIN
@interface OWSGetProfileRequest : TSRequest
- (instancetype)initWithRecipientId:(NSString *)recipientId;
@end
NS_ASSUME_NONNULL_END

@ -1,30 +0,0 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "OWSGetProfileRequest.h"
#import "TSConstants.h"
NS_ASSUME_NONNULL_BEGIN
@implementation OWSGetProfileRequest
- (instancetype)initWithRecipientId:(NSString *)recipientId
{
OWSAssert(recipientId.length > 0);
NSString *path = [NSString stringWithFormat:textSecureProfileAPIFormat, recipientId];
self = [super initWithURL:[NSURL URLWithString:path]];
if (!self) {
return self;
}
self.HTTPMethod = @"GET";
self.parameters = nil;
return self;
}
@end
NS_ASSUME_NONNULL_END

@ -23,6 +23,18 @@ NS_ASSUME_NONNULL_BEGIN
+ (TSRequest *)deviceProvisioningRequestWithMessageBody:(NSData *)messageBody ephemeralDeviceId:(NSString *)deviceId;
+ (TSRequest *)getDevicesRequest;
+ (TSRequest *)getMessagesRequest;
+ (TSRequest *)getProfileRequestWithRecipientId:(NSString *)recipientId;
+ (TSRequest *)turnServerInfoRequest;
+ (TSRequest *)allocAttachmentRequest;
+ (TSRequest *)attachmentRequestWithAttachmentId:(UInt64)attachmentId relay:(nullable NSString *)relay;
@end
NS_ASSUME_NONNULL_END

@ -67,6 +67,51 @@ NS_ASSUME_NONNULL_BEGIN
}];
}
+ (TSRequest *)getDevicesRequest
{
NSString *path = [NSString stringWithFormat:textSecureDevicesAPIFormat, @""];
return [TSRequest requestWithUrl:[NSURL URLWithString:path] method:@"GET" parameters:@{}];
}
+ (TSRequest *)getMessagesRequest
{
return [TSRequest requestWithUrl:[NSURL URLWithString:@"v1/messages"] method:@"GET" parameters:@{}];
}
+ (TSRequest *)getProfileRequestWithRecipientId:(NSString *)recipientId
{
OWSAssert(recipientId.length > 0);
NSString *path = [NSString stringWithFormat:textSecureProfileAPIFormat, recipientId];
return [TSRequest requestWithUrl:[NSURL URLWithString:path] method:@"GET" parameters:@{}];
}
+ (TSRequest *)turnServerInfoRequest
{
return [TSRequest requestWithUrl:[NSURL URLWithString:@"v1/accounts/turn"] method:@"GET" parameters:@{}];
}
+ (TSRequest *)allocAttachmentRequest
{
NSString *path = [NSString stringWithFormat:@"%@", textSecureAttachmentsAPI];
return [TSRequest requestWithUrl:[NSURL URLWithString:path] method:@"GET" parameters:@{}];
}
+ (TSRequest *)attachmentRequestWithAttachmentId:(UInt64)attachmentId relay:(nullable NSString *)relay
{
OWSAssert(attachmentId > 0);
OWSAssert(relay.length > 0);
NSString *path = [NSString stringWithFormat:@"%@/%llu", textSecureAttachmentsAPI, attachmentId];
// TODO: Should this be in the parameters?
if (relay.length > 0) {
path = [path stringByAppendingFormat:@"?relay=%@", relay];
}
return [TSRequest requestWithUrl:[NSURL URLWithString:path] method:@"GET" parameters:@{}];
}
@end
NS_ASSUME_NONNULL_END

@ -1,17 +0,0 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "TSRequest.h"
NS_ASSUME_NONNULL_BEGIN
/**
* Fetch a list of viable ICE candidates (including TURN and STUN) used for the WebRTC call signaling process.
*/
NS_SWIFT_NAME(TurnServerInfoRequest)
@interface OWSTurnServerInfoRequest : TSRequest
@end
NS_ASSUME_NONNULL_END

@ -1,26 +0,0 @@
// Created by Michael Kirk on 11/12/16.
// Copyright © 2016 Open Whisper Systems. All rights reserved.
#import "OWSTurnServerInfoRequest.h"
NS_ASSUME_NONNULL_BEGIN
NSString *const OWSTurnServerInfoRequestPath = @"v1/accounts/turn";
@implementation OWSTurnServerInfoRequest
- (instancetype)init
{
self = [super initWithURL:[NSURL URLWithString:OWSTurnServerInfoRequestPath]];
if (!self) {
return self;
}
[self setHTTPMethod:@"GET"];
return self;
}
@end
NS_ASSUME_NONNULL_END

@ -1,13 +0,0 @@
//
// TSAllocAttachmentRequest.h
// Signal
//
// Created by Frederic Jacobs on 21/12/14.
// Copyright (c) 2014 Open Whisper Systems. All rights reserved.
//
#import "TSRequest.h"
@interface TSAllocAttachmentRequest : TSRequest
@end

@ -1,26 +0,0 @@
//
// TSAllocAttachmentRequest.m
// Signal
//
// Created by Frederic Jacobs on 21/12/14.
// Copyright (c) 2014 Open Whisper Systems. All rights reserved.
//
#import "TSAllocAttachmentRequest.h"
#import "TSConstants.h"
@implementation TSAllocAttachmentRequest
- (instancetype)init {
NSString *path = [NSString stringWithFormat:@"%@", textSecureAttachmentsAPI];
self = [super initWithURL:[NSURL URLWithString:path]];
if (self) {
[self setHTTPMethod:@"GET"];
}
return self;
}
@end

@ -1,15 +0,0 @@
//
// TSRequestAttachment.h
// TextSecureiOS
//
// Created by Christine Corbett Moran on 12/1/13.
// Copyright (c) 2013 Open Whisper Systems. All rights reserved.
//
#import "TSRequest.h"
@interface TSAttachmentRequest : TSRequest
- (TSRequest *)initWithId:(UInt64)attachmentId relay:(NSString *)relay;
@end

@ -1,28 +0,0 @@
//
// TSRequestAttachment.m
// TextSecureiOS
//
// Created by Christine Corbett Moran on 12/1/13.
// Copyright (c) 2013 Open Whisper Systems. All rights reserved.
//
#import "TSAttachmentRequest.h"
#import "TSConstants.h"
@implementation TSAttachmentRequest
- (TSRequest *)initWithId:(UInt64)attachmentId relay:(NSString *)relay
{
NSString *path = [NSString stringWithFormat:@"%@/%llu", textSecureAttachmentsAPI, attachmentId];
if (relay && ![relay isEqualToString:@""]) {
path = [path stringByAppendingFormat:@"?relay=%@", relay];
}
self = [super initWithURL:[NSURL URLWithString:path]];
self.HTTPMethod = @"GET";
return self;
}
@end

@ -6,8 +6,6 @@
* TSNetworkManager imports all TSRequests to prevent massive imports
in classes that call TSNetworkManager
*/
#import "TSAllocAttachmentRequest.h"
#import "TSAttachmentRequest.h"
#import "TSAvailablePreKeysCountRequest.h"
#import "TSContactsIntersectionRequest.h"
#import "TSCurrentSignedPreKeyRequest.h"

@ -71,15 +71,6 @@ typedef void (^failureBlock)(NSURLSessionDataTask *task, NSError *error);
OWSAssert(failureBlock);
DDLogInfo(@"%@ Making request: %@", self.logTag, request);
if (!CurrentAppContext().isMainApp) {
if (![request isKindOfClass:[TSRecipientPrekeyRequest class]]
&& ![request isKindOfClass:[TSSubmitMessageRequest class]]
&& ![request isKindOfClass:[TSContactsIntersectionRequest class]]
&& ![request isKindOfClass:[TSAllocAttachmentRequest class]]) {
// The SAE should only make requests directly related to message sending.
OWSFail(@"%@ Making unexpected request: %@", self.logTag, request);
}
}
// TODO: Remove this logging when the call connection issues have been resolved.
TSNetworkManagerSuccess success = ^(NSURLSessionDataTask *task, id responseObject) {

Loading…
Cancel
Save