Commit 426f4dbe by Brent Gulanowski

Update customer API to remove `customerID` argument when not needed.

The customerID is available from the `BUYClient.customerToken` property, which must be set before using these methods.
parent a5f35086
...@@ -27,9 +27,10 @@ ...@@ -27,9 +27,10 @@
#import <Buy/BUYClient.h> #import <Buy/BUYClient.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class BUYAccountCredentials;
@class BUYCustomer; @class BUYCustomer;
@class BUYCustomerToken;
@class BUYOrder; @class BUYOrder;
@class BUYAccountCredentials;
/** /**
* Return block containing a BUYCustomer object for an existing customer of the shop * Return block containing a BUYCustomer object for an existing customer of the shop
...@@ -46,7 +47,7 @@ typedef void (^BUYDataCustomerBlock)(BUYCustomer * _Nullable customer, NSError * ...@@ -46,7 +47,7 @@ typedef void (^BUYDataCustomerBlock)(BUYCustomer * _Nullable customer, NSError *
* @param token An authentication token to retrieve the customer later. Store this token securely on the device. * @param token An authentication token to retrieve the customer later. Store this token securely on the device.
* @param error An optional NSError * @param error An optional NSError
*/ */
typedef void (^BUYDataCustomerTokenBlock)(BUYCustomer * _Nullable customer, NSString * _Nullable token, NSError * _Nullable error); typedef void (^BUYDataCustomerTokenBlock)(BUYCustomer * _Nullable customer, BUYCustomerToken * _Nullable token, NSError * _Nullable error);
/** /**
* Return block containing a customer auth token * Return block containing a customer auth token
...@@ -86,7 +87,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl ...@@ -86,7 +87,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl
* *
* @return The associated BUYRequestOperation * @return The associated BUYRequestOperation
*/ */
- (NSOperation *)getCustomerWithID:(NSString *)customerID callback:(BUYDataCustomerBlock)block; - (NSOperation *)getCustomerCallback:(BUYDataCustomerBlock)block;
#pragma mark - Customer - #pragma mark - Customer -
...@@ -127,7 +128,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl ...@@ -127,7 +128,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl
* *
* @return The associated BUYRequestOperation * @return The associated BUYRequestOperation
*/ */
- (NSOperation *)updateCustomerWithCredentials:(BUYAccountCredentials *)credentials customerID:(NSString *)customerID callback:(BUYDataCustomerBlock)block; - (NSOperation *)updateCustomerWithCredentials:(BUYAccountCredentials *)credentials callback:(BUYDataCustomerBlock)block;
/** /**
* PUT /api/customers/:customer_id/reset * PUT /api/customers/:customer_id/reset
...@@ -153,7 +154,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl ...@@ -153,7 +154,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl
* *
* @return the associated BUYRequestOperation * @return the associated BUYRequestOperation
*/ */
- (NSOperation *)renewCustomerTokenWithID:(NSString *)customerID callback:(BUYDataTokenBlock)block; - (NSOperation *)renewCustomerTokenCallback:(BUYDataTokenBlock)block;
#pragma mark - Login - #pragma mark - Login -
...@@ -179,7 +180,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl ...@@ -179,7 +180,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl
* *
* @return The associated BUYRequestOperation * @return The associated BUYRequestOperation
*/ */
- (NSOperation *)logoutCustomerID:(NSString *)customerID callback:(BUYDataStatusBlock)block; - (NSOperation *)logoutCustomerCallback:(BUYDataStatusBlock)block;
/** /**
* POST /api/customers/recover * POST /api/customers/recover
...@@ -203,7 +204,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl ...@@ -203,7 +204,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl
* *
* @return The associated BUYRequestOperation * @return The associated BUYRequestOperation
*/ */
- (NSOperation *)getOrdersForCustomerWithID:(NSString *)customerID callback:(BUYDataOrdersBlock)block; - (NSOperation *)getOrdersForCustomerCallback:(BUYDataOrdersBlock)block;
/** /**
* GET /api/customers/:customer_id/orders/:id * GET /api/customers/:customer_id/orders/:id
...@@ -215,7 +216,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl ...@@ -215,7 +216,7 @@ typedef void (^BUYDataOrderBlock)(BUYOrder * _Nullable order, NSError * _Nullabl
* *
* @return The associated BUYRequestOperation * @return The associated BUYRequestOperation
*/ */
- (NSOperation *)getOrderWithID:(NSNumber *)orderID customerID:(NSString *)customerID callback:(BUYDataOrderBlock)block; - (NSOperation *)getOrderWithID:(NSNumber *)orderID callback:(BUYDataOrderBlock)block;
@end @end
......
...@@ -27,20 +27,21 @@ ...@@ -27,20 +27,21 @@
#import "BUYClient+Customers.h" #import "BUYClient+Customers.h"
#import "BUYClient+Internal.h" #import "BUYClient+Internal.h"
#import "BUYClient+Routing.h" #import "BUYClient+Routing.h"
#import "NSDateFormatter+BUYAdditions.h"
#import "BUYCustomer.h"
#import "BUYAccountCredentials.h" #import "BUYAccountCredentials.h"
#import "BUYCustomer.h"
#import "BUYCustomerToken.h" #import "BUYCustomerToken.h"
#import "BUYOrder.h" #import "BUYOrder.h"
#import "BUYShopifyErrorCodes.h" #import "BUYShopifyErrorCodes.h"
#import "NSDateFormatter+BUYAdditions.h"
@implementation BUYClient (Customers) @implementation BUYClient (Customers)
#pragma mark - Getting - #pragma mark - Getting -
- (NSOperation *)getCustomerWithID:(NSString *)customerID callback:(BUYDataCustomerBlock)block - (NSOperation *)getCustomerCallback:(BUYDataCustomerBlock)block
{ {
NSURL *url = [self urlForCustomersWithID:customerID]; NSURL *url = [self urlForLoggedInCustomer];
return [self getRequestForURL:url completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) { return [self getRequestForURL:url completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) {
BUYCustomer *customer = nil; BUYCustomer *customer = nil;
if (json && !error) { if (json && !error) {
...@@ -81,9 +82,9 @@ ...@@ -81,9 +82,9 @@
}]; }];
} }
- (NSOperation *)updateCustomerWithCredentials:(BUYAccountCredentials *)credentials customerID:(NSString *)customerID callback:(BUYDataCustomerBlock)block - (NSOperation *)updateCustomerWithCredentials:(BUYAccountCredentials *)credentials callback:(BUYDataCustomerBlock)block
{ {
NSURL *url = [self urlForCustomersWithID:customerID]; NSURL *url = [self urlForLoggedInCustomer];
return [self putRequestForURL:url object:credentials.JSONRepresentation completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) { return [self putRequestForURL:url object:credentials.JSONRepresentation completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) {
BUYCustomer *customer = nil; BUYCustomer *customer = nil;
if (json && !error) { if (json && !error) {
...@@ -111,16 +112,16 @@ ...@@ -111,16 +112,16 @@
#pragma mark - Token - #pragma mark - Token -
- (NSOperation *)renewCustomerTokenWithID:(NSString *)customerID callback:(BUYDataTokenBlock)block - (NSOperation *)renewCustomerTokenCallback:(BUYDataTokenBlock)block
{ {
if (self.customerToken) { if (self.customerToken) {
NSURL *url = [self urlForCustomersTokenRenewalWithID:customerID]; NSURL *url = [self urlForCustomersTokenRenewalWithID:self.customerToken.customerID];
return [self putRequestForURL:url object:nil completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) { return [self putRequestForURL:url object:nil completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) {
NSString *accessToken = nil; NSString *accessToken = nil;
if (json && !error) { if (json && !error) {
BUYCustomerToken *authenticatedResponse = [BUYCustomerToken customerTokenWithJSON:json]; BUYCustomerToken *customerToken = [BUYCustomerToken customerTokenWithJSON:json];
accessToken = authenticatedResponse.accessToken; accessToken = customerToken.accessToken;
} }
block(accessToken, error); block(accessToken, error);
...@@ -134,9 +135,9 @@ ...@@ -134,9 +135,9 @@
#pragma mark - Login - #pragma mark - Login -
- (NSOperation *)logoutCustomerID:(NSString *)customerID callback:(BUYDataStatusBlock)block - (NSOperation *)logoutCustomerCallback:(BUYDataStatusBlock)block
{ {
NSURL *url = [self urlForCustomersTokenWithID:customerID]; NSURL *url = [self urlForLoggedInCustomer];
return [self deleteRequestForURL:url completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) { return [self deleteRequestForURL:url completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) {
block(response.statusCode, error); block(response.statusCode, error);
}]; }];
...@@ -157,9 +158,9 @@ ...@@ -157,9 +158,9 @@
#pragma mark - Orders - #pragma mark - Orders -
- (NSOperation *)getOrdersForCustomerWithID:(NSString *)customerID callback:(BUYDataOrdersBlock)block - (NSOperation *)getOrdersForCustomerCallback:(BUYDataOrdersBlock)block
{ {
NSURL *url = [self urlForCustomersOrdersWithID:customerID]; NSURL *url = [self urlForLoggedInCustomer];
return [self getRequestForURL:url completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) { return [self getRequestForURL:url completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) {
if (json && !error) { if (json && !error) {
NSArray *orders = [self.modelManager ordersWithJSONDictionary:json]; NSArray *orders = [self.modelManager ordersWithJSONDictionary:json];
...@@ -170,9 +171,9 @@ ...@@ -170,9 +171,9 @@
}]; }];
} }
- (NSOperation *)getOrderWithID:(NSNumber *)orderID customerID:(NSString *)customerID callback:(BUYDataOrderBlock)block - (NSOperation *)getOrderWithID:(NSNumber *)orderID callback:(BUYDataOrderBlock)block
{ {
NSURL *url = [self urlForCustomersOrdersWithID:customerID orderID:orderID]; NSURL *url = [self urlForCustomersOrdersWithID:self.customerToken.customerID orderID:orderID];
return [self getRequestForURL:url completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) { return [self getRequestForURL:url completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) {
if (json && !error) { if (json && !error) {
BUYOrder *order = [self.modelManager orderWithJSONDictionary:json]; BUYOrder *order = [self.modelManager orderWithJSONDictionary:json];
...@@ -190,17 +191,15 @@ ...@@ -190,17 +191,15 @@
NSURL *url = [self urlForCustomersToken]; NSURL *url = [self urlForCustomersToken];
return [self postRequestForURL:url object:credentials.JSONRepresentation completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) { return [self postRequestForURL:url object:credentials.JSONRepresentation completionHandler:^(NSDictionary *json, NSHTTPURLResponse *response, NSError *error) {
if (json && !error) { if (json && !error) {
BUYCustomerToken *authenticatedResponse = [BUYCustomerToken customerTokenWithJSON:json]; self.customerToken = [BUYCustomerToken customerTokenWithJSON:json];
self.customerToken = authenticatedResponse;
if (!customerJSON) { if (!customerJSON) {
[self getCustomerWithID:authenticatedResponse.customerID callback:^(BUYCustomer *customer, NSError *error) { [self getCustomerCallback:^(BUYCustomer *customer, NSError *error) {
block(customer, self.customerToken.accessToken, error); block(customer, self.customerToken, error);
}]; }];
} }
else { else {
BUYCustomer *customer = [self.modelManager customerWithJSONDictionary:customerJSON]; BUYCustomer *customer = [self.modelManager customerWithJSONDictionary:customerJSON];
block(customer, self.customerToken.accessToken, error); block(customer, self.customerToken, error);
} }
} }
else { else {
......
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
- (NSURL *)urlForCustomers; - (NSURL *)urlForCustomers;
- (NSURL *)urlForCustomersToken; - (NSURL *)urlForCustomersToken;
- (NSURL *)urlForCustomersPasswordRecovery; - (NSURL *)urlForCustomersPasswordRecovery;
- (NSURL *)urlForLoggedInCustomer;
- (NSURL *)urlForCustomersOrdersWithID:(NSString *)identifier; - (NSURL *)urlForCustomersOrdersWithID:(NSString *)identifier;
- (NSURL *)urlForCustomersOrdersWithID:(NSString *)identifier orderID:(NSNumber *)orderID; - (NSURL *)urlForCustomersOrdersWithID:(NSString *)identifier orderID:(NSNumber *)orderID;
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
// //
#import "BUYClient+Routing.h" #import "BUYClient+Routing.h"
#import "BUYCustomerToken.h"
#pragma mark - NSURL (Private Routing) - #pragma mark - NSURL (Private Routing) -
...@@ -188,6 +189,11 @@ ...@@ -188,6 +189,11 @@
return [[[self urlForCustomers] appendPath:@"/recover"] appendExtension]; return [[[self urlForCustomers] appendPath:@"/recover"] appendExtension];
} }
- (NSURL *)urlForLoggedInCustomer
{
return [self urlForCustomersWithID:self.customerToken.customerID];
}
#pragma mark - Customer With ID - #pragma mark - Customer With ID -
- (NSURL *)urlForCustomersWithID:(NSString *)identifier - (NSURL *)urlForCustomersWithID:(NSString *)identifier
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment