diff --git a/SignalMessaging/Subscriptions/SubscriptionManagerImpl.swift b/SignalMessaging/Subscriptions/SubscriptionManagerImpl.swift index f2358740d1..b6003eae51 100644 --- a/SignalMessaging/Subscriptions/SubscriptionManagerImpl.swift +++ b/SignalMessaging/Subscriptions/SubscriptionManagerImpl.swift @@ -455,8 +455,8 @@ public class SubscriptionManagerImpl: NSObject { using processor: PaymentProcessor, paymentID: String ) -> Promise { - let request = OWSRequestFactory.subscriptionSetDefaultPaymentMethodRequest( - subscriberID.asBase64Url, + let request = OWSRequestFactory.subscriptionSetDefaultPaymentMethod( + subscriberID: subscriberID, processor: processor.rawValue, paymentID: paymentID ) diff --git a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.h b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.h index 9d456163b8..6b0235e34d 100644 --- a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.h +++ b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.h @@ -174,9 +174,6 @@ typedef NS_ENUM(uint8_t, OWSIdentity); returnUrl:(NSURL *)returnUrl cancelUrl:(NSURL *)cancelUrl NS_SWIFT_NAME(subscriptionCreatePaypalPaymentMethodRequest(subscriberId:returnUrl:cancelUrl:)); -+ (TSRequest *)subscriptionSetDefaultPaymentMethodRequest:(NSString *)base64SubscriberID - processor:(NSString *)processor - paymentID:(NSString *)paymentID; + (TSRequest *)subscriptionSetSubscriptionLevelRequest:(NSString *)base64SubscriberID level:(NSString *)level currency:(NSString *)currency idempotencyKey:(NSString *)idempotencyKey; + (TSRequest *)subscriptionReceiptCredentialsRequest:(NSString *)base64SubscriberID request:(NSString *)base64ReceiptCredentialRequest; diff --git a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m index 62a1c1869c..621d427347 100644 --- a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m +++ b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m @@ -643,23 +643,6 @@ NSString *const OWSRequestKey_AuthKey = @"AuthKey"; return request; } -+ (TSRequest *)subscriptionSetDefaultPaymentMethodRequest:(NSString *)base64SubscriberID - processor:(NSString *)processor - paymentID:(NSString *)paymentID -{ - TSRequest *request = [TSRequest - requestWithUrl:[NSURL - URLWithString:[NSString stringWithFormat:@"/v1/subscription/%@/default_payment_method/%@/%@", - base64SubscriberID, - processor, - paymentID]] - method:@"POST" - parameters:@{}]; - request.shouldHaveAuthorizationHeaders = NO; - request.shouldRedactUrlInLogs = YES; - return request; -} - + (TSRequest *)subscriptionSetSubscriptionLevelRequest:(NSString *)base64SubscriberID level:(NSString *)level currency:(NSString *)currency idempotencyKey:(NSString *)idempotencyKey { TSRequest *request = [TSRequest requestWithUrl:[NSURL URLWithString:[NSString stringWithFormat:@"/v1/subscription/%@/level/%@/%@/%@", base64SubscriberID, level, currency, idempotencyKey]] method:@"PUT" diff --git a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.swift b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.swift index 206a4a6e6c..6b414e0a49 100644 --- a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.swift +++ b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.swift @@ -176,6 +176,28 @@ public extension OWSRequestFactory { result.shouldRedactUrlInLogs = true return result } + + static func subscriptionSetDefaultPaymentMethod( + subscriberID: Data, + processor: String, + paymentID: String + ) -> TSRequest { + let result = TSRequest( + url: .init(pathComponents: [ + "v1", + "subscription", + subscriberID.asBase64Url, + "default_payment_method", + processor, + paymentID + ])!, + method: "POST", + parameters: nil + ) + result.shouldHaveAuthorizationHeaders = false + result.shouldRedactUrlInLogs = true + return result + } } // MARK: - Messages diff --git a/SignalServiceKit/tests/Network/OWSRequestFactoryTest.swift b/SignalServiceKit/tests/Network/OWSRequestFactoryTest.swift index 74096b6fef..554ecc716f 100644 --- a/SignalServiceKit/tests/Network/OWSRequestFactoryTest.swift +++ b/SignalServiceKit/tests/Network/OWSRequestFactoryTest.swift @@ -182,6 +182,19 @@ class OWSRequestFactoryTest: XCTestCase { XCTAssertTrue(request.shouldRedactUrlInLogs) } + func testSubscriptionSetDefaultPaymentMethod() { + let request = OWSRequestFactory.subscriptionSetDefaultPaymentMethod( + subscriberID: Data([255, 128]), + processor: "STRIPE", + paymentID: "xyz" + ) + + XCTAssertEqual(request.url?.path, "v1/subscription/_4A/default_payment_method/STRIPE/xyz") + XCTAssertEqual(request.httpMethod, "POST") + XCTAssertFalse(request.shouldHaveAuthorizationHeaders) + XCTAssertTrue(request.shouldRedactUrlInLogs) + } + // MARK: - Spam func testReportSpamFromUuid() {