comgate_ruby 0.8.3 → 0.8.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f70dc5da596b91029a905c8cdb1987b96e805d9d222f54c3a8896947119ca0c8
4
- data.tar.gz: 6ffc03ac6e2e119c35bce6aa561bab416c20f63dd8b8748c186969952e3f82ce
3
+ metadata.gz: f974dd47d4d868539ed68baa2dd30b2d1d1539662efbc65d0cba6cac02d70763
4
+ data.tar.gz: f7f156db914822d28e05bf9805d496519782c29d3676f8c1d0cfa0d39f616f2d
5
5
  SHA512:
6
- metadata.gz: 994a8c9c9450d07e709da2dfe4e7787cffc72e3176b18ec0a1ac8b10718c6b6f9b848fb83e83a28017c5fc06d36ebf87d51b02b8a7720fe7600a2e40cc3fab9d
7
- data.tar.gz: 5f512b4a460484552f42304cd539a45dbb233e8c2344f037b8ab5712537e5139f5607293f735e069fb064ca36084b273d199ed10abf9f5e0d1cf4fd9688756e4
6
+ metadata.gz: ec831f7322aba06e135929d991a25a9d3f69a80b3f4a2fe0d00ce10baceff8036705e0597c0ffde7b6af1cc0c7ca8f0e79f501a2997274f52ccb74f816536442
7
+ data.tar.gz: 74e759684ba0bfb42281b00849facf0527c69e79dcd55fedf146f8f632f273ba552505f09fd87965eb0f1bd07c42a46050d9da2eff9423d4142f11e8ddc77f12
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
+ ## [0.8.3.5] - 2023-08-10
2
+ - added `gateway.download_zipped_csvs_of_transfers(date: time_as_date, output_file_path: path_to_download)` (to get transfer fees :-) )
3
+
4
+ ## [0.8.3.1] - 2023-06-28
5
+ - fixed internal passing errors
6
+
1
7
  ## [0.8.3] - 2023-06-27
2
- - If response from Comgate API is error, but containt "transId" we do not raise exception but pass info up to stack
8
+ - If response from Comgate API is error, but contain "transId", we do not raise exception but pass info up to stack
3
9
 
4
10
  ## [0.8.2] - 2023-06-20
5
11
  - If ENV["COMGATE_MIN_LOG_LEVEL"] is set, calls and responses to Comgate are logged at that level. Otherwise `:debug` is used.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- comgate_ruby (0.8.3)
4
+ comgate_ruby (0.8.3.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -117,6 +117,10 @@ If bundler is not being used to manage dependencies, install the gem by executin
117
117
  variable_symbol: "12345678"}
118
118
  ]
119
119
  ```
120
+ ### Get zip file containing CSV files with transfers of day (much richer data then previous)
121
+ 1) Call `gateway.download_zipped_csvs_of_transfers(date: time_as_date, output_file_path: path_to_download)`.
122
+ 2) Unzip (at your own) file at `:path_to_download`. There can be several CSV files.
123
+ Example file can be found at `./test/fixtures/csvs.zip`.
120
124
 
121
125
  ## Parameters
122
126
  Structure of parameters is unchanged across most of methods, but you can leave out unused keys. You will get error if You do not pass required key.
@@ -37,8 +37,20 @@ module Comgate
37
37
 
38
38
  attr_accessor :response
39
39
 
40
+ HttpResponseStubStruct = Struct.new(:code, :body, :uri, :headers, keyword_init: true) do
41
+ def [](key)
42
+ headers[key]
43
+ end
44
+ end
45
+
40
46
  def call_api
41
47
  self.response = https_conn.request(request)
48
+ # body =""
49
+ # binding.pry
50
+ # self.response = HttpResponseStubStruct.new(code: "200",
51
+ # body: body,
52
+ # uri: URI.parse("example.com"),
53
+ # headers: { "content-type" => "application/x-www-form-urlencoded; charset=UTF-8" })
42
54
  rescue *KNOWN_CONNECTION_ERRORS => e
43
55
  handle_connection_error(e)
44
56
  end
@@ -111,6 +123,8 @@ module Comgate
111
123
  when 302
112
124
  response_location
113
125
  when 200
126
+ return nil if response_content_type == :zip
127
+
114
128
  decoded_response_body.is_a?(Hash) ? decoded_response_body["redirect"] : nil
115
129
  end
116
130
  end
@@ -124,8 +138,10 @@ module Comgate
124
138
 
125
139
  msg = [result[:response_body]["message"], result[:response_body]["extraMessage"]].compact.join(" ")
126
140
  errors[:api] = ["[Error ##{result[:response_body]["error"]}] #{msg}"]
127
- @result[:errors] = { api: { code: result[:response_body]["error"].to_i,
128
- message: msg } }
141
+ @result[:errors] = { api: [
142
+ { code: result[:response_body]["error"].to_i,
143
+ message: msg }
144
+ ] }
129
145
  end
130
146
 
131
147
  def api_error?
@@ -159,6 +175,8 @@ module Comgate
159
175
  URI.decode_www_form(response.body).to_h
160
176
  when :json
161
177
  JSON.parse(response.body)
178
+ when :zip
179
+ { file: store_as_tmp_file(response.body, "zipfile.zip") }
162
180
  end
163
181
  end
164
182
 
@@ -195,9 +213,19 @@ module Comgate
195
213
  :json
196
214
  elsif rct.include?("form-urlencoded")
197
215
  :url_encoded
216
+ elsif rct.include?("zip")
217
+ :zip
198
218
  else
199
219
  raise "Uncaptured content type: '#{rct}'"
200
220
  end
201
221
  end
222
+
223
+ def store_as_tmp_file(body, filename = "comgate")
224
+ file = Tempfile.new(filename)
225
+ file.binmode
226
+ file.write(body)
227
+ file.rewind
228
+ file
229
+ end
202
230
  end
203
231
  end
@@ -171,6 +171,22 @@ module Comgate
171
171
  test_call: false)
172
172
  end
173
173
 
174
+ def download_zipped_csvs_of_transfers(date:, output_file_path:)
175
+ date_str = date.strftime("%Y-%m-%d")
176
+
177
+ resp = make_call(url: "#{BASE_URL}/csvDownload",
178
+ payload: gateway_params.merge({ date: date_str }),
179
+ test_call: false)
180
+
181
+ tmp_file = resp.hash[:file]
182
+ File.write(output_file_path, tmp_file.read)
183
+ tmp_file.close
184
+ tmp_file.unlink
185
+
186
+ resp.hash = { file_path: output_file_path }
187
+ resp
188
+ end
189
+
174
190
  private
175
191
 
176
192
  attr_reader :payment_data
@@ -179,10 +195,11 @@ module Comgate
179
195
  raise "There are errors in pre-api-call phase: #{payload[:errors]}" unless payload[:errors].nil?
180
196
 
181
197
  srv = Comgate::ApiCaller.call(url: url, payload: payload, test_call: test_call, proxy_uri: proxy_uri)
198
+
182
199
  if srv.success?
183
200
  Comgate::Response.new(srv.result, conversion_hash)
184
201
  else
185
- handle_failure_from(srv)
202
+ handle_failure_from(srv, conversion_hash)
186
203
  end
187
204
  end
188
205
 
@@ -190,8 +207,8 @@ module Comgate
190
207
  test_from_data.nil? ? test_calls_used? : (test_from_data == true)
191
208
  end
192
209
 
193
- def handle_failure_from(srv)
194
- raise srv.errors.to_s unless srv.result.dig(:response_body, "transId").present?
210
+ def handle_failure_from(srv, conversion_hash)
211
+ raise srv.errors.to_s if srv.result.dig(:response_body, "transId").nil?
195
212
 
196
213
  # pretends to be a successfull response, and keep payment check to decide what to do next
197
214
  Comgate::Response.new(srv.result, conversion_hash)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Comgate
4
- VERSION = "0.8.3"
4
+ VERSION = "0.8.3.5"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comgate_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Petr Mlčoch
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-27 00:00:00.000000000 Z
11
+ date: 2023-08-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Write a longer description or delete this line.
14
14
  email: