datatrans 5.1.0 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +30 -3
  3. data/.github/workflows/release.yml +1 -1
  4. data/.gitignore +1 -1
  5. data/.ruby-version +1 -1
  6. data/Appraisals +16 -8
  7. data/CHANGELOG.md +13 -0
  8. data/Gemfile +1 -0
  9. data/Gemfile.lock +151 -0
  10. data/README.markdown +70 -7
  11. data/Rakefile +2 -2
  12. data/datatrans.gemspec +20 -22
  13. data/gemfiles/rails_5_2.gemfile +2 -2
  14. data/gemfiles/rails_6_0.gemfile +2 -2
  15. data/gemfiles/rails_6_1.gemfile +2 -2
  16. data/gemfiles/rails_7_0.gemfile +2 -2
  17. data/gemfiles/rails_7_1.gemfile +12 -0
  18. data/lib/datatrans/common.rb +5 -5
  19. data/lib/datatrans/config.rb +26 -11
  20. data/lib/datatrans/json/transaction/authorize.rb +4 -42
  21. data/lib/datatrans/json/transaction/init.rb +61 -0
  22. data/lib/datatrans/json/transaction/merchant_authorize.rb +45 -0
  23. data/lib/datatrans/json/transaction/response.rb +7 -3
  24. data/lib/datatrans/json/transaction/settle.rb +41 -0
  25. data/lib/datatrans/json/transaction/status.rb +15 -9
  26. data/lib/datatrans/json/transaction.rb +30 -8
  27. data/lib/datatrans/version.rb +1 -1
  28. data/lib/datatrans/web/transaction/authorize.rb +46 -17
  29. data/lib/datatrans/web/transaction.rb +10 -4
  30. data/lib/datatrans/web/view_helper.rb +3 -1
  31. data/lib/datatrans/xml/transaction/authorize.rb +39 -19
  32. data/lib/datatrans/xml/transaction/capture.rb +29 -15
  33. data/lib/datatrans/xml/transaction/request.rb +10 -9
  34. data/lib/datatrans/xml/transaction/response.rb +4 -2
  35. data/lib/datatrans/xml/transaction/status.rb +41 -25
  36. data/lib/datatrans/xml/transaction/void.rb +30 -16
  37. data/lib/datatrans/xml/transaction.rb +18 -14
  38. data/lib/datatrans.rb +9 -9
  39. data/renovate.json +14 -0
  40. data/spec/common_spec.rb +6 -6
  41. data/spec/config_spec.rb +2 -2
  42. data/spec/json/authorize_spec.rb +35 -14
  43. data/spec/json/init_spec.rb +100 -0
  44. data/spec/json/merchant_authorize_spec.rb +97 -0
  45. data/spec/json/settle_spec.rb +55 -0
  46. data/spec/json/status_spec.rb +2 -2
  47. data/spec/spec_helper.rb +11 -11
  48. data/spec/web/init_spec.rb +157 -0
  49. data/spec/xml/capture_spec.rb +5 -5
  50. data/spec/xml/{authorize_spec.rb → init_spec.rb} +7 -7
  51. data/spec/xml/request_spec.rb +21 -22
  52. data/spec/xml/status_spec.rb +4 -4
  53. data/spec/xml/void_spec.rb +5 -5
  54. metadata +13 -4
  55. data/spec/web/authorize_spec.rb +0 -157
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6749673b2125a6a645cef06bd13d1a9d3f6f58276bd9e6abe18c287e0b821637
4
- data.tar.gz: 26912c6b041d37f4af6872b5bfb138e0b9b90545058335c1f58407aa874125b9
3
+ metadata.gz: c2f34eb8d332a694f26cb82bb7f9f6d953914b4f314d6eb6cf73896b5398a228
4
+ data.tar.gz: d62d36a4d876a1b594706ef77e845fa10d80d22bfe712e01acb1d4e7d7e1b394
5
5
  SHA512:
6
- metadata.gz: 1f4ab534d4b3b8a684c42489c300fa6c7da8b442a4ec8faf168408712b8eb8318950dcfa25685f755826bb7270cf93adbdda7bc7a05778d8c4be4913437db439
7
- data.tar.gz: d595075292ae69128eaf4f56f9c99eff69a736c91300fd2ced3baa2f4b918a5a15aa6b52ecfd0987a23e6ebf508c88239ba9075482b1dc6988540632c0f172bb
6
+ metadata.gz: c6d5a9d7d70dec2c18bcc7b18060003f6e769497479851c8646c5b04df703a504ab5dac6f0a8b7144891ae0c65c2f3894e762429da3f9586cb06d0a08398d181
7
+ data.tar.gz: abdef0e7fc212ae0ac3015f271bf98bb9f22ce163d43bbb88e68e1b056b4deeca1f903374d50a64c9078cdfdc33da9c532a4822349f5a99a69aa8deae867ef52
@@ -2,16 +2,33 @@
2
2
  name: CI
3
3
  on: [ push, pull_request ]
4
4
  jobs:
5
+ standard:
6
+ runs-on: ubuntu-latest
7
+ steps:
8
+ - uses: actions/checkout@v4
9
+
10
+ - name: Set up Ruby
11
+ uses: ruby/setup-ruby@v1
12
+ with:
13
+ ruby-version: 2.6 # keep it on the lowest supported Ruby version
14
+ bundler-cache: true
15
+
16
+ - name: Run Standard
17
+ run: bundle exec standardrb
18
+
5
19
  tests:
6
20
  runs-on: ubuntu-latest
7
21
  strategy:
8
22
  fail-fast: false
9
23
  matrix:
10
- ruby: [ '2.6', '2.7', '3.0', '3.1', '3.2' ]
11
- rails: [ '5-2', '6-0', '6-1', '7-0' ]
24
+ ruby: [ '2.6', '2.7', '3.0', '3.1', '3.2', '3.3' ]
25
+ rails: [ '5-2', '6-0', '6-1', '7-0', '7-1' ]
26
+ # excludes are sorted by Ruby version, then Rails version
12
27
  exclude:
13
28
  - ruby: 2.6 # Rails 7 requires 2.7 minimum
14
29
  rails: 7-0
30
+ - ruby: 2.6 # Rails 7.1 requires 2.7 minimum
31
+ rails: 7-1
15
32
  - ruby: 3.0 # Ruby 3 support for 5.2 hasn't been added
16
33
  rails: 5-2
17
34
  - ruby: 3.1 # Ruby 3.1 only works on the latest Rails 7 version
@@ -26,9 +43,19 @@ jobs:
26
43
  rails: 6-0
27
44
  - ruby: 3.2
28
45
  rails: 6-1
46
+ - ruby: 3.3 # Ruby 3.3 only works on the latest Rails 7 version
47
+ rails: 5-2
48
+ - ruby: 3.3
49
+ rails: 6-0
50
+ - ruby: 3.3
51
+ rails: 6-1
29
52
 
30
53
  steps:
31
- - uses: actions/checkout@v2
54
+ - uses: actions/checkout@v4
55
+
56
+ # we otherwise run into issues with different versions of actionpack / activesupport with Appraisal
57
+ - name: Remove Gemfile.lock
58
+ run: rm Gemfile.lock
32
59
 
33
60
  - name: Set up Ruby
34
61
  uses: ruby/setup-ruby@v1
@@ -8,7 +8,7 @@ jobs:
8
8
  runs-on: ubuntu-latest
9
9
  if: github.ref == 'refs/heads/master'
10
10
  steps:
11
- - uses: actions/checkout@v2
11
+ - uses: actions/checkout@v4
12
12
  - uses: ruby/setup-ruby@v1
13
13
  with:
14
14
  ruby-version: 2.7
data/.gitignore CHANGED
@@ -1,5 +1,5 @@
1
1
  *.gem
2
2
  .bundle
