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
726b6580
Commit
726b6580
authored
Jun 08, 2016
by
Dima Bart
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #220 from Shopify/task/status-aggregate
Add internal API for aggregate checkout status operation
parents
e7632aba
fff851b0
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
381 additions
and
193 deletions
+381
-193
project.pbxproj
Mobile Buy SDK/Mobile Buy SDK.xcodeproj/project.pbxproj
+16
-123
BUYClient+Checkout.m
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient+Checkout.m
+11
-1
BUYClient+Internal.h
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient+Internal.h
+4
-0
BUYCheckoutOperation.h
... Buy SDK/Mobile Buy SDK/Operations/BUYCheckoutOperation.h
+3
-6
BUYCheckoutOperation.m
... Buy SDK/Mobile Buy SDK/Operations/BUYCheckoutOperation.m
+15
-63
BUYGroupOperation.h
Mobile Buy SDK/Mobile Buy SDK/Operations/BUYGroupOperation.h
+39
-0
BUYGroupOperation.m
Mobile Buy SDK/Mobile Buy SDK/Operations/BUYGroupOperation.m
+126
-0
BUYStatusOperation.h
...le Buy SDK/Mobile Buy SDK/Operations/BUYStatusOperation.h
+42
-0
BUYStatusOperation.m
...le Buy SDK/Mobile Buy SDK/Operations/BUYStatusOperation.m
+125
-0
No files found.
Mobile Buy SDK/Mobile Buy SDK.xcodeproj/project.pbxproj
View file @
726b6580
...
...
@@ -108,10 +108,7 @@
84D73C051CDD1945000F978A
/* BUYAddress.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
84D73C001CDD1931000F978A
/* BUYAddress.h */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
84D73C081CDD194D000F978A
/* _BUYAddress.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
84D73BFF1CDD1931000F978A
/* _BUYAddress.m */
;
};
84D73C091CDD194D000F978A
/* BUYAddress.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
84D73C011CDD1931000F978A
/* BUYAddress.m */
;
};
84D915441CC0359700D334FB
/* BUYObserver.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
84D915411CC0359700D334FB
/* BUYObserver.h */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
84D915431CC0359700D334FB
/* BUYObserver.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
84D915411CC0359700D334FB
/* BUYObserver.h */
;
};
84D915441CC0359700D334FB
/* BUYObserver.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
84D915411CC0359700D334FB
/* BUYObserver.h */
;
};
84D915451CC0359700D334FB
/* BUYObserver.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
84D915421CC0359700D334FB
/* BUYObserver.m */
;
};
84D915461CC0359700D334FB
/* BUYObserver.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
84D915421CC0359700D334FB
/* BUYObserver.m */
;
};
84D9154C1CC03F1600D334FB
/* BUYManagedObject.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
84D915471CC03F1600D334FB
/* BUYManagedObject.h */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
84D9154E1CC03F1600D334FB
/* BUYManagedObject.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
84D915481CC03F1600D334FB
/* BUYManagedObject.m */
;
};
...
...
@@ -249,6 +246,10 @@
9A585C0B1CE6440B001F20F0
/* BUYOperation.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A585C041CE6440B001F20F0
/* BUYOperation.h */
;
};
9A585C0D1CE6440B001F20F0
/* BUYOperation.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A585C051CE6440B001F20F0
/* BUYOperation.m */
;
};
9A6B03791CDA5D4F0054C26E
/* BUYAccountCredentialsTests.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A6B03781CDA5D4F0054C26E
/* BUYAccountCredentialsTests.m */
;
};
9A6C1D411D07485F00BFF4F9
/* BUYStatusOperation.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A6C1D3F1D07485F00BFF4F9
/* BUYStatusOperation.h */
;
};
9A6C1D421D07485F00BFF4F9
/* BUYStatusOperation.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A6C1D401D07485F00BFF4F9
/* BUYStatusOperation.m */
;
};
9A6C1D451D0749FC00BFF4F9
/* BUYGroupOperation.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A6C1D431D0749FC00BFF4F9
/* BUYGroupOperation.h */
;
};
9A6C1D461D0749FC00BFF4F9
/* BUYGroupOperation.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A6C1D441D0749FC00BFF4F9
/* BUYGroupOperation.m */
;
};
9A7652C31CF487BD00220E4B
/* BUYOperationTests.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A7652C21CF487BD00220E4B
/* BUYOperationTests.m */
;
};
9A807E841CF74EBE00023160
/* BUYClient+Address.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A807E811CF74EBE00023160
/* BUYClient+Address.h */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9A807E861CF74EBE00023160
/* BUYClient+Address.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9A807E821CF74EBE00023160
/* BUYClient+Address.m */
;
};
...
...
@@ -491,6 +492,10 @@
9A585C111CE65811001F20F0
/* BUYRequestOperation.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
BUYRequestOperation.h
;
sourceTree
=
"<group>"
;
};
9A585C121CE65811001F20F0
/* BUYRequestOperation.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
BUYRequestOperation.m
;
sourceTree
=
"<group>"
;
};
9A6B03781CDA5D4F0054C26E
/* BUYAccountCredentialsTests.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
BUYAccountCredentialsTests.m
;
sourceTree
=
"<group>"
;
};
9A6C1D3F1D07485F00BFF4F9
/* BUYStatusOperation.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
BUYStatusOperation.h
;
sourceTree
=
"<group>"
;
};
9A6C1D401D07485F00BFF4F9
/* BUYStatusOperation.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
BUYStatusOperation.m
;
sourceTree
=
"<group>"
;
};
9A6C1D431D0749FC00BFF4F9
/* BUYGroupOperation.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
BUYGroupOperation.h
;
sourceTree
=
"<group>"
;
};
9A6C1D441D0749FC00BFF4F9
/* BUYGroupOperation.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
BUYGroupOperation.m
;
sourceTree
=
"<group>"
;
};
9A7652C21CF487BD00220E4B
/* BUYOperationTests.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
BUYOperationTests.m
;
sourceTree
=
"<group>"
;
};
9A807E811CF74EBE00023160
/* BUYClient+Address.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
"BUYClient+Address.h"
;
sourceTree
=
"<group>"
;
};
9A807E821CF74EBE00023160
/* BUYClient+Address.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
"BUYClient+Address.m"
;
sourceTree
=
"<group>"
;
};
...
...
@@ -826,6 +831,10 @@
9A0B0CAB1CEDDBD80037D68F
/* Aggregate */
=
{
isa
=
PBXGroup
;
children
=
(
9A6C1D431D0749FC00BFF4F9
/* BUYGroupOperation.h */
,
9A6C1D441D0749FC00BFF4F9
/* BUYGroupOperation.m */
,
9A6C1D3F1D07485F00BFF4F9
/* BUYStatusOperation.h */
,
9A6C1D401D07485F00BFF4F9
/* BUYStatusOperation.m */
,
9A0B0CA51CED0A860037D68F
/* BUYCheckoutOperation.h */
,
9A0B0CA61CED0A860037D68F
/* BUYCheckoutOperation.m */
,
);
...
...
@@ -1064,6 +1073,7 @@
84B0A7311CE10ED900253EB0
/* BUYApplePayPaymentProvider.h in Headers */
,
9019313C1BC5B9BC00D1134E
/* BUYShop.h in Headers */
,
9019313D1BC5B9BC00D1134E
/* BUYShippingRate.h in Headers */
,
9A6C1D451D0749FC00BFF4F9
/* BUYGroupOperation.h in Headers */
,
9019313E1BC5B9BC00D1134E
/* BUYApplePayAdditions.h in Headers */
,
9A807E841CF74EBE00023160
/* BUYClient+Address.h in Headers */
,
84980F531CB7616900CFAB58
/* BUYDecimalNumberTransformer.h in Headers */
,
...
...
@@ -1086,6 +1096,7 @@
84980F331CB75C2900CFAB58
/* NSEntityDescription+BUYAdditions.h in Headers */
,
901931491BC5B9BC00D1134E
/* BUYGiftCard.h in Headers */
,
84CD7C2E1CC65D5A00B6EE61
/* _BUYCheckoutAttribute.h in Headers */
,
9A6C1D411D07485F00BFF4F9
/* BUYStatusOperation.h in Headers */
,
901931501BC5B9BC00D1134E
/* BUYOrder.h in Headers */
,
84D9154C1CC03F1600D334FB
/* BUYManagedObject.h in Headers */
,
84DD12CF1CC6401400A2442D
/* BUYCustomer.h in Headers */
,
...
...
@@ -1303,6 +1314,7 @@
84D73C091CDD194D000F978A
/* BUYAddress.m in Sources */
,
901931031BC5B9BC00D1134E
/* BUYOptionValue.m in Sources */
,
84980F551CB7616900CFAB58
/* BUYDecimalNumberTransformer.m in Sources */
,
9A6C1D421D07485F00BFF4F9
/* BUYStatusOperation.m in Sources */
,
901931041BC5B9BC00D1134E
/* BUYApplePayAdditions.m in Sources */
,
901931061BC5B9BC00D1134E
/* BUYDiscount.m in Sources */
,
9A0B0C5D1CE662EC0037D68F
/* BUYRequestOperation.m in Sources */
,
...
...
@@ -1324,6 +1336,7 @@
84DD12C81CC63FEE00A2442D
/* _BUYMaskedCreditCard.m in Sources */
,
84DD12AC1CC63FE600A2442D
/* _BUYProduct.m in Sources */
,
84DD12A21CC63FE600A2442D
/* _BUYImageLink.m in Sources */
,
9A6C1D461D0749FC00BFF4F9
/* BUYGroupOperation.m in Sources */
,
841ADE1A1CB6C942000004B0
/* NSRegularExpression+BUYAdditions.m in Sources */
,
8498DCBE1CDD1FA400BD12A8
/* BUYAccountCredentials.m in Sources */
,
9032F2DD1BE9457A00BB9EEF
/* BUYCheckoutAttribute.m in Sources */
,
...
...
@@ -1665,38 +1678,6 @@
};
name
=
"Debug-core-data"
;
};
B2AE98381CED035700FB0C5D
/* Debug-core-data */
=
{
isa
=
XCBuildConfiguration
;
buildSettings
=
{
ALWAYS_SEARCH_USER_PATHS
=
NO
;
CODE_SIGN_IDENTITY
=
"iPhone Developer"
;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]"
=
"iPhone Developer"
;
CURRENT_PROJECT_VERSION
=
2.0
;
DEBUG_INFORMATION_FORMAT
=
"dwarf-with-dsym"
;
DEFINES_MODULE
=
YES
;
DYLIB_COMPATIBILITY_VERSION
=
1
;
DYLIB_CURRENT_VERSION
=
1
;
DYLIB_INSTALL_NAME_BASE
=
"@rpath"
;
GCC_NO_COMMON_BLOCKS
=
YES
;
GCC_PREPROCESSOR_DEFINITIONS
=
(
"DEBUG=1"
,
"$(inherited)"
,
);
INFOPLIST_FILE
=
"$(SRCROOT)/Mobile Buy SDK/Info.plist"
;
INSTALL_PATH
=
"$(LOCAL_LIBRARY_DIR)/Frameworks"
;
IPHONEOS_DEPLOYMENT_TARGET
=
8.0
;
LD_RUNPATH_SEARCH_PATHS
=
"$(inherited) @executable_path/Frameworks @loader_path/Frameworks"
;
MACH_O_TYPE
=
staticlib
;
MODULEMAP_FILE
=
"${PROJECT_DIR}/Mobile Buy SDK/Static Framework/Buy.modulemap"
;
PRODUCT_BUNDLE_IDENTIFIER
=
"com.shopify.$(PRODUCT_NAME:rfc1034identifier)"
;
PRODUCT_NAME
=
Buy
;
SKIP_INSTALL
=
YES
;
TARGETED_DEVICE_FAMILY
=
"1,2"
;
VERSIONING_SYSTEM
=
"apple-generic"
;
VERSION_INFO_PREFIX
=
""
;
};
name
=
"Debug-core-data"
;
};
B2AE98391CED035700FB0C5D
/* Debug-core-data */
=
{
isa
=
XCBuildConfiguration
;
buildSettings
=
{
...
...
@@ -1814,35 +1795,6 @@
};
name
=
"Release-core-data"
;
};
B2AE98441CED036F00FB0C5D
/* Release-core-data */
=
{
isa
=
XCBuildConfiguration
;
buildSettings
=
{
ALWAYS_SEARCH_USER_PATHS
=
NO
;
CODE_SIGN_IDENTITY
=
"iPhone Developer"
;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]"
=
"iPhone Developer"
;
COPY_PHASE_STRIP
=
NO
;
CURRENT_PROJECT_VERSION
=
2.0
;
DEBUG_INFORMATION_FORMAT
=
"dwarf-with-dsym"
;
DEFINES_MODULE
=
YES
;
DYLIB_COMPATIBILITY_VERSION
=
1
;
DYLIB_CURRENT_VERSION
=
1
;
DYLIB_INSTALL_NAME_BASE
=
"@rpath"
;
GCC_NO_COMMON_BLOCKS
=
YES
;
INFOPLIST_FILE
=
"$(SRCROOT)/Mobile Buy SDK/Info.plist"
;
INSTALL_PATH
=
"$(LOCAL_LIBRARY_DIR)/Frameworks"
;
IPHONEOS_DEPLOYMENT_TARGET
=
8.0
;
LD_RUNPATH_SEARCH_PATHS
=
"$(inherited) @executable_path/Frameworks @loader_path/Frameworks"
;
MACH_O_TYPE
=
staticlib
;
MODULEMAP_FILE
=
"${PROJECT_DIR}/Mobile Buy SDK/Static Framework/Buy.modulemap"
;
PRODUCT_BUNDLE_IDENTIFIER
=
"com.shopify.$(PRODUCT_NAME:rfc1034identifier)"
;
PRODUCT_NAME
=
Buy
;
SKIP_INSTALL
=
YES
;
TARGETED_DEVICE_FAMILY
=
"1,2"
;
VERSIONING_SYSTEM
=
"apple-generic"
;
VERSION_INFO_PREFIX
=
""
;
};
name
=
"Release-core-data"
;
};
B2AE98451CED036F00FB0C5D
/* Release-core-data */
=
{
isa
=
XCBuildConfiguration
;
buildSettings
=
{
...
...
@@ -1872,65 +1824,6 @@
};
name
=
"Release-core-data"
;
};
BE9A64421B503C2F0033E558
/* Debug */
=
{
isa
=
XCBuildConfiguration
;
buildSettings
=
{
CODE_SIGN_IDENTITY
=
"iPhone Developer"
;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]"
=
"iPhone Developer"
;
CURRENT_PROJECT_VERSION
=
2.0
;
DEBUG_INFORMATION_FORMAT
=
"dwarf-with-dsym"
;
DEFINES_MODULE
=
YES
;
DYLIB_COMPATIBILITY_VERSION
=
1
;
DYLIB_CURRENT_VERSION
=
1
;
DYLIB_INSTALL_NAME_BASE
=
"@rpath"
;
GCC_NO_COMMON_BLOCKS
=
YES
;
GCC_PREPROCESSOR_DEFINITIONS
=
(
"DEBUG=1"
,
"$(inherited)"
,
);
INFOPLIST_FILE
=
"$(SRCROOT)/Mobile Buy SDK/Info.plist"
;
INSTALL_PATH
=
"$(LOCAL_LIBRARY_DIR)/Frameworks"
;
IPHONEOS_DEPLOYMENT_TARGET
=
8.0
;
LD_RUNPATH_SEARCH_PATHS
=
"$(inherited) @executable_path/Frameworks @loader_path/Frameworks"
;
MACH_O_TYPE
=
staticlib
;
MODULEMAP_FILE
=
"${PROJECT_DIR}/Mobile Buy SDK/Static Framework/Buy.modulemap"
;
PRODUCT_BUNDLE_IDENTIFIER
=
"com.shopify.$(PRODUCT_NAME:rfc1034identifier)"
;
PRODUCT_NAME
=
Buy
;
SKIP_INSTALL
=
YES
;
TARGETED_DEVICE_FAMILY
=
"1,2"
;
VERSIONING_SYSTEM
=
"apple-generic"
;
VERSION_INFO_PREFIX
=
""
;
};
name
=
Debug
;
};
BE9A64431B503C2F0033E558
/* Release */
=
{
isa
=
XCBuildConfiguration
;
buildSettings
=
{
CODE_SIGN_IDENTITY
=
"iPhone Developer"
;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]"
=
"iPhone Developer"
;
COPY_PHASE_STRIP
=
NO
;
CURRENT_PROJECT_VERSION
=
2.0
;
DEBUG_INFORMATION_FORMAT
=
"dwarf-with-dsym"
;
DEFINES_MODULE
=
YES
;
DYLIB_COMPATIBILITY_VERSION
=
1
;
DYLIB_CURRENT_VERSION
=
1
;
DYLIB_INSTALL_NAME_BASE
=
"@rpath"
;
GCC_NO_COMMON_BLOCKS
=
YES
;
INFOPLIST_FILE
=
"$(SRCROOT)/Mobile Buy SDK/Info.plist"
;
INSTALL_PATH
=
"$(LOCAL_LIBRARY_DIR)/Frameworks"
;
IPHONEOS_DEPLOYMENT_TARGET
=
8.0
;
LD_RUNPATH_SEARCH_PATHS
=
"$(inherited) @executable_path/Frameworks @loader_path/Frameworks"
;
MACH_O_TYPE
=
staticlib
;
MODULEMAP_FILE
=
"${PROJECT_DIR}/Mobile Buy SDK/Static Framework/Buy.modulemap"
;
PRODUCT_BUNDLE_IDENTIFIER
=
"com.shopify.$(PRODUCT_NAME:rfc1034identifier)"
;
PRODUCT_NAME
=
Buy
;
SKIP_INSTALL
=
YES
;
TARGETED_DEVICE_FAMILY
=
"1,2"
;
VERSIONING_SYSTEM
=
"apple-generic"
;
VERSION_INFO_PREFIX
=
""
;
};
name
=
Release
;
};
F773742C19C770CB0039681C
/* Debug */
=
{
isa
=
XCBuildConfiguration
;
buildSettings
=
{
...
...
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient+Checkout.m
View file @
726b6580
...
...
@@ -29,6 +29,7 @@
#import "BUYClient+Routing.h"
#import "BUYRequestOperation.h"
#import "BUYCheckoutOperation.h"
#import "BUYStatusOperation.h"
#import "BUYAddress.h"
#import "BUYCheckout.h"
#import "BUYGiftCard.h"
...
...
@@ -104,7 +105,7 @@
-
(
BUYOperation
*
)
completeCheckoutWithToken
:(
NSString
*
)
checkoutToken
paymentToken
:(
id
<
BUYPaymentToken
>
)
paymentToken
completion
:(
BUYDataCheckoutBlock
)
block
{
BUYCheckoutOperation
*
operation
=
[
[
BUYCheckoutOperation
alloc
]
init
WithClient
:
self
checkoutToken
:
checkoutToken
token
:
paymentToken
completion
:
block
];
BUYCheckoutOperation
*
operation
=
[
BUYCheckoutOperation
operation
WithClient
:
self
checkoutToken
:
checkoutToken
token
:
paymentToken
completion
:
block
];
[
self
startOperation
:
operation
];
return
operation
;
}
...
...
@@ -152,6 +153,15 @@
}];
}
-
(
NSOperation
*
)
pollCompletionStatusAndGetCheckoutWithToken
:(
NSString
*
)
token
start
:(
BOOL
)
start
completion
:(
BUYDataCheckoutBlock
)
block
{
BUYStatusOperation
*
operation
=
[
BUYStatusOperation
operationWithClient
:
self
checkoutToken
:
token
completion
:
block
];
if
(
start
)
{
[
self
startOperation
:
operation
];
}
return
operation
;
}
-
(
NSOperation
*
)
postCheckout
:(
NSDictionary
*
)
checkoutJSON
completion
:(
BUYDataCheckoutBlock
)
block
{
return
[
self
postRequestForURL
:[
self
urlForCheckouts
]
object
:
checkoutJSON
completionHandler
:^
(
NSDictionary
*
json
,
NSHTTPURLResponse
*
response
,
NSError
*
error
)
{
...
...
Mobile Buy SDK/Mobile Buy SDK/Data/BUYClient+Internal.h
View file @
726b6580
...
...
@@ -35,6 +35,10 @@ typedef void (^BUYClientRequestJSONCompletion)(NSDictionary *json, NSHTTPURLResp
@interface
BUYClient
(
Internal
)
@property
(
nonatomic
,
strong
)
NSOperationQueue
*
requestQueue
;
-
(
NSOperation
*
)
pollCompletionStatusAndGetCheckoutWithToken
:(
NSString
*
)
token
start
:(
BOOL
)
start
completion
:(
BUYDataCheckoutBlock
)
block
;
-
(
NSOperation
*
)
getRequestForURL
:(
NSURL
*
)
url
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
-
(
NSOperation
*
)
deleteRequestForURL
:(
NSURL
*
)
url
completionHandler
:(
BUYClientRequestJSONCompletion
)
completionHandler
;
...
...
Mobile Buy SDK/Mobile Buy SDK/Operations/BUYCheckoutOperation.h
View file @
726b6580
...
...
@@ -24,7 +24,8 @@
// THE SOFTWARE.
//
#import <Buy/BUYOperation.h>
#import <Buy/BUYGroupOperation.h>
#import <Buy/BUYStatusOperation.h>
NS_ASSUME_NONNULL_BEGIN
@class
BUYClient
;
...
...
@@ -32,11 +33,7 @@ NS_ASSUME_NONNULL_BEGIN
@protocol
BUYPaymentToken
;
typedef
void
(
^
BUYCheckoutOperationCompletion
)(
BUYCheckout
*
_Nullable
checkout
,
NSError
*
_Nullable
error
);
@interface
BUYCheckoutOperation
:
BUYOperation
@property
(
strong
,
nonatomic
,
readonly
,
nonnull
)
BUYClient
*
client
;
@interface
BUYCheckoutOperation
:
BUYGroupOperation
+
(
instancetype
)
operationWithClient
:(
BUYClient
*
)
client
checkoutToken
:(
NSString
*
)
checkoutToken
token
:(
id
<
BUYPaymentToken
>
)
token
completion
:(
BUYCheckoutOperationCompletion
)
completion
;
-
(
instancetype
)
initWithClient
:(
BUYClient
*
)
client
checkoutToken
:(
NSString
*
)
checkoutToken
token
:(
id
<
BUYPaymentToken
>
)
token
completion
:(
BUYCheckoutOperationCompletion
)
completion
;
...
...
Mobile Buy SDK/Mobile Buy SDK/Operations/BUYCheckoutOperation.m
View file @
726b6580
...
...
@@ -29,15 +29,15 @@
#import "BUYClient+Internal.h"
#import "BUYPaymentToken.h"
#import "BUYRequestOperation.h"
#import "BUYStatusOperation.h"
@interface
BUYCheckoutOperation
()
@property
(
strong
,
nonatomic
,
readonly
)
BUYClient
*
client
;
@property
(
strong
,
nonatomic
,
readonly
)
NSString
*
checkoutToken
;
@property
(
strong
,
nonatomic
,
readonly
)
id
<
BUYPaymentToken
>
token
;
@property
(
strong
,
nonatomic
,
readonly
)
BUYCheckoutOperationCompletion
completion
;
@property
(
strong
,
atomic
)
NSArray
*
operations
;
@end
@implementation
BUYCheckoutOperation
...
...
@@ -51,7 +51,7 @@
-
(
instancetype
)
initWithClient
:(
BUYClient
*
)
client
checkoutToken
:(
NSString
*
)
checkoutToken
token
:(
id
<
BUYPaymentToken
>
)
token
completion
:(
BUYCheckoutOperationCompletion
)
completion
{
self
=
[
super
init
];
self
=
[
super
init
WithRequestQueue
:
client
.
requestQueue
operations
:
nil
];
if
(
self
)
{
_client
=
client
;
_token
=
token
;
...
...
@@ -63,25 +63,23 @@
#pragma mark - Finishing -
-
(
void
)
finishWith
Checkout
:(
BUYCheckout
*
)
checkou
t
-
(
void
)
finishWith
Object
:(
id
)
objec
t
{
[
super
finishWithObject
:
object
];
if
(
self
.
cancelled
)
{
return
;
}
[
self
finishExecution
];
self
.
completion
(
checkout
,
nil
);
self
.
completion
(
object
,
nil
);
}
-
(
void
)
finishWithError
:(
NSError
*
)
error
{
[
super
finishWithError
:
error
];
if
(
self
.
cancelled
)
{
return
;
}
[
self
cancelAllOperations
];
[
self
finishExecution
];
self
.
completion
(
nil
,
error
);
}
...
...
@@ -93,44 +91,12 @@
return
;
}
[
super
startExecution
];
NSOperation
*
beginOperation
=
[
self
createBeginOperation
];
NSOperation
*
pollOperation
=
[
self
createPollOperation
];
NSOperation
*
getOperation
=
[
self
createGetOperation
];
[
pollOperation
addDependency
:
beginOperation
];
[
getOperation
addDependency
:
pollOperation
];
self
.
operations
=
@[
beginOperation
,
pollOperation
,
getOperation
,
[
self
createBeginOperation
],
[
self
createStatusOperation
],
];
[
self
startAllOperations
];
}
-
(
void
)
cancelExecution
{
[
super
cancelExecution
];
[
self
cancelAllOperations
];
}
#pragma mark - Start / Stop -
-
(
void
)
startAllOperations
{
for
(
BUYRequestOperation
*
operation
in
self
.
operations
)
{
[
self
.
client
startOperation
:
operation
];
}
}
-
(
void
)
cancelAllOperations
{
for
(
BUYRequestOperation
*
operation
in
self
.
operations
)
{
[
operation
cancel
];
}
[
super
startExecution
];
}
#pragma mark - Operations -
...
...
@@ -144,25 +110,11 @@
}];
}
-
(
NSOperation
*
)
createPollOperation
{
BUYRequestOperation
*
operation
=
(
BUYRequestOperation
*
)[
self
.
client
getCompletionStatusOfCheckoutWithToken
:
self
.
checkoutToken
start
:
NO
completion
:^
(
BUYStatus
status
,
NSError
*
error
)
{
if
(
status
!=
BUYStatusComplete
)
{
[
self
finishWithError
:
error
];
}
}];
operation
.
pollingHandler
=
^
BOOL
(
NSDictionary
*
json
,
NSHTTPURLResponse
*
response
,
NSError
*
error
)
{
return
response
.
statusCode
==
BUYStatusProcessing
;
};
return
operation
;
}
-
(
NSOperation
*
)
createGetOperation
-
(
NSOperation
*
)
createStatusOperation
{
return
[
self
.
client
g
etCheckoutWithToken
:
self
.
checkoutToken
start
:
NO
completion
:^
(
BUYCheckout
*
checkout
,
NSError
*
error
)
{
return
[
self
.
client
pollCompletionStatusAndG
etCheckoutWithToken
:
self
.
checkoutToken
start
:
NO
completion
:^
(
BUYCheckout
*
checkout
,
NSError
*
error
)
{
if
(
checkout
)
{
[
self
finishWith
Checkou
t
:
checkout
];
[
self
finishWith
Objec
t
:
checkout
];
}
else
{
[
self
finishWithError
:
error
];
}
...
...
Mobile Buy SDK/Mobile Buy SDK/Operations/BUYGroupOperation.h
0 → 100644
View file @
726b6580
//
// BUYGroupOperation.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"
@interface
BUYGroupOperation
:
BUYOperation
@property
(
strong
,
atomic
)
NSArray
<
NSOperation
*>
*
operations
;
+
(
instancetype
)
groupOperationWithRequestQueue
:(
NSOperationQueue
*
)
queue
operations
:(
NSArray
<
NSOperation
*>
*
)
operations
;
-
(
instancetype
)
initWithRequestQueue
:(
NSOperationQueue
*
)
queue
operations
:(
NSArray
<
NSOperation
*>
*
)
operations
;
-
(
void
)
finishWithObject
:(
id
)
object
;
-
(
void
)
finishWithError
:(
NSError
*
)
error
;
@end
Mobile Buy SDK/Mobile Buy SDK/Operations/BUYGroupOperation.m
0 → 100644
View file @
726b6580
//
// BUYGroupOperation.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 "BUYGroupOperation.h"
#import "NSArray+BUYAdditions.h"
@interface
BUYGroupOperation
()
@property
(
weak
,
nonatomic
)
NSOperationQueue
*
queue
;
@end
@implementation
BUYGroupOperation
#pragma mark - Init -
+
(
instancetype
)
groupOperationWithRequestQueue
:(
NSOperationQueue
*
)
queue
operations
:(
NSArray
<
NSOperation
*>
*
)
operations
{
return
[[[
self
class
]
alloc
]
initWithRequestQueue
:
queue
operations
:
operations
];
}
-
(
instancetype
)
initWithRequestQueue
:(
NSOperationQueue
*
)
queue
operations
:(
NSArray
<
NSOperation
*>
*
)
operations
{
self
=
[
super
init
];
if
(
self
)
{
_queue
=
queue
;
self
.
operations
=
operations
;
}
return
self
;
}
#pragma mark - Finishing -
-
(
void
)
finishWithObject
:(
id
)
object
{
if
(
self
.
cancelled
)
{
return
;
}
[
self
finishExecution
];
}
-
(
void
)
finishWithError
:(
NSError
*
)
error
{
if
(
self
.
cancelled
)
{
return
;
}
[
self
cancelAllOperations
];
[
self
finishExecution
];
}
#pragma mark - Execution -
-
(
void
)
startExecution
{
if
(
self
.
cancelled
)
{
return
;
}
[
super
startExecution
];
[
self
linkDependencies
];
[
self
startAllOperations
];
}
-
(
void
)
cancelExecution
{
[
super
cancelExecution
];
[
self
cancelAllOperations
];
}
#pragma mark - Dependencies -
-
(
void
)
linkDependencies
{
NSArray
*
tail
=
[
self
.
operations
buy_tail
];
if
(
tail
.
count
>
0
)
{
NSOperation
*
former
=
self
.
operations
.
firstObject
;
for
(
NSOperation
*
latter
in
tail
)
{
[
latter
addDependency
:
former
];
former
=
latter
;
}
}
}
#pragma mark - Start / Stop -
-
(
void
)
startAllOperations
{
for
(
NSOperation
*
operation
in
self
.
operations
)
{
[
self
.
queue
addOperation
:
operation
];
}
}
-
(
void
)
cancelAllOperations
{
for
(
NSOperation
*
operation
in
self
.
operations
)
{
[
operation
cancel
];
}
}
@end
Mobile Buy SDK/Mobile Buy SDK/Operations/BUYStatusOperation.h
0 → 100644
View file @
726b6580
//
// BUYStatusOperation.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 "BUYGroupOperation.h"
NS_ASSUME_NONNULL_BEGIN
@class
BUYCheckout
;
@class
BUYClient
;
typedef
void
(
^
BUYCheckoutOperationCompletion
)(
BUYCheckout
*
_Nullable
checkout
,
NSError
*
_Nullable
error
);
@interface
BUYStatusOperation
:
BUYGroupOperation
+
(
instancetype
)
operationWithClient
:(
BUYClient
*
)
client
checkoutToken
:(
NSString
*
)
checkoutToken
completion
:(
BUYCheckoutOperationCompletion
)
completion
;
-
(
instancetype
)
initWithClient
:(
BUYClient
*
)
client
checkoutToken
:(
NSString
*
)
checkoutToken
completion
:(
BUYCheckoutOperationCompletion
)
completion
;
@end
NS_ASSUME_NONNULL_END
Mobile Buy SDK/Mobile Buy SDK/Operations/BUYStatusOperation.m
0 → 100644
View file @
726b6580
//
// BUYStatusOperation.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 "BUYStatusOperation.h"
#import "BUYClient+Checkout.h"
#import "BUYClient+Internal.h"
#import "BUYRequestOperation.h"
@interface
BUYStatusOperation
()
@property
(
strong
,
nonatomic
,
readonly
)
BUYClient
*
client
;
@property
(
strong
,
nonatomic
,
readonly
)
NSString
*
checkoutToken
;
@property
(
strong
,
nonatomic
,
readonly
)
BUYCheckoutOperationCompletion
completion
;
@end
@implementation
BUYStatusOperation
#pragma mark - Init -
+
(
instancetype
)
operationWithClient
:(
BUYClient
*
)
client
checkoutToken
:(
NSString
*
)
checkoutToken
completion
:(
BUYCheckoutOperationCompletion
)
completion
{
return
[[[
self
class
]
alloc
]
initWithClient
:
client
checkoutToken
:
checkoutToken
completion
:
completion
];
}
-
(
instancetype
)
initWithClient
:(
BUYClient
*
)
client
checkoutToken
:(
NSString
*
)
checkoutToken
completion
:(
BUYCheckoutOperationCompletion
)
completion
{
self
=
[
super
initWithRequestQueue
:
client
.
requestQueue
operations
:
nil
];
if
(
self
)
{
_client
=
client
;
_completion
=
completion
;
_checkoutToken
=
checkoutToken
;
}
return
self
;
}
#pragma mark - Execution -
-
(
void
)
startExecution
{
if
(
self
.
cancelled
)
{
return
;
}
self
.
operations
=
@[
[
self
createPollOperation
],
[
self
createGetOperation
],
];
[
super
startExecution
];
}
#pragma mark - Finishing -
-
(
void
)
finishWithObject
:
(
id
)
object
{
[
super
finishWithObject
:
object
];
if
(
self
.
cancelled
)
{
return
;
}
self
.
completion
(
object
,
nil
);
}
-
(
void
)
finishWithError
:
(
NSError
*
)
error
{
[
super
finishWithError
:
error
];
if
(
self
.
cancelled
)
{
return
;
}
self
.
completion
(
nil
,
error
);
}
#pragma mark - Operations -
-
(
NSOperation
*
)
createPollOperation
{
BUYRequestOperation
*
operation
=
(
BUYRequestOperation
*
)[
self
.
client
getCompletionStatusOfCheckoutWithToken
:
self
.
checkoutToken
start
:
NO
completion
:^
(
BUYStatus
status
,
NSError
*
error
)
{
if
(
status
!=
BUYStatusComplete
)
{
[
self
finishWithError
:
error
];
}
}];
operation
.
pollingHandler
=
^
BOOL
(
NSDictionary
*
json
,
NSHTTPURLResponse
*
response
,
NSError
*
error
)
{
return
response
.
statusCode
==
BUYStatusProcessing
;
};
return
operation
;
}
-
(
NSOperation
*
)
createGetOperation
{
return
[
self
.
client
getCheckoutWithToken
:
self
.
checkoutToken
start
:
NO
completion
:^
(
BUYCheckout
*
checkout
,
NSError
*
error
)
{
if
(
checkout
)
{
[
self
finishWithObject
:
checkout
];
}
else
{
[
self
finishWithError
:
error
];
}
}];
}
@end
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