Browse Source

added extension for datarequest

pull/1/head
gme_2 6 years ago
parent
commit
063457ab61
  1. 4
      GMERemittance.xcodeproj/project.pbxproj
  2. 63
      GMERemittance/Extension/DataRequestExtension.swift

4
GMERemittance.xcodeproj/project.pbxproj

@ -231,6 +231,7 @@
D962231B212BE4CA00B7A115 /* TablePickerWithImageTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D962231A212BE4CA00B7A115 /* TablePickerWithImageTableViewCell.swift */; };
D962231E212C126500B7A115 /* ExchangeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D962231D212C126500B7A115 /* ExchangeModel.swift */; };
D9638A02212CF30C00B48742 /* CountryFlag.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9638A01212CF30C00B48742 /* CountryFlag.swift */; };
D96848C7212D3A7400EF12B1 /* DataRequestExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D96848C6212D3A7400EF12B1 /* DataRequestExtension.swift */; };
EBFC1719B80F43F88EB01F69 /* Pods_GMERemittanceTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0380AEB198AADC0BC4394515 /* Pods_GMERemittanceTests.framework */; };
FF29296C212B8DFE00FF5BAC /* ExchangeRateCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF29296B212B8DFE00FF5BAC /* ExchangeRateCollectionViewCell.swift */; };
FFD19C7C2112E8F20073689F /* Pods_GMERemittance.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFD19C7B2112E8F20073689F /* Pods_GMERemittance.framework */; };
@ -493,6 +494,7 @@
D962231A212BE4CA00B7A115 /* TablePickerWithImageTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TablePickerWithImageTableViewCell.swift; sourceTree = "<group>"; };
D962231D212C126500B7A115 /* ExchangeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExchangeModel.swift; sourceTree = "<group>"; };
D9638A01212CF30C00B48742 /* CountryFlag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountryFlag.swift; sourceTree = "<group>"; };
D96848C6212D3A7400EF12B1 /* DataRequestExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataRequestExtension.swift; sourceTree = "<group>"; };
E4028C5A57499BB54764190C /* Pods_GMERemittanceUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GMERemittanceUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
FF29296B212B8DFE00FF5BAC /* ExchangeRateCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExchangeRateCollectionViewCell.swift; sourceTree = "<group>"; };
FFD19C7B2112E8F20073689F /* Pods_GMERemittance.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pods_GMERemittance.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@ -628,6 +630,7 @@
04546C462032E324007EFE15 /* CharacterExtension.swift */,
0477E2A420492EDA00B02377 /* LabelExtension.swift */,
D962230B212BD7A100B7A115 /* ArrayExtension.swift */,
D96848C6212D3A7400EF12B1 /* DataRequestExtension.swift */,
);
path = Extension;
sourceTree = "<group>";
@ -1556,6 +1559,7 @@
D9622316212BE3DC00B7A115 /* TablePickerTableViewCell.swift in Sources */,
043BE859204CF3A200221D12 /* MoneyRequestTableViewCell.swift in Sources */,
0496B8481FE7DFA20044810E /* RestApiManager.swift in Sources */,
D96848C7212D3A7400EF12B1 /* DataRequestExtension.swift in Sources */,
9F1F7A5C1FF2146000A4DD82 /* ReviewViewController.swift in Sources */,
0430986E2029FBA300821C70 /* TextFieldExtension.swift in Sources */,
04BED1382015B47800B4CEB7 /* KYCModel.swift in Sources */,

63
GMERemittance/Extension/DataRequestExtension.swift

@ -0,0 +1,63 @@
//
// DataRequestExtension.swift
// GMERemittance
//
// Created by gme_2 on 22/08/2018.
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
import Alamofire
import ObjectMapper
import SwiftyJSON
enum GMEResponseErrorCode: Int {
case timeOut = 0
case failure
case unknown
case deleted
}
enum GmeResponseOperationStatusCode: String {
case successfull = "Operation Successfull"
}
extension DataRequest {
func handle<T: Mappable>(success: @escaping (T) -> (), failure: @escaping (Error) -> ()) {
self.responseJSON { (response) -> Void in
switch response.result {
case .success(let value):
let json = JSON(value)
var dict: [String: Any?] = [:]
if let dct = json.dictionaryObject {
dict = ["data": dct]
}else {
dict = ["data": json.array]
}
let jsn = JSON(dict)
if let model: T = jsn.map() {
success(model)
}else if (response.response?.statusCode ?? -1) == 204 {
let error = self.makeError(message: "Response could not be mapped", code: GMEResponseErrorCode.unknown.rawValue)
// let error = self.makeError(message: "Response could not be mapped", code: GMEResponseErrorCode.unknown.rawValue)
failure(error)
}
else {
// while operation like delete reciepient, api only throws status code 204 with no response. for those case always check errorcode to verify if its is error or it is operation successfull message. The api was desighend this way. I am trying to make our occupation more easier. so while doint operations check if response is only statuscode. is so check the error
let error = self.makeError(message: GmeResponseOperationStatusCode.successfull.rawValue, code: GMEResponseErrorCode.deleted.rawValue)
failure(error)
}
case .failure(let error):
failure(error)
}
}
}
private func makeError(message: String, code: Int) -> Error {
let errorInfo: [String: Any]? = [NSLocalizedDescriptionKey: message]
return NSError.init(domain: "Network", code: code, userInfo: errorInfo)
}
}
Loading…
Cancel
Save