3
3
  pkg/*
4
- *.lock
4
+ gemfiles/*.lock
5
5
  coverage
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.9
1
+ 2.6.10
data/Appraisals CHANGED
@@ -1,31 +1,39 @@
1
1
  appraise "rails-5-2" do
2
- gem "activesupport", "~> 5.2"
2
+ gem "activesupport", "~> 5.2.0"
3
3
 
4
4
  group :development, :test do
5
- gem "actionpack", "~> 5.2"
5
+ gem "actionpack", "~> 5.2.0"
6
6
  end
7
7
  end
8
8
 
9
9
  appraise "rails-6-0" do
10
- gem "activesupport", "~> 6.0"
10
+ gem "activesupport", "~> 6.0.0"
11
11
 
12
12
  group :development, :test do
13
- gem "actionpack", "~> 6.0"
13
+ gem "actionpack", "~> 6.0.0"
14
14
  end
15
15
  end
16
16
 
17
17
  appraise "rails-6-1" do
18
- gem "activesupport", "~> 6.1"
18
+ gem "activesupport", "~> 6.1.0"
19
19
 
20
20
  group :development, :test do
21
- gem "actionpack", "~> 6.1"
21
+ gem "actionpack", "~> 6.1.0"
22
22
  end
23
23
  end
24
24
 
25
25
  appraise "rails-7-0" do
26
- gem "activesupport", "~> 7.0"
26
+ gem "activesupport", "~> 7.0.0"
27
27
 
28
28
  group :development, :test do
29
- gem "actionpack", "~> 7.0"
29
+ gem "actionpack", "~> 7.0.0"
30
+ end
31
+ end
32
+
33
+ appraise "rails-7-1" do
34
+ gem "activesupport", "~> 7.1.0"
35
+
36
+ group :development, :test do
37
+ gem "actionpack", "~> 7.1.0"
30
38
  end
31
39
  end
data/CHANGELOG.md CHANGED
@@ -5,6 +5,19 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## 5.2.0 - 2024-01-31
9
+
10
+ ### Added
11
+
12
+ * Support for Ruby 3.3 and Rails 7.1 (@andyundso [#47](https://github.com/simplificator/datatrans/pull/47))
13
+ * Support for Merchant Initiated Payments (@visini [#48](https://github.com/simplificator/datatrans/pull/48), [#52](https://github.com/simplificator/datatrans/pull/52), [#53](https://github.com/simplificator/datatrans/pull/53), [#56](https://github.com/simplificator/datatrans/pull/56))
14
+
15
+ ### Changed
16
+
17
+ * Reformatted code with standardrb (@andyundso [#57](https://github.com/simplificator/datatrans/pull/57))
18
+ * Marked XML APIs and Web APIs as deprecated (@andyundso [#60](https://github.com/simplificator/datatrans/pull/60))
19
+ * Renamed `Datatrans::JSON::Transaction::Authorize` to `Datatrans::JSON::Transaction::Init`. `::Authorize` will still work until the next major release (@andyundso [#60](https://github.com/simplificator/datatrans/pull/60))
20
+
8
21
  ## 5.1.0 - 2023-07-06
9
22
 
10
23
  ### Added
data/Gemfile CHANGED
@@ -3,3 +3,4 @@ source "http://rubygems.org"
3
3
  # Specify your gem's dependencies in datatrans.gemspec
4
4
  gemspec
5
5
  gem "simplecov", group: :test, require: nil
6
+ gem "standard", group: :development, require: false
data/Gemfile.lock ADDED
@@ -0,0 +1,151 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ datatrans (5.2.0)
5
+ activesupport (>= 5.2)
6
+ builder
7
+ httparty
8
+ i18n
9
+ multi_xml (>= 0.5.1)
10
+
11
+ GEM
12
+ remote: http://rubygems.org/
13
+ specs:
14
+ actionpack (6.1.5)
15
+ actionview (= 6.1.5)
16
+ activesupport (= 6.1.5)
17
+ rack (~> 2.0, >= 2.0.9)
18
+ rack-test (>= 0.6.3)
19
+ rails-dom-testing (~> 2.0)
20
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
21
+ actionview (6.1.5)
22
+ activesupport (= 6.1.5)
23
+ builder (~> 3.1)
24
+ erubi (~> 1.4)
25
+ rails-dom-testing (~> 2.0)
26
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
27
+ activesupport (6.1.5)
28
+ concurrent-ruby (~> 1.0, >= 1.0.2)
29
+ i18n (>= 1.6, < 2)
30
+ minitest (>= 5.1)
31
+ tzinfo (~> 2.0)
32
+ zeitwerk (~> 2.3)
33
+ appraisal (2.4.1)
34
+ bundler
35
+ rake
36
+ thor (>= 0.14.0)
37
+ ast (2.4.2)
38
+ builder (3.2.4)
39
+ concurrent-ruby (1.1.10)
40
+ crass (1.0.6)
41
+ diff-lcs (1.5.0)
42
+ docile (1.4.0)
43
+ erubi (1.10.0)
44
+ httparty (0.21.0)
45
+ mini_mime (>= 1.0.0)
46
+ multi_xml (>= 0.5.2)
47
+ i18n (1.10.0)
48
+ concurrent-ruby (~> 1.0)
49
+ json (2.7.1)
50
+ language_server-protocol (3.17.0.3)
51
+ lint_roller (1.1.0)
52
+ loofah (2.16.0)
53
+ crass (~> 1.0.2)
54
+ nokogiri (>= 1.5.9)
55
+ mini_mime (1.1.5)
56
+ mini_portile2 (2.8.5)
57
+ minitest (5.15.0)
58
+ multi_xml (0.6.0)
59
+ nokogiri (1.13.4)
60
+ mini_portile2 (~> 2.8.0)
61
+ racc (~> 1.4)
62
+ nokogiri (1.13.4-x86_64-darwin)
63
+ racc (~> 1.4)
64
+ nokogiri (1.13.4-x86_64-linux)
65
+ racc (~> 1.4)
66
+ parallel (1.24.0)
67
+ parser (3.3.0.5)
68
+ ast (~> 2.4.1)
69
+ racc
70
+ racc (1.7.3)
71
+ rack (2.2.3)
72
+ rack-test (1.1.0)
73
+ rack (>= 1.0, < 3)
74
+ rails-dom-testing (2.0.3)
75
+ activesupport (>= 4.2.0)
76
+ nokogiri (>= 1.6)
77
+ rails-html-sanitizer (1.4.2)
78
+ loofah (~> 2.3)
79
+ rainbow (3.1.1)
80
+ rake (13.0.6)
81
+ regexp_parser (2.9.0)
82
+ rexml (3.2.6)
83
+ rspec (3.11.0)
84
+ rspec-core (~> 3.11.0)
85
+ rspec-expectations (~> 3.11.0)
86
+ rspec-mocks (~> 3.11.0)
87
+ rspec-core (3.11.0)
88
+ rspec-support (~> 3.11.0)
89
+ rspec-expectations (3.11.0)
90
+ diff-lcs (>= 1.2.0, < 2.0)
91
+ rspec-support (~> 3.11.0)
92
+ rspec-mocks (3.11.1)
93
+ diff-lcs (>= 1.2.0, < 2.0)
94
+ rspec-support (~> 3.11.0)
95
+ rspec-support (3.11.0)
96
+ rubocop (1.50.2)
97
+ json (~> 2.3)
98
+ parallel (~> 1.10)
99
+ parser (>= 3.2.0.0)
100
+ rainbow (>= 2.2.2, < 4.0)
101
+ regexp_parser (>= 1.8, < 3.0)
102
+ rexml (>= 3.2.5, < 4.0)
103
+ rubocop-ast (>= 1.28.0, < 2.0)
104
+ ruby-progressbar (~> 1.7)
105
+ unicode-display_width (>= 2.4.0, < 3.0)
106
+ rubocop-ast (1.30.0)
107
+ parser (>= 3.2.1.0)
108
+ rubocop-performance (1.16.0)
109
+ rubocop (>= 1.7.0, < 2.0)
110
+ rubocop-ast (>= 0.4.0)
111
+ ruby-progressbar (1.13.0)
112
+ simplecov (0.22.0)
113
+ docile (~> 1.1)
114
+ simplecov-html (~> 0.11)
115
+ simplecov_json_formatter (~> 0.1)
116
+ simplecov-html (0.12.3)
117
+ simplecov_json_formatter (0.1.4)
118
+ standard (1.28.5)
119
+ language_server-protocol (~> 3.17.0.2)
120
+ lint_roller (~> 1.0)
121
+ rubocop (~> 1.50.2)
122
+ standard-custom (~> 1.0.0)
123
+ standard-performance (~> 1.0.1)
124
+ standard-custom (1.0.2)
125
+ lint_roller (~> 1.0)
126
+ rubocop (~> 1.50)
127
+ standard-performance (1.0.1)
128
+ lint_roller (~> 1.0)
129
+ rubocop-performance (~> 1.16.0)
130
+ thor (1.2.1)
131
+ tzinfo (2.0.4)
132
+ concurrent-ruby (~> 1.0)
133
+ unicode-display_width (2.5.0)
134
+ zeitwerk (2.5.4)
135
+
136
+ PLATFORMS
137
+ ruby
138
+ x86_64-darwin-21
139
+ x86_64-linux
140
+
141
+ DEPENDENCIES
142
+ actionpack (>= 5.2)
143
+ appraisal
144
+ datatrans!
145
+ rake
146
+ rspec
147
+ simplecov
148
+ standard
149
+
150
+ BUNDLED WITH
151
+ 2.3.3
data/README.markdown CHANGED
@@ -31,6 +31,10 @@ Possible values for the environment: `:production`, `:development`
31
31
  Web Authorization
32
32
  =================
33
33
 
34
+ > [!IMPORTANT]
35
+ >
36
+ > Datatrans no longer supports the Payment Page API. The support in this gem will be removed in the next major release. Please use the [JSON API](#json-transactions) instead.
37
+
34
38
  If you want to process a credit card the first time a web authorization is
35
39
  necessary. Add the following code to a controller action that shows the form.
36
40
  You need to pass at least `amount`, `currency` and `refno` (order number).
@@ -98,12 +102,24 @@ JSON Transactions
98
102
 
99
103
  More information about Datatrans JSON API can be found [here](https://api-reference.datatrans.ch/). Our gem uses endpoints from `/v1/transactions` section.
100
104
 
101
- We implemented support for [Redirect mode](https://docs.datatrans.ch/docs/redirect-lightbox) (since Lightbox mode may not work correctly on mobile, whereas Redirect works well on all devises).
105
+ We implemented support for [Redirect mode](https://docs.datatrans.ch/docs/redirect-lightbox) (since Lightbox mode may not work correctly on mobile, whereas Redirect works well on all devices).
102
106
 
103
- Authorize
107
+ Saving Payment Information
108
+ --------------------------
109
+
110
+ According to the [docs](https://docs.datatrans.ch/docs/customer-initiated-payments#saving-payment-information), there are three possible flows:
111
+
112
+ - **Customer Initiated Payments**: _Your customer pays and nothing is registered._
113
+ - This is the most basic setup and does _not_ save any payment information: First, call `transaction.init`, and then redirect the user to the `transaction_path` (see the sections `Initialize` and `Start a transaction` below).
114
+ - **Customer Initiated Payment** and creating an `alias` for subsequent **Merchant Initiated Payments**: _Your customer pays and the card or payment method information is registered. You receive an alias which you save for later merchant initiated payments or one-click checkouts._
115
+ - In order to save payment information after your customer has finalized their payment, without them having to re-enter their payment information and go through the 3D-Secure flow, pass `option: {"createAlias": true}`. More information can be found [here](https://docs.datatrans.ch/docs/redirect-lightbox#saving-payment-information).
116
+ - **Merchant Initiated Payments**: _Your customer registers their card or payment method information without any payment. Their account is not charged. This is what we call a dedicated registration._
117
+ - This setup allows you to save a customers payment information without any charge in the beginning. This is useful in the context of setting up a subscription model (e.g., usage-based billing at the end of a billing period). See the section `Merchant Initiated Payments` below.
118
+
119
+ Initialize
104
120
  ---------
105
121
 
106
- Authorize JSON transaction:
122
+ Initialize a JSON transaction:
107
123
 
108
124
  ```ruby
109
125
  transaction = datatrans.json_transaction(
@@ -116,9 +132,9 @@ transaction = datatrans.json_transaction(
116
132
  error_url: <your_application_return_url>
117
133
  )
118
134
 
119
- # call to init endpoint to initialize a transaction
135
+ # call to initialize endpoint to initialize a transaction
120
136
  # returns true or false depending if response was successful or not
121
- init = transaction.authorize
137
+ init = transaction.init
122
138
 
123
139
  # successful authorization call returns in response a transaction id
124
140
  if init
@@ -139,7 +155,7 @@ Once you have a transaction id, you can start a transaction. Users of your appli
139
155
  render js: "window.location='#{path}'"
140
156
  ```
141
157
 
142
- You do not have to [settle a transaction](https://api-reference.datatrans.ch/#tag/v1transactions/operation/settle) by yourself: we set `"autoSettle": true` by default when authorizing a transaction, which means the transaction will be settled automatically.
158
+ You do not have to [settle a transaction](https://api-reference.datatrans.ch/#tag/v1transactions/operation/settle) by yourself: we set `"autoSettle": true` by default when authorizing a transaction, which means the transaction will be settled automatically. This can be overridden by setting `auto_settle: false` when authorizing a transaction.
143
159
 
144
160
  Transaction status
145
161
  ------------------
@@ -196,11 +212,58 @@ You can check the trasaction [status](https://api-reference.datatrans.ch/#tag/v1
196
212
  end
197
213
  ```
198
214
 
215
+ Merchant Initiated Payments
216
+ ---------
217
+
218
+ It's possible to authorize transactions without user interaction, via [merchant initiated payments](https://docs.datatrans.ch/docs/merchant-initiated-payments).
219
+
220
+ To perform a so-called "dedicated registration" (so we can later charge the card via its `alias`), you should follow the same steps as described above, but not provide an amount:
221
+
222
+ ```ruby
223
+ transaction = datatrans.json_transaction(
224
+ refno: 'ABCDEF',
225
+ amount: 0, # omit amount for dedicated registrations
226
+ currency: "CHF",
227
+ payment_methods: ["ECA", "VIS"],
228
+ success_url: <your_application_return_url>,
229
+ cancel_url: <your_application_return_url>,
230
+ error_url: <your_application_return_url>
231
+ )
232
+
233
+ init = transaction.init
234
+
235
+ # successful authorization call returns in response a transaction id
236
+ if init
237
+ transaction_id = transaction.response.params["transactionId"]
238
+ end
239
+ ```
240
+
241
+ Then, at a later point in time, and without needing any user interaction, you can create a payment via `merchant_authorize`:
242
+
243
+ ```ruby
244
+ dedicated_registration = datatrans.json_transaction(transaction_id: transaction_id)
245
+ dedicated_registration.status # this will contain the card information
246
+
247
+ card_alias = dedicated_registration.response.params["card"]["alias"]
248
+ card_expiry_month = dedicated_registration.response.params["card"]["expiryMonth"]
249
+ card_expiry_year = dedicated_registration.response.params["card"]["expiryYear"]
250
+
251
+ transaction = datatrans.json_transaction(
252
+ refno: "ABCDEF",
253
+ amount: 1000,
254
+ currency: "CHF",
255
+ card: {alias: card_alias, expiryMonth: card_expiry_month, expiryYear: card_expiry_year}
256
+ )
257
+
258
+ transaction.merchant_authorize # this will charge the card without user interaction
259
+ ```
199
260
 
200
261
  XML Transactions
201
262
  ================
202
263
 
203
- XML API is [deprecated](https://mailchi.mp/datatrans/basic-authdynamic-sign_reminder) by Datatrans. After June 3rd, 2024 all merchants will have to use JSON API.
264
+ > [!IMPORTANT]
265
+ >
266
+ > Datatrans will stop supporting the XML API on June 3rd, 2024. The support in this gem will be removed in the next major release. Please use the [JSON API](#json-transactions) instead.
204
267
 
205
268
  If you have already a credit card alias or an authorized transaction you can
206
269
  use the convenient XML methods to process payments.
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
- require 'bundler/gem_tasks'
1
+ require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new("spec")
5
- task :default => :spec
5
+ task default: :spec
data/datatrans.gemspec CHANGED
@@ -1,34 +1,32 @@
1
- # -*- encoding: utf-8 -*-
2
1
  $:.push File.expand_path("../lib", __FILE__)
3
2
  require "datatrans/version"
4
3
 
5
4
  Gem::Specification.new do |s|
6
- s.name = "datatrans"
7
- s.version = Datatrans::VERSION
8
- s.authors = ["Tobias Miesel", "Thomas Maurer", "Corin Langosch", "Pascal Betz"]
9
- s.email = ["info@simplificator.com"]
10
- s.homepage = ""
11
- s.summary = %q{Datatrans Integration for Ruby on Rails}
12
- s.description = %q{Datatrans Integration for Ruby on Rails}
5
+ s.name = "datatrans"
6
+ s.version = Datatrans::VERSION
7
+ s.authors = ["Tobias Miesel", "Thomas Maurer", "Corin Langosch", "Pascal Betz"]
8
+ s.email = ["info@simplificator.com"]
9
+ s.homepage = ""
10
+ s.summary = "Datatrans Integration for Ruby on Rails"
11
+ s.description = "Datatrans Integration for Ruby on Rails"
13
12
 
14
13
  s.rubyforge_project = "datatrans"
15
14
 
16
- s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
+ s.files = `git ls-files`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
19
17
  s.require_paths = ["lib"]
20
18
 
21
- s.required_ruby_version = '>= 2.6'
19
+ s.required_ruby_version = ">= 2.6"
22
20
 
23
- s.add_dependency 'httparty'
24
- s.add_dependency 'activesupport', '>= 5.2'
25
- s.add_dependency 'i18n'
26
- s.add_dependency 'builder'
27
- s.add_dependency 'multi_xml', '>= 0.5.1'
21
+ s.add_dependency "httparty"
22
+ s.add_dependency "activesupport", ">= 5.2"
23
+ s.add_dependency "i18n"
24
+ s.add_dependency "builder"
25
+ s.add_dependency "multi_xml", ">= 0.5.1"
28
26
 
29
- s.add_development_dependency 'actionpack', '>= 5.2'
30
- s.add_development_dependency 'appraisal'
31
- s.add_development_dependency 'rake'
32
- s.add_development_dependency 'rspec'
33
- s.license = 'MIT'
27
+ s.add_development_dependency "actionpack", ">= 5.2"
28
+ s.add_development_dependency "appraisal"
29
+ s.add_development_dependency "rake"
30
+ s.add_development_dependency "rspec"
31
+ s.license = "MIT"
34
32
  end
@@ -3,10 +3,10 @@
3
3
  source "http://rubygems.org"
4
4
 
5
5
  gem "simplecov", group: :test, require: nil
6
- gem "activesupport", "~> 5.2"
6
+ gem "activesupport", "~> 5.2.0"
7
7
 
8
8
  group :development, :test do
9
- gem "actionpack", "~> 5.2"
9
+ gem "actionpack", "~> 5.2.0"
10
10
  end
11
11
 
12
12
  gemspec path: "../"
@@ -3,10 +3,10 @@
3
3
  source "http://rubygems.org"
4
4
 
5
5
  gem "simplecov", group: :test, require: nil
6
- gem "activesupport", "~> 6.0"
6
+ gem "activesupport", "~> 6.0.0"
7
7
 
8
8
  group :development, :test do
9
- gem "actionpack", "~> 6.0"
9
+ gem "actionpack", "~> 6.0.0"
10
10
  end
11
11
 
12
12
  gemspec path: "../"
@@ -3,10 +3,10 @@
3
3
  source "http://rubygems.org"
4
4
 
5
5
  gem "simplecov", group: :test, require: nil
6
- gem "activesupport", "~> 6.1"
6
+ gem "activesupport", "~> 6.1.0"
7
7
 
8
8
  group :development, :test do
9
- gem "actionpack", "~> 6.1"
9
+ gem "actionpack", "~> 6.1.0"
10
10
  end
11
11
 
12
12
  gemspec path: "../"
@@ -3,10 +3,10 @@
3
3
  source "http://rubygems.org"
4
4
 
5
5
  gem "simplecov", group: :test, require: nil
6
- gem "activesupport", "~> 7.0"
6
+ gem "activesupport", "~> 7.0.0"
7
7
 
8
8
  group :development, :test do
9
- gem "actionpack", "~> 7.0"
9
+ gem "actionpack", "~> 7.0.0"
10
10
  end
11
11
 
12
12
  gemspec path: "../"
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "simplecov", group: :test, require: nil
6
+ gem "activesupport", "~> 7.1.0"
7
+
8
+ group :development, :test do
9
+ gem "actionpack", "~> 7.1.0"
10
+ end
11
+
12
+ gemspec path: "../"
@@ -1,10 +1,10 @@
1
- require 'openssl'
1
+ require "openssl"
2
2
 
3
3
  module Datatrans::Common
4
4
  def sign(*fields)
5
- return nil unless self.datatrans.sign_key
6
- key = self.datatrans.sign_key.split(/([a-f0-9][a-f0-9])/).reject(&:empty?)
5
+ return nil unless datatrans.sign_key
6
+ key = datatrans.sign_key.split(/([a-f0-9][a-f0-9])/).reject(&:empty?)
7
7
  key = key.pack("H*" * key.size)
8
- OpenSSL::HMAC.hexdigest(OpenSSL::Digest::MD5.new, key, fields.join)
8
+ OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("MD5"), key, fields.join)
9
9
  end
10
- end
10
+ end