@@ -15,7 +15,7 @@ struct DeviceMetadata: Codable {
15
15
16
16
class ApiClient {
17
17
init ( apiKey: String ,
18
- authProvider: AuthProvider ,
18
+ authProvider: AuthProvider ? ,
19
19
endPoint: String ,
20
20
networkSession: NetworkSessionProtocol ,
21
21
deviceMetadata: DeviceMetadata ) {
@@ -54,13 +54,14 @@ class ApiClient {
54
54
55
55
// MARK: - Private
56
56
57
- private func createRequestCreator( ) -> RequestCreator {
57
+ private func createRequestCreator( ) -> Result < RequestCreator , IterableError > {
58
58
guard let authProvider = authProvider else {
59
- fatalError ( " authProvider is missing " )
59
+ return . failure ( IterableError . general ( description : " authProvider is missing " ) )
60
60
}
61
61
62
- return RequestCreator ( apiKey: apiKey, auth: authProvider. auth, deviceMetadata: deviceMetadata)
62
+ return . success ( RequestCreator ( apiKey: apiKey, auth: authProvider. auth, deviceMetadata: deviceMetadata) )
63
63
}
64
+
64
65
65
66
private func createIterableHeaders( ) -> [ String : String ] {
66
67
var headers = [ JsonKey . contentType. jsonKey: JsonValue . applicationJson. jsonStringValue,
@@ -85,52 +86,53 @@ class ApiClient {
85
86
// MARK: - API REQUEST CALLS
86
87
87
88
extension ApiClient : ApiClientProtocol {
88
- func register( hexToken: String ,
89
- appName: String ,
90
- deviceId: String ,
91
- sdkVersion: String ? ,
92
- deviceAttributes: [ String : String ] ,
93
- pushServicePlatform: String ,
94
- notificationsEnabled: Bool ) -> Future < SendRequestValue , SendRequestError > {
95
- send ( iterableRequestResult: createRequestCreator ( ) . createRegisterTokenRequest ( hexToken: hexToken,
96
- appName: appName,
97
- deviceId: deviceId,
98
- sdkVersion: sdkVersion,
99
- deviceAttributes: deviceAttributes,
100
- pushServicePlatform: pushServicePlatform,
101
- notificationsEnabled: notificationsEnabled) )
89
+ func register( registerTokenInfo: RegisterTokenInfo , notificationsEnabled: Bool ) -> Future < SendRequestValue , SendRequestError > {
90
+ let result = createRequestCreator ( ) . flatMap { $0. createRegisterTokenRequest ( registerTokenInfo: registerTokenInfo,
91
+ notificationsEnabled: notificationsEnabled) }
92
+ return send ( iterableRequestResult: result)
102
93
}
103
94
104
95
func updateUser( _ dataFields: [ AnyHashable : Any ] , mergeNestedObjects: Bool ) -> Future < SendRequestValue , SendRequestError > {
105
- send ( iterableRequestResult: createRequestCreator ( ) . createUpdateUserRequest ( dataFields: dataFields, mergeNestedObjects: mergeNestedObjects) )
96
+ let result = createRequestCreator ( ) . flatMap { $0. createUpdateUserRequest ( dataFields: dataFields,
97
+ mergeNestedObjects: mergeNestedObjects) }
98
+ return send ( iterableRequestResult: result)
106
99
}
107
100
108
101
func updateEmail( newEmail: String ) -> Future < SendRequestValue , SendRequestError > {
109
- send ( iterableRequestResult: createRequestCreator ( ) . createUpdateEmailRequest ( newEmail: newEmail) )
102
+ let result = createRequestCreator ( ) . flatMap { $0. createUpdateEmailRequest ( newEmail: newEmail) }
103
+ return send ( iterableRequestResult: result)
110
104
}
111
105
112
106
func getInAppMessages( _ count: NSNumber ) -> Future < SendRequestValue , SendRequestError > {
113
- send ( iterableRequestResult: createRequestCreator ( ) . createGetInAppMessagesRequest ( count) )
107
+ let result = createRequestCreator ( ) . flatMap { $0. createGetInAppMessagesRequest ( count) }
108
+ return send ( iterableRequestResult: result)
114
109
}
115
110
116
111
func disableDevice( forAllUsers allUsers: Bool , hexToken: String ) -> Future < SendRequestValue , SendRequestError > {
117
- send ( iterableRequestResult: createRequestCreator ( ) . createDisableDeviceRequest ( forAllUsers: allUsers, hexToken: hexToken) )
112
+ let result = createRequestCreator ( ) . flatMap { $0. createDisableDeviceRequest ( forAllUsers: allUsers,
113
+ hexToken: hexToken) }
114
+ return send ( iterableRequestResult: result)
118
115
}
119
116
120
117
func track( purchase total: NSNumber , items: [ CommerceItem ] , dataFields: [ AnyHashable : Any ] ? ) -> Future < SendRequestValue , SendRequestError > {
121
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackPurchaseRequest ( total, items: items, dataFields: dataFields) )
118
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackPurchaseRequest ( total, items: items,
119
+ dataFields: dataFields) }
120
+ return send ( iterableRequestResult: result)
122
121
}
123
122
124
123
func track( pushOpen campaignId: NSNumber , templateId: NSNumber ? , messageId: String , appAlreadyRunning: Bool , dataFields: [ AnyHashable : Any ] ? ) -> Future < SendRequestValue , SendRequestError > {
125
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackPushOpenRequest ( campaignId,
126
- templateId: templateId,
127
- messageId: messageId,
128
- appAlreadyRunning: appAlreadyRunning,
129
- dataFields: dataFields) )
124
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackPushOpenRequest ( campaignId,
125
+ templateId: templateId,
126
+ messageId: messageId,
127
+ appAlreadyRunning: appAlreadyRunning,
128
+ dataFields: dataFields) }
129
+ return send ( iterableRequestResult: result)
130
130
}
131
131
132
132
func track( event eventName: String , dataFields: [ AnyHashable : Any ] ? ) -> Future < SendRequestValue , SendRequestError > {
133
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackEventRequest ( eventName, dataFields: dataFields) )
133
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackEventRequest ( eventName,
134
+ dataFields: dataFields) }
135
+ return send ( iterableRequestResult: result)
134
136
}
135
137
136
138
func updateSubscriptions( _ emailListIds: [ NSNumber ] ? = nil ,
@@ -139,40 +141,52 @@ extension ApiClient: ApiClientProtocol {
139
141
subscribedMessageTypeIds: [ NSNumber ] ? = nil ,
140
142
campaignId: NSNumber ? = nil ,
141
143
templateId: NSNumber ? = nil ) -> Future < SendRequestValue , SendRequestError > {
142
- send ( iterableRequestResult: createRequestCreator ( ) . createUpdateSubscriptionsRequest ( emailListIds,
143
- unsubscribedChannelIds: unsubscribedChannelIds,
144
- unsubscribedMessageTypeIds: unsubscribedMessageTypeIds,
145
- subscribedMessageTypeIds: subscribedMessageTypeIds,
146
- campaignId: campaignId,
147
- templateId: templateId) )
144
+ let result = createRequestCreator ( ) . flatMap { $0. createUpdateSubscriptionsRequest ( emailListIds,
145
+ unsubscribedChannelIds: unsubscribedChannelIds,
146
+ unsubscribedMessageTypeIds: unsubscribedMessageTypeIds,
147
+ subscribedMessageTypeIds: subscribedMessageTypeIds,
148
+ campaignId: campaignId,
149
+ templateId: templateId) }
150
+ return send ( iterableRequestResult: result)
148
151
}
149
152
150
153
func track( inAppOpen inAppMessageContext: InAppMessageContext ) -> Future < SendRequestValue , SendRequestError > {
151
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInAppOpenRequest ( inAppMessageContext: inAppMessageContext) )
154
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackInAppOpenRequest ( inAppMessageContext: inAppMessageContext) }
155
+ return send ( iterableRequestResult: result)
152
156
}
153
157
154
158
func track( inAppClick inAppMessageContext: InAppMessageContext , clickedUrl: String ) -> Future < SendRequestValue , SendRequestError > {
155
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInAppClickRequest ( inAppMessageContext: inAppMessageContext, clickedUrl: clickedUrl) )
159
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackInAppClickRequest ( inAppMessageContext: inAppMessageContext,
160
+ clickedUrl: clickedUrl) }
161
+ return send ( iterableRequestResult: result)
156
162
}
157
163
158
164
func track( inAppClose inAppMessageContext: InAppMessageContext , source: InAppCloseSource ? , clickedUrl: String ? ) -> Future < SendRequestValue , SendRequestError > {
159
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInAppCloseRequest ( inAppMessageContext: inAppMessageContext, source: source, clickedUrl: clickedUrl) )
165
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackInAppCloseRequest ( inAppMessageContext: inAppMessageContext,
166
+ source: source,
167
+ clickedUrl: clickedUrl) }
168
+ return send ( iterableRequestResult: result)
160
169
}
161
170
162
171
func track( inAppDelivery inAppMessageContext: InAppMessageContext ) -> Future < SendRequestValue , SendRequestError > {
163
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInAppDeliveryRequest ( inAppMessageContext: inAppMessageContext) )
172
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackInAppDeliveryRequest ( inAppMessageContext: inAppMessageContext) }
173
+ return send ( iterableRequestResult: result)
164
174
}
165
175
166
176
func track( inboxSession: IterableInboxSession ) -> Future < SendRequestValue , SendRequestError > {
167
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInboxSessionRequest ( inboxSession: inboxSession) )
177
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackInboxSessionRequest ( inboxSession: inboxSession) }
178
+ return send ( iterableRequestResult: result)
168
179
}
169
180
170
181
func inAppConsume( messageId: String ) -> Future < SendRequestValue , SendRequestError > {
171
- send ( iterableRequestResult: createRequestCreator ( ) . createInAppConsumeRequest ( messageId) )
182
+ let result = createRequestCreator ( ) . flatMap { $0. createInAppConsumeRequest ( messageId) }
183
+ return send ( iterableRequestResult: result)
172
184
}
173
185
174
186
func inAppConsume( inAppMessageContext: InAppMessageContext , source: InAppDeleteSource ? ) -> Future < SendRequestValue , SendRequestError > {
175
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInAppConsumeRequest ( inAppMessageContext: inAppMessageContext, source: source) )
187
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackInAppConsumeRequest ( inAppMessageContext: inAppMessageContext,
188
+ source: source) }
189
+ return send ( iterableRequestResult: result)
176
190
}
177
191
}
178
192
@@ -181,11 +195,14 @@ extension ApiClient: ApiClientProtocol {
181
195
extension ApiClient {
182
196
// deprecated - will be removed in version 6.3.x or above
183
197
func track( inAppOpen messageId: String ) -> Future < SendRequestValue , SendRequestError > {
184
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInAppOpenRequest ( messageId) )
198
+ let value = createRequestCreator ( ) . flatMap { $0. createTrackInAppOpenRequest ( messageId) }
199
+ return send ( iterableRequestResult: value)
185
200
}
186
201
187
202
// deprecated - will be removed in version 6.3.x or above
188
203
func track( inAppClick messageId: String , clickedUrl: String ) -> Future < SendRequestValue , SendRequestError > {
189
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInAppClickRequest ( messageId, clickedUrl: clickedUrl) )
204
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackInAppClickRequest ( messageId,
205
+ clickedUrl: clickedUrl) }
206
+ return send ( iterableRequestResult: result)
190
207
}
191
208
}
0 commit comments