@@ -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,
@@ -86,40 +87,52 @@ class ApiClient {
86
87
87
88
extension ApiClient : ApiClientProtocol {
88
89
func register( registerTokenInfo: RegisterTokenInfo , notificationsEnabled: Bool ) -> Future < SendRequestValue , SendRequestError > {
89
- send ( iterableRequestResult: createRequestCreator ( ) . createRegisterTokenRequest ( registerTokenInfo: registerTokenInfo,
90
- notificationsEnabled: notificationsEnabled) )
90
+ let result = createRequestCreator ( ) . flatMap { $0. createRegisterTokenRequest ( registerTokenInfo: registerTokenInfo,
91
+ notificationsEnabled: notificationsEnabled) }
92
+ return send ( iterableRequestResult: result)
91
93
}
92
94
93
95
func updateUser( _ dataFields: [ AnyHashable : Any ] , mergeNestedObjects: Bool ) -> Future < SendRequestValue , SendRequestError > {
94
- 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)
95
99
}
96
100
97
101
func updateEmail( newEmail: String ) -> Future < SendRequestValue , SendRequestError > {
98
- send ( iterableRequestResult: createRequestCreator ( ) . createUpdateEmailRequest ( newEmail: newEmail) )
102
+ let result = createRequestCreator ( ) . flatMap { $0. createUpdateEmailRequest ( newEmail: newEmail) }
103
+ return send ( iterableRequestResult: result)
99
104
}
100
105
101
106
func getInAppMessages( _ count: NSNumber ) -> Future < SendRequestValue , SendRequestError > {
102
- send ( iterableRequestResult: createRequestCreator ( ) . createGetInAppMessagesRequest ( count) )
107
+ let result = createRequestCreator ( ) . flatMap { $0. createGetInAppMessagesRequest ( count) }
108
+ return send ( iterableRequestResult: result)
103
109
}
104
110
105
111
func disableDevice( forAllUsers allUsers: Bool , hexToken: String ) -> Future < SendRequestValue , SendRequestError > {
106
- 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)
107
115
}
108
116
109
117
func track( purchase total: NSNumber , items: [ CommerceItem ] , dataFields: [ AnyHashable : Any ] ? ) -> Future < SendRequestValue , SendRequestError > {
110
- 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)
111
121
}
112
122
113
123
func track( pushOpen campaignId: NSNumber , templateId: NSNumber ? , messageId: String , appAlreadyRunning: Bool , dataFields: [ AnyHashable : Any ] ? ) -> Future < SendRequestValue , SendRequestError > {
114
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackPushOpenRequest ( campaignId,
115
- templateId: templateId,
116
- messageId: messageId,
117
- appAlreadyRunning: appAlreadyRunning,
118
- 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)
119
130
}
120
131
121
132
func track( event eventName: String , dataFields: [ AnyHashable : Any ] ? ) -> Future < SendRequestValue , SendRequestError > {
122
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackEventRequest ( eventName, dataFields: dataFields) )
133
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackEventRequest ( eventName,
134
+ dataFields: dataFields) }
135
+ return send ( iterableRequestResult: result)
123
136
}
124
137
125
138
func updateSubscriptions( _ emailListIds: [ NSNumber ] ? = nil ,
@@ -128,40 +141,52 @@ extension ApiClient: ApiClientProtocol {
128
141
subscribedMessageTypeIds: [ NSNumber ] ? = nil ,
129
142
campaignId: NSNumber ? = nil ,
130
143
templateId: NSNumber ? = nil ) -> Future < SendRequestValue , SendRequestError > {
131
- send ( iterableRequestResult: createRequestCreator ( ) . createUpdateSubscriptionsRequest ( emailListIds,
132
- unsubscribedChannelIds: unsubscribedChannelIds,
133
- unsubscribedMessageTypeIds: unsubscribedMessageTypeIds,
134
- subscribedMessageTypeIds: subscribedMessageTypeIds,
135
- campaignId: campaignId,
136
- 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)
137
151
}
138
152
139
153
func track( inAppOpen inAppMessageContext: InAppMessageContext ) -> Future < SendRequestValue , SendRequestError > {
140
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInAppOpenRequest ( inAppMessageContext: inAppMessageContext) )
154
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackInAppOpenRequest ( inAppMessageContext: inAppMessageContext) }
155
+ return send ( iterableRequestResult: result)
141
156
}
142
157
143
158
func track( inAppClick inAppMessageContext: InAppMessageContext , clickedUrl: String ) -> Future < SendRequestValue , SendRequestError > {
144
- 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)
145
162
}
146
163
147
164
func track( inAppClose inAppMessageContext: InAppMessageContext , source: InAppCloseSource ? , clickedUrl: String ? ) -> Future < SendRequestValue , SendRequestError > {
148
- 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)
149
169
}
150
170
151
171
func track( inAppDelivery inAppMessageContext: InAppMessageContext ) -> Future < SendRequestValue , SendRequestError > {
152
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInAppDeliveryRequest ( inAppMessageContext: inAppMessageContext) )
172
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackInAppDeliveryRequest ( inAppMessageContext: inAppMessageContext) }
173
+ return send ( iterableRequestResult: result)
153
174
}
154
175
155
176
func track( inboxSession: IterableInboxSession ) -> Future < SendRequestValue , SendRequestError > {
156
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInboxSessionRequest ( inboxSession: inboxSession) )
177
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackInboxSessionRequest ( inboxSession: inboxSession) }
178
+ return send ( iterableRequestResult: result)
157
179
}
158
180
159
181
func inAppConsume( messageId: String ) -> Future < SendRequestValue , SendRequestError > {
160
- send ( iterableRequestResult: createRequestCreator ( ) . createInAppConsumeRequest ( messageId) )
182
+ let result = createRequestCreator ( ) . flatMap { $0. createInAppConsumeRequest ( messageId) }
183
+ return send ( iterableRequestResult: result)
161
184
}
162
185
163
186
func inAppConsume( inAppMessageContext: InAppMessageContext , source: InAppDeleteSource ? ) -> Future < SendRequestValue , SendRequestError > {
164
- 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)
165
190
}
166
191
}
167
192
@@ -170,11 +195,14 @@ extension ApiClient: ApiClientProtocol {
170
195
extension ApiClient {
171
196
// deprecated - will be removed in version 6.3.x or above
172
197
func track( inAppOpen messageId: String ) -> Future < SendRequestValue , SendRequestError > {
173
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInAppOpenRequest ( messageId) )
198
+ let value = createRequestCreator ( ) . flatMap { $0. createTrackInAppOpenRequest ( messageId) }
199
+ return send ( iterableRequestResult: value)
174
200
}
175
201
176
202
// deprecated - will be removed in version 6.3.x or above
177
203
func track( inAppClick messageId: String , clickedUrl: String ) -> Future < SendRequestValue , SendRequestError > {
178
- send ( iterableRequestResult: createRequestCreator ( ) . createTrackInAppClickRequest ( messageId, clickedUrl: clickedUrl) )
204
+ let result = createRequestCreator ( ) . flatMap { $0. createTrackInAppClickRequest ( messageId,
205
+ clickedUrl: clickedUrl) }
206
+ return send ( iterableRequestResult: result)
179
207
}
180
208
}
0 commit comments