From d3da328919e2dc44195118c4aa30a24069659af5 Mon Sep 17 00:00:00 2001 From: Ahmed Refaat Date: Fri, 1 Jun 2018 19:06:50 -0400 Subject: [PATCH 1/4] Fix error message --- lib/flinks/error.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/flinks/error.rb b/lib/flinks/error.rb index a600827..4110a8e 100644 --- a/lib/flinks/error.rb +++ b/lib/flinks/error.rb @@ -72,8 +72,8 @@ def initialize(response) # @return [String] def build_message - message = response.parse['Message'] - message << " - FlinksCode: #{response.parse['FlinksCode']}" + message = response.parse['Message'] || "Error" + message + " - FlinksCode: #{response.parse['FlinksCode']}" rescue HTTP::Error response.reason end From 605e785ebe7abfbb33456a6517f881b39d78f50a Mon Sep 17 00:00:00 2001 From: Ahmed Refaat Date: Tue, 5 Jun 2018 16:00:23 -0400 Subject: [PATCH 2/4] Fix asyn endpoints and change delete card to use http DELETE method --- lib/flinks/api/account.rb | 4 ++-- lib/flinks/api/card.rb | 2 +- lib/flinks/error.rb | 2 +- lib/flinks/request.rb | 40 ++++++++++++++++++++++++++++----------- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/lib/flinks/api/account.rb b/lib/flinks/api/account.rb index 359f76b..94e4098 100644 --- a/lib/flinks/api/account.rb +++ b/lib/flinks/api/account.rb @@ -64,14 +64,14 @@ def accounts_detail(request_id:, options: {}) # @param request_id [String] # @return [Hash] def accounts_summary_async(request_id:) - get("#{customer_id}/BankingServices/GetAccountsSummaryAsync/#{request_id}") + get("#{customer_id}/BankingServices/GetAccountsSummaryAsync/#{request_id}", params: {}, async: true) end # @see https://sandbox-api.flinks.io/Readme/#get-accounts-detail # @param request_id [String] # @return [Hash] def accounts_detail_async(request_id:) - get("#{customer_id}/BankingServices/GetAccountsDetailAsync/#{request_id}") + get("#{customer_id}/BankingServices/GetAccountsDetailAsync/#{request_id}", params: {}, async: true) end end end diff --git a/lib/flinks/api/card.rb b/lib/flinks/api/card.rb index a8a7429..9caec11 100644 --- a/lib/flinks/api/card.rb +++ b/lib/flinks/api/card.rb @@ -8,7 +8,7 @@ module Card # @param card_id [String] # @return [Hash] def delete_card(card_id:) - get("#{customer_id}/BankingServices/DeleteCard/#{card_id}") + delete("#{customer_id}/BankingServices/DeleteCard/#{card_id}") end end end diff --git a/lib/flinks/error.rb b/lib/flinks/error.rb index 4110a8e..25a7b1f 100644 --- a/lib/flinks/error.rb +++ b/lib/flinks/error.rb @@ -74,7 +74,7 @@ def initialize(response) def build_message message = response.parse['Message'] || "Error" message + " - FlinksCode: #{response.parse['FlinksCode']}" - rescue HTTP::Error + rescue StandardError response.reason end end diff --git a/lib/flinks/request.rb b/lib/flinks/request.rb index cc10a4d..55d82ca 100644 --- a/lib/flinks/request.rb +++ b/lib/flinks/request.rb @@ -12,8 +12,16 @@ module Request # # @param path [String] # @param params [Hash] - def get(path, params: {}) - request(:get, path, params: params) + def get(path, params: {}, async: false) + request(:get, path, params: params, async: async) + end + + # Performs a HTTP Delete request + # + # @param path [String] + # @param params [Hash] + def delete(path, params: {}, async: false) + request(:delete, path, params: params, async: async) end # Performs a HTTP Post request @@ -21,8 +29,8 @@ def get(path, params: {}) # @param path [String] # @param params [Hash] # @param body [Hash] - def post(path, params: {}, body: {}) - request(:post, path, params: params, body: body) + def post(path, params: {}, body: {}, async: false) + request(:post, path, params: params, body: body, async: async) end # Performs a HTTP Patch request @@ -30,16 +38,15 @@ def post(path, params: {}, body: {}) # @param path [String] # @param params [Hash] # @param body [Hash] - def patch(path, params: {}, body: {}) - request(:patch, path, params: params, body: body) + def patch(path, params: {}, body: {}, async: false) + request(:patch, path, params: params, body: body, async: async) end - private # @return [HTTP::Client] # @raise [Flinks::Error] - def request(method, path, params: {}, body: {}) + def request(method, path, params: {}, body: {}, async: false) headers = { 'Content-Type' => "application/json", 'Accept' => "application/json", @@ -52,14 +59,22 @@ def request(method, path, params: {}, body: {}) # Build payload payload = body.transform_keys { |k| k.to_s.camelize } - # Perform request - response = Http.headers(headers).send(method, url, params: params, json: payload) - if debug p "Method: #{method}" p "Url: #{url}" p "Headers: #{headers}" p "Payload: #{payload}" + p "Response: loading..." + end + + # Perform request + if async + response = Http.headers(headers).send(method, url) + else + response = Http.headers(headers).send(method, url, params: params, json: payload) + end + + if debug p "Response: #{response}" end @@ -75,6 +90,9 @@ def request(method, path, params: {}, body: {}) # Transform data data.deep_transform_keys { |k| k.underscore }.with_indifferent_access + + rescue JSON::ParserError + response end end end From eaa9a14e855e7d66ec1ee1fabe3701bd535e9cdf Mon Sep 17 00:00:00 2001 From: Ahmed Refaat Date: Mon, 11 Jun 2018 13:50:22 -0400 Subject: [PATCH 3/4] Checking on the response content in error --- lib/flinks/error.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/flinks/error.rb b/lib/flinks/error.rb index 25a7b1f..e8bc867 100644 --- a/lib/flinks/error.rb +++ b/lib/flinks/error.rb @@ -65,7 +65,7 @@ def self.error_for_403(response) # @return [Flinks::Error] def initialize(response) @response = response - @code = response.code + @code = response.code if response.try(:code).present? super(build_message) end @@ -75,7 +75,7 @@ def build_message message = response.parse['Message'] || "Error" message + " - FlinksCode: #{response.parse['FlinksCode']}" rescue StandardError - response.reason + response.try(:reason) end end From 5c1f8523e132a7fa4205367ef2cfc17dcdf7b061 Mon Sep 17 00:00:00 2001 From: Ahmed Refaat Date: Mon, 18 Jun 2018 16:42:57 -0400 Subject: [PATCH 4/4] Add flinks code to errors --- lib/flinks/error.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/flinks/error.rb b/lib/flinks/error.rb index e8bc867..4e0aa26 100644 --- a/lib/flinks/error.rb +++ b/lib/flinks/error.rb @@ -2,7 +2,7 @@ module Flinks class Error < StandardError - attr_reader :response, :code + attr_reader :response, :code, :flinks_code # @param response [HTTP::Response] # @return [Flinks::Error] @@ -66,6 +66,7 @@ def self.error_for_403(response) def initialize(response) @response = response @code = response.code if response.try(:code).present? + @flinks_code = response&.try(:parse)&.dig('FlinksCode') super(build_message) end