@@ -15,7 +15,7 @@ struct DeviceMetadata: Codable {
1515
1616class ApiClient {
1717 init ( apiKey: String ,
18- authProvider: AuthProvider ,
18+ authProvider: AuthProvider ? ,
1919 endPoint: String ,
2020 networkSession: NetworkSessionProtocol ,
2121 deviceMetadata: DeviceMetadata ) {
@@ -54,13 +54,14 @@ class ApiClient {
5454
5555 // MARK: - Private
5656
57- private func createRequestCreator( ) -> RequestCreator {
57+ private func createRequestCreator( ) -> Result < RequestCreator , IterableError > {
5858 guard let authProvider = authProvider else {
59- fatalError ( " authProvider is missing " )
59+ return . failure ( IterableError . general ( description : " authProvider is missing " ) )
6060 }
6161
62- return RequestCreator ( apiKey: apiKey, auth: authProvider. auth, deviceMetadata: deviceMetadata)
62+ return . success ( RequestCreator ( apiKey: apiKey, auth: authProvider. auth, deviceMetadata: deviceMetadata) )
6363 }
64+
6465
6566 private func createIterableHeaders( ) -> [ String : String ] {
6667 var headers = [ JsonKey . contentType. jsonKey: JsonValue . applicationJson. jsonStringValue,
@@ -85,52 +86,53 @@ class ApiClient {
8586// MARK: - API REQUEST CALLS
8687
8788extension 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)
10293 }
10394
10495 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)
10699 }
107100
108101 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)
110104 }
111105
112106 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)
114109 }
115110
116111 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)
118115 }
119116
120117 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)
122121 }
123122
124123 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)
130130 }
131131
132132 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)
134136 }
135137
136138 func updateSubscriptions( _ emailListIds: [ NSNumber ] ? = nil ,
@@ -139,40 +141,52 @@ extension ApiClient: ApiClientProtocol {
139141 subscribedMessageTypeIds: [ NSNumber ] ? = nil ,
140142 campaignId: NSNumber ? = nil ,
141143 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)
148151 }
149152
150153 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)
152156 }
153157
154158 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)
156162 }
157163
158164 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)
160169 }
161170
162171 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)
164174 }
165175
166176 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)
168179 }
169180
170181 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)
172184 }
173185
174186 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)
176190 }
177191}
178192
@@ -181,11 +195,14 @@ extension ApiClient: ApiClientProtocol {
181195extension ApiClient {
182196 // deprecated - will be removed in version 6.3.x or above
183197 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)
185200 }
186201
187202 // deprecated - will be removed in version 6.3.x or above
188203 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)
190207 }
191208}
0 commit comments