Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extension ServerManager {
- func createTransactionFromReceipt(_ receipt: ReceiptTask, _ completion: @escaping (String)-> Void, error: @escaping (String)-> Void) {
- let parameter = receipt.getParameter()
- // "Constants.Network.EndPoint.CreateTransaction" equals "ios/createTransactionFromReceipt"
- self.post(endpoint: Constants.Network.EndPoint.CreateTransaction, parameters: parameter, completion: { (json) in
- let obj = json["success"].stringValue
- completion(obj)
- }, error: error)
- }
- }
- /* --------------------------------- */
- // "receipt.getParameter()" method
- class ReceiptTask {
- var receipt: String
- var userID: String?
- var testReceipt: Bool = true
- init(receipt: String) {
- self.receipt = receipt
- if let user = DataManager.shared.getUser() {
- self.userID = user.userID
- }
- }
- func getParameter() -> [String: String] {
- var parameter = ["receipt": receipt, "testReceipt": "true"]
- if let _ = userID {
- parameter.updateValue(userID!, forKey: "userID")
- }
- return parameter
- }
- }
- /* --------------------------------- */
- // "self.post" method
- internal func post(endpoint: String, parameters: Parameter, completion: @escaping SuccessHandler, error: @escaping FailureHandler) {
- request(method: .post, endpoint: endpoint, parameters: parameters, completion: completion, error: error)
- }
- /* --------------------------------- */
- // request(...) method
- private func request(method: HTTPMethod,
- endpoint: String,
- parameters: Parameter,
- completion: @escaping SuccessHandler,
- error: @escaping FailureHandler) {
- var apiUrl = ""
- var parametersForBody = parameters
- if method == .get && parameters != nil {
- // GET request url with params in url
- apiUrl = ApiAddress(endpoint: endpoint, param: parameters).getURLString()
- parametersForBody = nil
- } else {
- // POST request url
- // apiUrl = https://dev-api.enotes.com/api/2.0/?apiKey=108516db726ae161f7ee9365bb79ab81b59133cd
- apiUrl = ApiAddress(endpoint: endpoint).getURLString()
- }
- var header: HTTPHeaders = [:]
- if let cookie = DataManager.shared.getSessionCookie() {
- header.updateValue(cookie, forKey: "Cookie")
- }
- DataManager.shared.dataRequest = Alamofire.request(apiUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!, method: method, parameters: parametersForBody, encoding: JSONEncoding.default , headers: header)
- .authenticate(user: "ios", password: "ios")
- .responseJSON { (response:DataResponse<Any>) in
- guard response.response != nil else {
- error(Constants.Network.ErrorMessage.UNABLE_LOAD_DATA)
- return
- }
- guard let statusCode = response.response?.statusCode else {
- error(Constants.Network.ErrorMessage.NO_HTTP_STATUS_CODE)
- return
- }
- switch(statusCode) {
- case HttpStatusCode.unauthorized.statusCode:
- //Catch json error
- error(Constants.Network.ErrorMessage.UNAUTHORIZED)
- break
- case HttpStatusCode.ok.statusCode,
- HttpStatusCode.accepted.statusCode,
- HttpStatusCode.created.statusCode:
- let json = JSON(data: response.data!)
- completion(json)
- //TODO: catch possible "errors" json key-value
- break;
- default:
- let json = JSON(data: response.data!)
- if !json.isEmpty && json["errors"].exists() {
- let err = ServerError(json: json)
- //need to test
- error(err.errors[0])
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement