Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
shopify_iossdk
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cemarose
shopify_iossdk
Commits
e1ba41a2
Commit
e1ba41a2
authored
8 years ago
by
Dima Bart
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement BUYCheckoutOperation (incomplete).
parent
e5aed2b3
No related merge requests found
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
284 additions
and
28 deletions
+284
-28
project.pbxproj
Mobile Buy SDK/Mobile Buy SDK.xcodeproj/project.pbxproj
+20
-0
BUYClient+Checkout.h
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient+Checkout.h
+2
-2
BUYClient+Checkout.m
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient+Checkout.m
+21
-9
BUYClient+Internal.h
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient+Internal.h
+14
-5
BUYClient.h
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient.h
+1
-0
BUYClient.m
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient.m
+46
-12
BUYCheckoutOperation.h
... Buy SDK/Mobile Buy SDK/Operations/BUYCheckoutOperation.h
+46
-0
BUYCheckoutOperation.m
... Buy SDK/Mobile Buy SDK/Operations/BUYCheckoutOperation.m
+134
-0
No files found.
Mobile Buy SDK/Mobile Buy SDK.xcodeproj/project.pbxproj
View file @
e1ba41a2
...
...
@@ -361,6 +361,10 @@
9A0B0C831CEB981C0037D68F
/* BUYClient+RoutingTests.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A0B0C821CEB981C0037D68F
/* BUYClient+RoutingTests.m */
;
};
9A0B0CA21CECC1BC0037D68F
/* BUYClient+Checkout.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A0B0C711CEB52B90037D68F
/* BUYClient+Checkout.m */
;
};
9A0B0CA31CECC1BD0037D68F
/* BUYClient+Checkout.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A0B0C711CEB52B90037D68F
/* BUYClient+Checkout.m */
;
};
9A0B0CA71CED0A860037D68F
/* BUYCheckoutOperation.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A0B0CA51CED0A860037D68F
/* BUYCheckoutOperation.h */
;
};
9A0B0CA81CED0A860037D68F
/* BUYCheckoutOperation.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A0B0CA51CED0A860037D68F
/* BUYCheckoutOperation.h */
;
};
9A0B0CA91CED0A860037D68F
/* BUYCheckoutOperation.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A0B0CA61CED0A860037D68F
/* BUYCheckoutOperation.m */
;
};
9A0B0CAA1CED0A860037D68F
/* BUYCheckoutOperation.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A0B0CA61CED0A860037D68F
/* BUYCheckoutOperation.m */
;
};
9A102D1B1CDD1F960026CC43
/* BUYErrorTests.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A102D1A1CDD1F960026CC43
/* BUYErrorTests.m */
;
};
9A102D1E1CDD25980026CC43
/* BUYOptionValueTests.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A102D1D1CDD25980026CC43
/* BUYOptionValueTests.m */
;
};
9A47CEFD1CE39F6000A6D5BA
/* BUYCreditCardToken.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A47CEFB1CE39F5B00A6D5BA
/* BUYCreditCardToken.m */
;
};
...
...
@@ -654,6 +658,8 @@
9A0B0C761CEB5BBD0037D68F
/* BUYAuthenticatedResponse.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
BUYAuthenticatedResponse.h
;
sourceTree
=
"<group>"
;
};
9A0B0C771CEB5BBD0037D68F
/* BUYAuthenticatedResponse.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
BUYAuthenticatedResponse.m
;
sourceTree
=
"<group>"
;
};
9A0B0C821CEB981C0037D68F
/* BUYClient+RoutingTests.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
"BUYClient+RoutingTests.m"
;
sourceTree
=
"<group>"
;
};
9A0B0CA51CED0A860037D68F
/* BUYCheckoutOperation.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
BUYCheckoutOperation.h
;
sourceTree
=
"<group>"
;
};
9A0B0CA61CED0A860037D68F
/* BUYCheckoutOperation.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
BUYCheckoutOperation.m
;
sourceTree
=
"<group>"
;
};
9A102D1A1CDD1F960026CC43
/* BUYErrorTests.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
BUYErrorTests.m
;
sourceTree
=
"<group>"
;
};
9A102D1D1CDD25980026CC43
/* BUYOptionValueTests.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
BUYOptionValueTests.m
;
sourceTree
=
"<group>"
;
};
9A47CEF81CE39EC200A6D5BA
/* BUYPaymentToken.h */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
BUYPaymentToken.h
;
sourceTree
=
"<group>"
;
};
...
...
@@ -1014,6 +1020,15 @@
name
=
"Operation Tests"
;
sourceTree
=
"<group>"
;
};
9A0B0CAB1CEDDBD80037D68F
/* Aggregate */
=
{
isa
=
PBXGroup
;
children
=
(
9A0B0CA51CED0A860037D68F
/* BUYCheckoutOperation.h */
,
9A0B0CA61CED0A860037D68F
/* BUYCheckoutOperation.m */
,
);
name
=
Aggregate
;
sourceTree
=
"<group>"
;
};
9A102D1C1CDD257D0026CC43
/* Models Tests */
=
{
isa
=
PBXGroup
;
children
=
(
...
...
@@ -1061,6 +1076,7 @@
9A585C051CE6440B001F20F0
/* BUYOperation.m */
,
9A585C111CE65811001F20F0
/* BUYRequestOperation.h */
,
9A585C121CE65811001F20F0
/* BUYRequestOperation.m */
,
9A0B0CAB1CEDDBD80037D68F
/* Aggregate */
,
);
path
=
Operations
;
sourceTree
=
"<group>"
;
...
...
@@ -1210,6 +1226,7 @@
84DD12A91CC63FE600A2442D
/* _BUYOrder.h in Headers */
,
84DD129F1CC63FE600A2442D
/* _BUYCustomer.h in Headers */
,
9A0B0C671CEA703E0037D68F
/* BUYClient+Routing.h in Headers */
,
9A0B0CA81CED0A860037D68F
/* BUYCheckoutOperation.h in Headers */
,
84DD12991CC63FE600A2442D
/* _BUYCart.h in Headers */
,
84DD129D1CC63FE600A2442D
/* _BUYCollection.h in Headers */
,
9A0B0C731CEB52B90037D68F
/* BUYClient+Checkout.h in Headers */
,
...
...
@@ -1374,6 +1391,7 @@
84D9154B1CC03F1600D334FB
/* BUYManagedObject.h in Headers */
,
84DD12CD1CC6401400A2442D
/* BUYCustomer.h in Headers */
,
BE9A645D1B503CE30033E558
/* BUYObject.h in Headers */
,
9A0B0CA71CED0A860037D68F
/* BUYCheckoutOperation.h in Headers */
,
BE9A646E1B503D1E0033E558
/* BUYRuntime.h in Headers */
,
BEB74A901B55A3D00005A300
/* BUYCollection.h in Headers */
,
84D915431CC0359700D334FB
/* BUYObserver.h in Headers */
,
...
...
@@ -1611,6 +1629,7 @@
9A0B0CA21CECC1BC0037D68F
/* BUYClient+Checkout.m in Sources */
,
841ADE0E1CB6C942000004B0
/* NSDecimalNumber+BUYAdditions.m in Sources */
,
84DD12AE1CC63FE600A2442D
/* _BUYProductVariant.m in Sources */
,
9A0B0CAA1CED0A860037D68F
/* BUYCheckoutOperation.m in Sources */
,
84B0A7211CDD261100253EB0
/* BUYSerializable.m in Sources */
,
9A47CEFE1CE39F6100A6D5BA
/* BUYCreditCardToken.m in Sources */
,
9A0B0C7B1CEB5BBD0037D68F
/* BUYAuthenticatedResponse.m in Sources */
,
...
...
@@ -1752,6 +1771,7 @@
9A0B0CA31CECC1BD0037D68F
/* BUYClient+Checkout.m in Sources */
,
841ADE0D1CB6C942000004B0
/* NSDecimalNumber+BUYAdditions.m in Sources */
,
84DD12961CC63FE600A2442D
/* _BUYProductVariant.m in Sources */
,
9A0B0CA91CED0A860037D68F
/* BUYCheckoutOperation.m in Sources */
,
84B0A7201CDD261100253EB0
/* BUYSerializable.m in Sources */
,
9A47CEFD1CE39F6000A6D5BA
/* BUYCreditCardToken.m in Sources */
,
9A0B0C7A1CEB5BBD0037D68F
/* BUYAuthenticatedResponse.m in Sources */
,
...
...
This diff is collapsed.
Click to expand it.
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient+Checkout.h
View file @
e1ba41a2
...
...
@@ -153,9 +153,9 @@ typedef void (^BUYDataGiftCardBlock)(BUYGiftCard * _Nullable giftCard, NSError *
* @param paymentToken Opaque payment token object. May be nil if the total checkout amount is equal to $0.00
* @param block (^BUYDataCheckoutBlock)(BUYCheckout *checkout, NSError *error);
*
* @return The associated BUY
Request
Operation
* @return The associated BUYOperation
*/
-
(
BUY
Request
Operation
*
)
completeCheckout
:(
BUYCheckout
*
)
checkout
paymentToken
:(
_Nullable
id
<
BUYPaymentToken
>
)
paymentToken
completion
:(
BUYDataCheckoutBlock
)
block
;
-
(
BUYOperation
*
)
completeCheckout
:(
BUYCheckout
*
)
checkout
paymentToken
:(
_Nullable
id
<
BUYPaymentToken
>
)
paymentToken
completion
:(
BUYDataCheckoutBlock
)
block
;
/**
* Retrieve the status of a BUYCheckout. This checks the status of the current payment processing job for the provided checkout.
...
...
This diff is collapsed.
Click to expand it.
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient+Checkout.m
View file @
e1ba41a2
...
...
@@ -27,6 +27,7 @@
#import "BUYClient+Checkout.h"
#import "BUYClient+Internal.h"
#import "BUYClient+Routing.h"
#import "BUYCheckoutOperation.h"
#import "BUYAddress.h"
#import "BUYCheckout.h"
#import "BUYGiftCard.h"
...
...
@@ -41,6 +42,8 @@
@implementation
BUYClient
(
Checkout
)
#pragma mark - API -
-
(
void
)
handleCheckoutResponse
:(
NSDictionary
*
)
json
error
:(
NSError
*
)
error
block
:(
BUYDataCheckoutBlock
)
block
{
BUYCheckout
*
checkout
=
nil
;
...
...
@@ -137,10 +140,15 @@
-
(
BUYRequestOperation
*
)
getCheckout
:(
BUYCheckout
*
)
checkout
completion
:(
BUYDataCheckoutBlock
)
block
{
return
[
self
getCheckout
:
checkout
start
:
YES
completion
:
block
];
}
-
(
BUYRequestOperation
*
)
getCheckout
:(
BUYCheckout
*
)
checkout
start
:(
BOOL
)
start
completion
:(
BUYDataCheckoutBlock
)
block
{
BUYAssertCheckout
(
checkout
);
NSURL
*
route
=
[
self
urlForCheckoutsWithToken
:
checkout
.
token
];
return
[
self
getRequestForURL
:
route
completionHandler
:
^
(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
{
return
[
self
getRequestForURL
:
route
start
:
start
completionHandler
:^
(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
{
[
self
handleCheckoutResponse
:
json
error
:
error
block
:
block
];
}];
}
...
...
@@ -155,7 +163,11 @@
}];
}
-
(
BUYRequestOperation
*
)
completeCheckout
:(
BUYCheckout
*
)
checkout
paymentToken
:(
id
<
BUYPaymentToken
>
)
paymentToken
completion
:(
BUYDataCheckoutBlock
)
block
-
(
BUYOperation
*
)
completeCheckout
:(
BUYCheckout
*
)
checkout
paymentToken
:(
id
<
BUYPaymentToken
>
)
paymentToken
completion
:(
BUYDataCheckoutBlock
)
block
{
return
[[
BUYCheckoutOperation
alloc
]
initWithClient
:
self
checkout
:
checkout
token
:
paymentToken
completion
:
block
];
}
-
(
BUYRequestOperation
*
)
beginCheckout
:(
BUYCheckout
*
)
checkout
paymentToken
:(
id
<
BUYPaymentToken
>
)
paymentToken
completion
:(
BUYDataCheckoutBlock
)
block
{
BUYAssertCheckout
(
checkout
);
...
...
@@ -164,7 +176,7 @@
BUYAssert
(
paymentToken
||
isFree
,
@"Failed to complete checkout. Checkout must have a payment token or have a payment value equal to $0.00"
);
NSURL
*
route
=
[
self
urlForCheckoutsCompletionWithToken
:
checkout
.
token
];
return
[
self
postRequestForURL
:
route
object
:[
paymentToken
JSONDictionary
]
completionHandler
:^
(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
{
return
[
self
postRequestForURL
:
route
object
:[
paymentToken
JSONDictionary
]
start
:
NO
completionHandler
:^
(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
{
[
self
handleCheckoutResponse
:
json
error
:
error
block
:
block
];
}];
}
...
...
@@ -173,7 +185,7 @@
{
BUYAssertCheckout
(
checkout
);
return
[
self
getCompletionStatusOfCheckoutToken
:
checkout
.
token
completion
:
block
];
return
[
self
getCompletionStatusOfCheckoutToken
:
checkout
.
token
start
:
YES
completion
:
block
];
}
-
(
BUYRequestOperation
*
)
getCompletionStatusOfCheckoutURL
:(
NSURL
*
)
url
completion
:(
BUYDataStatusBlock
)
block
...
...
@@ -190,19 +202,19 @@
BUYAssert
(
token
,
@"Failed to get completion status of checkout. Checkout URL must have a valid token associated with it."
);
return
[
self
getCompletionStatusOfCheckoutToken
:
token
completion
:
block
];
return
[
self
getCompletionStatusOfCheckoutToken
:
token
start
:
YES
completion
:
block
];
}
-
(
BUYRequestOperation
*
)
getCompletionStatusOfCheckoutToken
:(
NSString
*
)
token
completion
:(
BUYDataStatusBlock
)
block
-
(
BUYRequestOperation
*
)
getCompletionStatusOfCheckoutToken
:(
NSString
*
)
token
start
:(
BOOL
)
start
completion
:(
BUYDataStatusBlock
)
block
{
NSURL
*
route
=
[
self
urlForCheckoutsProcessingWithToken
:
token
];
return
[
self
getRequestForURL
:
route
completionHandler
:
^
(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
{
return
[
self
getRequestForURL
:
route
start
:
start
completionHandler
:^
(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
{
NSInteger
statusCode
=
[(
NSHTTPURLResponse
*
)
response
statusCode
];
block
([
self
statusForStatusCode
:
statusCode
error
:
error
],
error
);
}];
}
#pragma mark - Shipping Rates
#pragma mark - Shipping Rates
-
-
(
BUYRequestOperation
*
)
getShippingRatesForCheckout
:(
BUYCheckout
*
)
checkout
completion
:(
BUYDataShippingRatesBlock
)
block
{
...
...
@@ -223,7 +235,7 @@
}];
}
#pragma mark - Payments
#pragma mark - Payments
-
-
(
BUYRequestOperation
*
)
storeCreditCard
:(
BUYCreditCard
*
)
creditCard
checkout
:(
BUYCheckout
*
)
checkout
completion
:(
BUYDataCreditCardBlock
)
completion
{
...
...
This diff is collapsed.
Click to expand it.
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient+Internal.h
View file @
e1ba41a2
...
...
@@ -31,14 +31,23 @@ static NSString * const BUYShopifyErrorDomain = @"shopify";
static
NSString
*
const
BUYClientVersionString
=
@"1.3"
;
static
NSString
*
const
BUYClientCustomerAccessToken
=
@"X-Shopify-Customer-Access-Token"
;
typedef
void
(
^
BUYClientRequestJSONCompletion
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
);
@interface
BUYClient
(
Internal
)
-
(
BUYRequestOperation
*
)
getRequestForURL
:(
NSURL
*
)
url
completionHandler
:(
void
(
^
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
))
completionHandler
;
-
(
BUYRequestOperation
*
)
deleteRequestForURL
:(
NSURL
*
)
url
completionHandler
:(
void
(
^
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
))
completionHandler
;
-
(
BUYRequestOperation
*
)
getRequestForURL
:(
NSURL
*
)
url
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
-
(
BUYRequestOperation
*
)
deleteRequestForURL
:(
NSURL
*
)
url
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
-
(
BUYRequestOperation
*
)
postRequestForURL
:(
NSURL
*
)
url
object
:(
id
<
BUYSerializable
>
)
object
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
-
(
BUYRequestOperation
*
)
putRequestForURL
:(
NSURL
*
)
url
object
:(
id
<
BUYSerializable
>
)
object
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
-
(
BUYRequestOperation
*
)
patchRequestForURL
:(
NSURL
*
)
url
object
:(
id
<
BUYSerializable
>
)
object
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
-
(
BUYRequestOperation
*
)
getRequestForURL
:(
NSURL
*
)
url
start
:(
BOOL
)
start
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
-
(
BUYRequestOperation
*
)
deleteRequestForURL
:(
NSURL
*
)
url
start
:(
BOOL
)
start
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
-
(
BUYRequestOperation
*
)
postRequestForURL
:(
NSURL
*
)
url
object
:(
id
<
BUYSerializable
>
)
object
completionHandler
:(
void
(
^
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
)
completionHandler
;
-
(
BUYRequestOperation
*
)
putRequestForURL
:(
NSURL
*
)
url
object
:(
id
<
BUYSerializable
>
)
object
completionHandler
:(
void
(
^
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
)
completionHandler
;
-
(
BUYRequestOperation
*
)
patchRequestForURL
:(
NSURL
*
)
url
object
:(
id
<
BUYSerializable
>
)
object
completionHandler
:(
void
(
^
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
)
completionHandler
;
-
(
BUYRequestOperation
*
)
postRequestForURL
:(
NSURL
*
)
url
object
:(
id
<
BUYSerializable
>
)
object
start
:(
BOOL
)
start
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
-
(
BUYRequestOperation
*
)
putRequestForURL
:(
NSURL
*
)
url
object
:(
id
<
BUYSerializable
>
)
object
start
:(
BOOL
)
start
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
-
(
BUYRequestOperation
*
)
patchRequestForURL
:(
NSURL
*
)
url
object
:(
id
<
BUYSerializable
>
)
object
start
:(
BOOL
)
start
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
-
(
BUYStatus
)
statusForStatusCode
:(
NSUInteger
)
statusCode
error
:(
NSError
*
)
error
;
-
(
NSError
*
)
errorFromJSON
:(
NSDictionary
*
)
json
response
:(
NSURLResponse
*
)
response
;
...
...
This diff is collapsed.
Click to expand it.
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient.h
View file @
e1ba41a2
...
...
@@ -27,6 +27,7 @@
@import
Foundation
;
@class
BUYModelManager
;
@class
BUYOperation
;
@class
BUYRequestOperation
;
/**
...
...
This diff is collapsed.
Click to expand it.
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient.m
View file @
e1ba41a2
...
...
@@ -117,31 +117,58 @@ static NSString * const BUYClientJSONMimeType = @"application/json";
return
nil
;
}
#pragma mark - Auto Starting Convenience Requests
-
(
BUYRequestOperation
*
)
getRequestForURL
:
(
NSURL
*
)
url
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
return
[
self
getRequestForURL
:
url
start
:
YES
completionHandler
:
completionHandler
];
}
-
(
BUYRequestOperation
*
)
postRequestForURL
:
(
NSURL
*
)
url
object
:
(
id
<
BUYSerializable
>
)
object
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
return
[
self
postRequestForURL
:
url
object
:
object
start
:
YES
completionHandler
:
completionHandler
];
}
-
(
BUYRequestOperation
*
)
putRequestForURL
:
(
NSURL
*
)
url
object
:
(
id
<
BUYSerializable
>
)
object
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
return
[
self
putRequestForURL
:
url
object
:
object
start
:
YES
completionHandler
:
completionHandler
];
}
-
(
BUYRequestOperation
*
)
patchRequestForURL
:
(
NSURL
*
)
url
object
:
(
id
<
BUYSerializable
>
)
object
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
return
[
self
patchRequestForURL
:
url
object
:
object
start
:
YES
completionHandler
:
completionHandler
];
}
-
(
BUYRequestOperation
*
)
deleteRequestForURL
:
(
NSURL
*
)
url
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
return
[
self
deleteRequestForURL
:
url
start
:
YES
completionHandler
:
completionHandler
];
}
#pragma mark - Convenience Requests
-
(
BUYRequestOperation
*
)
getRequestForURL
:
(
NSURL
*
)
url
completionHandler
:
(
void
(
^
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
)
completionHandler
-
(
BUYRequestOperation
*
)
getRequestForURL
:
(
NSURL
*
)
url
start
:
(
BOOL
)
start
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
return
[
self
requestForURL
:
url
method
:
@"GET"
object
:
nil
completionHandler
:
completionHandler
];
return
[
self
requestForURL
:
url
method
:
@"GET"
object
:
nil
start
:
start
completionHandler
:
completionHandler
];
}
-
(
BUYRequestOperation
*
)
postRequestForURL
:
(
NSURL
*
)
url
object
:
(
id
<
BUYSerializable
>
)
object
completionHandler
:
(
void
(
^
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
)
completionHandler
-
(
BUYRequestOperation
*
)
postRequestForURL
:
(
NSURL
*
)
url
object
:
(
id
<
BUYSerializable
>
)
object
start
:
(
BOOL
)
start
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
return
[
self
requestForURL
:
url
method
:
@"POST"
object
:
object
completionHandler
:
completionHandler
];
return
[
self
requestForURL
:
url
method
:
@"POST"
object
:
object
start
:
start
completionHandler
:
completionHandler
];
}
-
(
BUYRequestOperation
*
)
putRequestForURL
:
(
NSURL
*
)
url
object
:
(
id
<
BUYSerializable
>
)
object
completionHandler
:
(
void
(
^
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
)
completionHandler
-
(
BUYRequestOperation
*
)
putRequestForURL
:
(
NSURL
*
)
url
object
:
(
id
<
BUYSerializable
>
)
object
start
:
(
BOOL
)
start
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
return
[
self
requestForURL
:
url
method
:
@"PUT"
object
:
object
completionHandler
:
completionHandler
];
return
[
self
requestForURL
:
url
method
:
@"PUT"
object
:
object
start
:
start
completionHandler
:
completionHandler
];
}
-
(
BUYRequestOperation
*
)
patchRequestForURL
:
(
NSURL
*
)
url
object
:
(
id
<
BUYSerializable
>
)
object
completionHandler
:
(
void
(
^
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
)
completionHandler
-
(
BUYRequestOperation
*
)
patchRequestForURL
:
(
NSURL
*
)
url
object
:
(
id
<
BUYSerializable
>
)
object
start
:
(
BOOL
)
start
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
return
[
self
requestForURL
:
url
method
:
@"PATCH"
object
:
object
completionHandler
:
completionHandler
];
return
[
self
requestForURL
:
url
method
:
@"PATCH"
object
:
object
start
:
start
completionHandler
:
completionHandler
];
}
-
(
BUYRequestOperation
*
)
deleteRequestForURL
:
(
NSURL
*
)
url
completionHandler
:
(
void
(
^
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
)
)
completionHandler
-
(
BUYRequestOperation
*
)
deleteRequestForURL
:
(
NSURL
*
)
url
start
:
(
BOOL
)
start
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
return
[
self
requestForURL
:
url
method
:
@"DELETE"
object
:
nil
completionHandler
:
completionHandler
];
return
[
self
requestForURL
:
url
method
:
@"DELETE"
object
:
nil
start
:
start
completionHandler
:
completionHandler
];
}
#pragma mark - Generic Requests
...
...
@@ -157,7 +184,12 @@ static NSString * const BUYClientJSONMimeType = @"application/json";
return
[
NSString
stringWithFormat
:
@"%@ %@"
,
@"Basic"
,
[
data
base64EncodedStringWithOptions
:
0
]];
}
-
(
BUYRequestOperation
*
)
requestForURL
:
(
NSURL
*
)
url
method
:
(
NSString
*
)
method
object
:
(
id
<
BUYSerializable
>
)
object
completionHandler
:
(
void
(
^
)(
NSDictionary
*
json
,
NSURLResponse
*
response
,
NSError
*
error
))
completionHandler
-
(
BUYRequestOperation
*
)
requestForURL
:
(
NSURL
*
)
url
method
:
(
NSString
*
)
method
object
:
(
id
<
BUYSerializable
>
)
object
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
return
[
self
requestForURL
:
url
method
:
method
object
:
object
start
:
YES
completionHandler
:
completionHandler
];
}
-
(
BUYRequestOperation
*
)
requestForURL
:
(
NSURL
*
)
url
method
:
(
NSString
*
)
method
object
:
(
id
<
BUYSerializable
>
)
object
start
:
(
BOOL
)
start
completionHandler
:
(
BUYClientRequestJSONCompletion
)
completionHandler
{
NSMutableURLRequest
*
request
=
[[
NSMutableURLRequest
alloc
]
initWithURL
:
url
];
if
(
object
)
{
...
...
@@ -180,7 +212,9 @@ static NSString * const BUYClientJSONMimeType = @"application/json";
}];
}];
[
self
startTask
:
operation
];
if
(
start
)
{
[
self
startTask
:
operation
];
}
return
operation
;
}
...
...
This diff is collapsed.
Click to expand it.
Mobile Buy SDK/Mobile Buy SDK/Operations/BUYCheckoutOperation.h
0 → 100644
View file @
e1ba41a2
//
// BUYCheckoutOperation.h
// Mobile Buy SDK
//
// Created by Shopify.
// Copyright (c) 2015 Shopify Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#import "BUYOperation.h"
NS_ASSUME_NONNULL_BEGIN
@class
BUYClient
;
@class
BUYCheckout
;
@protocol
BUYPaymentToken
;
typedef
void
(
^
BUYCheckoutOperationCompletion
)(
BUYCheckout
*
_Nullable
checkout
,
NSError
*
_Nullable
error
);
@interface
BUYCheckoutOperation
:
BUYOperation
@property
(
strong
,
nonatomic
,
readonly
,
nonnull
)
BUYClient
*
client
;
+
(
instancetype
)
operationWithClient
:(
BUYClient
*
)
client
checkout
:(
BUYCheckout
*
)
checkout
token
:(
id
<
BUYPaymentToken
>
)
token
completion
:(
BUYCheckoutOperationCompletion
)
completion
;
-
(
instancetype
)
initWithClient
:(
BUYClient
*
)
client
checkout
:(
BUYCheckout
*
)
checkout
token
:(
id
<
BUYPaymentToken
>
)
token
completion
:(
BUYCheckoutOperationCompletion
)
completion
;
@end
NS_ASSUME_NONNULL_END
This diff is collapsed.
Click to expand it.
Mobile Buy SDK/Mobile Buy SDK/Operations/BUYCheckoutOperation.m
0 → 100644
View file @
e1ba41a2
//
// BUYCheckoutOperation.m
// Mobile Buy SDK
//
// Created by Shopify.
// Copyright (c) 2015 Shopify Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#import "BUYCheckoutOperation.h"
#import "BUYClient+Checkout.h"
#import "BUYPaymentToken.h"
#import "BUYCheckout.h"
#import "BUYRequestOperation.h"
@interface
BUYClient
(
PrivateCheckout
)
-
(
BUYRequestOperation
*
)
beginCheckout
:(
BUYCheckout
*
)
checkout
paymentToken
:(
id
<
BUYPaymentToken
>
)
paymentToken
completion
:(
BUYDataCheckoutBlock
)
block
;
-
(
BUYRequestOperation
*
)
getCompletionStatusOfCheckoutToken
:(
NSString
*
)
token
start
:(
BOOL
)
start
completion
:(
BUYDataStatusBlock
)
block
;
-
(
BUYRequestOperation
*
)
getCheckout
:(
BUYCheckout
*
)
checkout
start
:(
BOOL
)
start
completion
:(
BUYDataCheckoutBlock
)
block
;
@end
@interface
BUYCheckoutOperation
()
@property
(
strong
,
nonatomic
,
readonly
)
BUYCheckout
*
checkout
;
@property
(
strong
,
nonatomic
,
readonly
)
id
<
BUYPaymentToken
>
token
;
@property
(
strong
,
nonatomic
,
readonly
)
BUYCheckoutOperationCompletion
completion
;
@property
(
strong
,
nonatomic
,
readonly
)
NSArray
*
operations
;
@end
@implementation
BUYCheckoutOperation
#pragma mark - Init -
+
(
instancetype
)
operationWithClient
:(
BUYClient
*
)
client
checkout
:(
BUYCheckout
*
)
checkout
token
:(
id
<
BUYPaymentToken
>
)
token
completion
:(
BUYCheckoutOperationCompletion
)
completion
{
return
[[[
self
class
]
alloc
]
initWithClient
:
client
checkout
:
checkout
token
:
token
completion
:
completion
];
}
-
(
instancetype
)
initWithClient
:(
BUYClient
*
)
client
checkout
:(
BUYCheckout
*
)
checkout
token
:(
id
<
BUYPaymentToken
>
)
token
completion
:(
BUYCheckoutOperationCompletion
)
completion
{
self
=
[
super
init
];
if
(
self
)
{
_client
=
client
;
_checkout
=
checkout
;
_token
=
token
;
_completion
=
completion
;
}
return
self
;
}
#pragma mark - Finishing -
-
(
void
)
finishWithCheckout
:(
BUYCheckout
*
)
checkout
{
[
self
finishExecution
];
self
.
completion
(
checkout
,
nil
);
}
-
(
void
)
finishWithError
:(
NSError
*
)
error
{
[
self
finishExecution
];
self
.
completion
(
nil
,
error
);
}
#pragma mark - Execution -
-
(
void
)
startExecution
{
[
super
startExecution
];
__weak
typeof
(
self
)
weakSelf
=
self
;
BUYRequestOperation
*
beginOperation
=
[
self
.
client
beginCheckout
:
self
.
checkout
paymentToken
:
self
.
token
completion
:^
(
BUYCheckout
*
checkout
,
NSError
*
error
)
{
if
(
weakSelf
.
isCancelled
||
!
checkout
)
{
[
weakSelf
cancel
];
return
;
}
}];
BUYRequestOperation
*
pollingOperation
=
[
self
.
client
getCompletionStatusOfCheckoutToken
:
self
.
checkout
.
token
start
:
NO
completion
:^
(
BUYStatus
status
,
NSError
*
error
)
{
if
(
weakSelf
.
isCancelled
||
status
!=
BUYStatusComplete
)
{
[
weakSelf
cancel
];
return
;
}
}];
pollingOperation
.
pollingHandler
=
^
BOOL
(
NSDictionary
*
json
,
NSHTTPURLResponse
*
response
,
NSError
*
error
)
{
return
response
.
statusCode
==
BUYStatusProcessing
;
};
BUYRequestOperation
*
getOperation
=
[
self
.
client
getCheckout
:
self
.
checkout
completion
:
^
(
BUYCheckout
*
checkout
,
NSError
*
error
)
{
if
(
weakSelf
.
isCancelled
||
!
checkout
)
{
[
weakSelf
cancel
];
return
;
}
}];
[
self
locked
:
^
{
_operations
=
@[
beginOperation
,
pollingOperation
,
getOperation
];
}];
[
self
.
client
.
requestQueue
addOperations
:
self
.
operations
waitUntilFinished
:
NO
];
}
-
(
void
)
cancelExecution
{
[
super
cancelExecution
];
for
(
NSOperation
*
operation
in
self
.
operations
)
{
[
operation
cancel
];
}
}
@end
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment