flinks 0.3.1 → 0.4.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8b7a392806d3c94ce6e355367e627315f520970216796aa47b77f9a0208e55e1
4
- data.tar.gz: f17b1804a6d60dbe6c11342b01b95a978e94cd6a15297a07b164402080c6941f
3
+ metadata.gz: c1f7a9b0d7dffd9587855c4180c6460f075e026aa77aad81e27a3e8a9fdff230
4
+ data.tar.gz: c7694a914067bad7e8c87de6c075efe68b13aafb658c6b78a535383850045871
5
5
  SHA512:
6
- metadata.gz: c19e8dc8039795b03b503ebbedf33cfb5b6012cf34d78204d32a34ecd5f2b7355b45032a93d27e43ec6f3f8ffe6a7e902a40d264fe32a91a78e50ba604adccec
7
- data.tar.gz: 3482beb2baf3ad3d5a2fcfd40a47e40509c7dfcf4bc2c4a498ea74b75ae81195f32abb5cb13fd1a4d882da76896dd009d387ea15a74c0bc83027ce5c2067687e
6
+ metadata.gz: ad693d77d924727a384e14df77e150067011fc0eebf417ebcd8436234eabd1eec2d84c7b3816c519bc036421f7401fa88041d2deec9efb095415ec5e52559dbd
7
+ data.tar.gz: 4ef300d40d8d154222b8a804bd18687bd8e29e515bb1fea168b85dbd6f730c16c73ecd1f83d45fa508646b98d9514cb3b985ff40d45eb4bdbf56e6a70e4d0d3c
@@ -1 +1 @@
1
- 2.5.0
1
+ 2.5.1
@@ -9,6 +9,9 @@ rvm:
9
9
  - 2.4
10
10
  - 2.5
11
11
 
12
+ before_install:
13
+ - gem install bundler
14
+
12
15
  before_script:
13
16
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
14
17
  - chmod +x ./cc-test-reporter
@@ -1,9 +1,9 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- activesupport (5.1.4)
4
+ activesupport (5.2.0)
5
5
  concurrent-ruby (~> 1.0, >= 1.0.2)
6
- i18n (~> 0.7)
6
+ i18n (>= 0.7, < 2)
7
7
  minitest (~> 5.1)
8
8
  tzinfo (~> 1.1)
9
9
  addressable (2.5.2)
@@ -15,40 +15,40 @@ GEM
15
15
  descendants_tracker (0.0.4)
16
16
  thread_safe (~> 0.3, >= 0.3.1)
17
17
  diff-lcs (1.3)
18
- docile (1.1.5)
19
- domain_name (0.5.20170404)
18
+ docile (1.3.1)
19
+ domain_name (0.5.20180417)
20
20
  unf (>= 0.0.5, < 1.0.0)
21
21
  dry-configurable (0.7.0)
22
22
  concurrent-ruby (~> 1.0)
23
23
  dry-container (0.6.0)
24
24
  concurrent-ruby (~> 1.0)
25
25
  dry-configurable (~> 0.1, >= 0.1.3)
26
- dry-core (0.4.2)
26
+ dry-core (0.4.6)
27
27
  concurrent-ruby (~> 1.0)
28
- dry-equalizer (0.2.0)
28
+ dry-equalizer (0.2.1)
29
+ dry-inflector (0.1.2)
29
30
  dry-initializer (2.4.0)
30
31
  dry-logic (0.4.2)
31
32
  dry-container (~> 0.2, >= 0.2.6)
32
33
  dry-core (~> 0.2)
33
34
  dry-equalizer (~> 0.2)
34
- dry-types (0.12.2)
35
+ dry-types (0.13.2)
35
36
  concurrent-ruby (~> 1.0)
36
- dry-configurable (~> 0.1)
37
37
  dry-container (~> 0.3)
38
- dry-core (~> 0.2, >= 0.2.1)
38
+ dry-core (~> 0.4, >= 0.4.4)
39
39
  dry-equalizer (~> 0.2)
40
+ dry-inflector (~> 0.1, >= 0.1.2)
40
41
  dry-logic (~> 0.4, >= 0.4.2)
41
- inflecto (~> 0.0.0, >= 0.0.2)
42
- dry-validation (0.11.1)
42
+ dry-validation (0.12.0)
43
43
  concurrent-ruby (~> 1.0)
44
44
  dry-configurable (~> 0.1, >= 0.1.3)
45
45
  dry-core (~> 0.2, >= 0.2.1)
46
46
  dry-equalizer (~> 0.2)
47
47
  dry-logic (~> 0.4, >= 0.4.0)
48
- dry-types (~> 0.12.0)
48
+ dry-types (~> 0.13.1)
49
49
  faraday (0.12.2)
50
50
  multipart-post (>= 1.2, < 3)
51
- git (1.3.0)
51
+ git (1.4.0)
52
52
  github_api (0.18.2)
53
53
  addressable (~> 2.4)
54
54
  descendants_tracker (~> 0.0.4)
@@ -57,19 +57,18 @@ GEM
57
57
  oauth2 (~> 1.0)
58
58
  hashdiff (0.3.7)
59
59
  hashie (3.5.7)
60
- highline (1.7.10)
61
- http (3.0.0)
60
+ highline (2.0.0)
61
+ http (3.3.0)
62
62
  addressable (~> 2.3)
63
63
  http-cookie (~> 1.0)
64
- http-form_data (>= 2.0.0.pre.pre2, < 3)
64
+ http-form_data (~> 2.0)
65
65
  http_parser.rb (~> 0.6.0)
66
66
  http-cookie (1.0.3)
67
67
  domain_name (~> 0.5)
68
- http-form_data (2.0.0)
68
+ http-form_data (2.1.1)
69
69
  http_parser.rb (0.6.0)
70
- i18n (0.9.3)
70
+ i18n (1.0.1)
71
71
  concurrent-ruby (~> 1.0)
72
- inflecto (0.0.2)
73
72
  json (1.8.6)
74
73
  juwelier (2.1.3)
75
74
  builder
@@ -87,7 +86,7 @@ GEM
87
86
  multi_json (1.13.1)
88
87
  multi_xml (0.6.0)
89
88
  multipart-post (2.0.0)
90
- nokogiri (1.8.2)
89
+ nokogiri (1.8.3)
91
90
  mini_portile2 (~> 2.3.0)
92
91
  oauth2 (1.4.0)
93
92
  faraday (>= 0.8, < 0.13)
@@ -95,9 +94,9 @@ GEM
95
94
  multi_json (~> 1.3)
96
95
  multi_xml (~> 0.5)
97
96
  rack (>= 1.2, < 3)
98
- public_suffix (3.0.1)
99
- rack (2.0.4)
100
- rake (12.3.0)
97
+ public_suffix (3.0.2)
98
+ rack (2.0.5)
99
+ rake (12.3.1)
101
100
  rdoc (3.12.2)
102
101
  json (~> 1.4)
103
102
  rspec (3.7.0)
@@ -121,18 +120,18 @@ GEM
121
120
  shoulda-context (1.2.2)
122
121
  shoulda-matchers (2.8.0)
123
122
  activesupport (>= 3.0.0)
124
- simplecov (0.15.1)
125
- docile (~> 1.1.0)
123
+ simplecov (0.16.1)
124
+ docile (~> 1.1)
126
125
  json (>= 1.8, < 3)
127
126
  simplecov-html (~> 0.10.0)
128
127
  simplecov-html (0.10.2)
129
128
  thread_safe (0.3.6)
130
- tzinfo (1.2.4)
129
+ tzinfo (1.2.5)
131
130
  thread_safe (~> 0.1)
132
131
  unf (0.1.4)
133
132
  unf_ext
134
- unf_ext (0.0.7.4)
135
- webmock (3.3.0)
133
+ unf_ext (0.0.7.5)
134
+ webmock (3.4.2)
136
135
  addressable (>= 2.3.6)
137
136
  crack (>= 0.3.2)
138
137
  hashdiff
data/README.md CHANGED
@@ -21,10 +21,10 @@ gem 'flinks', require: 'flinks'
21
21
 
22
22
  ## Usage
23
23
 
24
- This library needs to be configured with your API customer ID and API endpoint.
24
+ This library needs to be configured with your API customer ID.
25
25
 
26
26
  ```ruby
27
- flinks = Flinks.new(customer_id: ENV['FLINKS_CUSTOMER_ID'], api_endpoint: "https://YOURNAME-api.private.fin.ag/v3/")
27
+ flinks = Flinks.new(customer_id: ENV['FLINKS_CUSTOMER_ID'])
28
28
  ```
29
29
 
30
30
  Configure `on_error` to catch API requests returning a `400..599` HTTP status.
@@ -32,23 +32,38 @@ Configure `on_error` to catch API requests returning a `400..599` HTTP status.
32
32
  ```ruby
33
33
  flinks = Flinks.new({
34
34
  customer_id: ENV['FLINKS_CUSTOMER_ID'],
35
- api_endpoint: "https://YOURNAME-api.private.fin.ag/v3/",
36
35
  on_error: Proc.new do |status, message, body|
37
36
  p [status, message, body]
38
37
  end
39
38
  })
40
39
  ```
41
40
 
42
- Configure `debug` to print every API requests and responses.
41
+ Configure `debug` to print every API requests and responses. Default to `false`.
43
42
 
44
43
  ```ruby
45
44
  flinks = Flinks.new({
46
45
  customer_id: ENV['FLINKS_CUSTOMER_ID'],
47
- api_endpoint: "https://YOURNAME-api.private.fin.ag/v3/",
48
46
  debug: true
49
47
  })
50
48
  ```
51
49
 
50
+ Configure `raw` to get the raw, non-transformed API response. Default to `false`.
51
+
52
+ ```ruby
53
+ flinks = Flinks.new({
54
+ customer_id: ENV['FLINKS_CUSTOMER_ID'],
55
+ raw: true
56
+ })
57
+ ```
58
+
59
+ ### Sandbox and Production
60
+
61
+ By default, the client uses the sandbox API endpoint: `https://sandbox.flinks.io/v3/`. In production, the API endpoint must be configured with your own:
62
+
63
+ ```ruby
64
+ flinks = Flinks.new(customer_id: ENV['FLINKS_CUSTOMER_ID'], api_endpoint: "https://YOURNAME-api.private.fin.ag/v3/")
65
+ ```
66
+
52
67
  ### Endpoints
53
68
 
54
69
  #### Authorize
@@ -70,8 +85,6 @@ flinks = Flinks.new({
70
85
 
71
86
  #### Refresh
72
87
 
73
- - `activate_scheduled_refresh(login_id:)`
74
- - `deactivate_scheduled_refresh(login_id:)`
75
88
  - `set_scheduled_refresh(activated, login_id:)`
76
89
 
77
90
  #### Statement
@@ -79,6 +92,34 @@ flinks = Flinks.new({
79
92
  - `statements(options:)`
80
93
  - `statements_async(request_id:)`
81
94
 
95
+ ## Errors
96
+
97
+ ### Client Errors
98
+
99
+ | Error | Description |
100
+ |-------|-------------|
101
+ | `Flinks::ClientError` | Raised when API returns a 400..499 HTTP status code |
102
+ | `Flinks::BadRequest` | Raised when API returns a 400 HTTP status code |
103
+ | `Flinks::Unauthorized` | Raised when API returns a 401 HTTP status code |
104
+ | `Flinks::Forbidden` | Raised when API returns a 403 HTTP status code |
105
+ | `Flinks::TooManyRequests` | Raised when API returns a 403 HTTP status code for rate limit exceeded |
106
+ | `Flinks::NotFound` | Raised when API returns a 404 HTTP status code |
107
+ | `Flinks::MethodNotAllowed` | Raised when API returns a 405 HTTP status code |
108
+ | `Flinks::NotAcceptable` | Raised when API returns a 406 HTTP status code |
109
+ | `Flinks::Conflict` | Raised when API returns a 409 HTTP status code |
110
+ | `Flinks::UnsupportedMediaType` | Raised when API returns a 415 HTTP status code |
111
+ | `Flinks::UnprocessableEntity` | Raised when API returns a 422 HTTP status code |
112
+
113
+ ### Server Errors
114
+
115
+ | Error | Description |
116
+ |-------|-------------|
117
+ | `Flinks::ServerError` | Raised when API returns a 500..599 HTTP status code |
118
+ | `Flinks::InternalServerError` | Raised when API returns a 500 HTTP status code |
119
+ | `Flinks::NotImplemented` | Raised when API returns a 501 HTTP status code |
120
+ | `Flinks::BadGateway` | Raised when API returns a 502 HTTP status code |
121
+ | `Flinks::ServiceUnavailable` | Raised when API returns a 503 HTTP status code |
122
+
82
123
  ## Documentation
83
124
 
84
125
  See the [API docs](https://sandbox-api.flinks.io).
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.4.2
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: flinks 0.3.1 ruby lib
5
+ # stub: flinks 0.4.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "flinks".freeze
9
- s.version = "0.3.1"
9
+ s.version = "0.4.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Philippe Dionne".freeze]
14
- s.date = "2018-02-16"
14
+ s.date = "2018-06-18"
15
15
  s.description = "Flinks financial services API client".freeze
16
16
  s.email = "dionne.phil@gmail.com".freeze
17
17
  s.extra_rdoc_files = [
@@ -48,7 +48,7 @@ Gem::Specification.new do |s|
48
48
  ]
49
49
  s.homepage = "http://github.com/phildionne/flinks".freeze
50
50
  s.licenses = ["MIT".freeze]
51
- s.rubygems_version = "2.7.3".freeze
51
+ s.rubygems_version = "2.7.6".freeze
52
52
  s.summary = "Flinks API client".freeze
53
53
 
54
54
  if s.respond_to? :specification_version then
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'flinks/client'
2
4
 
3
5
  module Flinks
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dry-validation'
2
4
 
3
5
  module Flinks
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dry-validation'
2
4
 
3
5
  module Flinks
@@ -35,6 +37,8 @@ module Flinks
35
37
 
36
38
  AuthorizeMultipleRequestSchema = Dry::Validation.Schema do
37
39
  required(:login_ids).each(:str?)
40
+
41
+ optional(:most_recent_cached).filled(:bool?)
38
42
  end
39
43
 
40
44
  # @see https://sandbox-api.flinks.io/Readme/#authorize
@@ -62,8 +66,9 @@ module Flinks
62
66
 
63
67
  # @see https://sandbox-api.flinks.io/Readme/#authorize-multiple
64
68
  # @param login_ids [Array]
69
+ # @param options [Hash]
65
70
  # @return [Hash]
66
- def authorize_multiple(login_ids:)
71
+ def authorize_multiple(login_ids:, options: {})
67
72
  payload = options.merge(login_ids: login_ids)
68
73
  validate_request!(AuthorizeMultipleRequestSchema, payload)
69
74
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Flinks
2
4
  module API
3
5
  module Card
@@ -1,20 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Flinks
2
4
  module API
3
5
  module Refresh
4
-
5
- # @see https://sandbox-api.flinks.io/Readme/#scheduling-background-refresh
6
- # @param login_id [String]
7
- # @return [Hash]
8
- def activate_scheduled_refresh(login_id:)
9
- patch("#{customer_id}/BankingServices/ActivateScheduledRefresh/#{login_id}")
10
- end
11
-
12
- # @see https://sandbox-api.flinks.io/Readme/#scheduling-background-refresh
13
- # @param login_id [String]
14
- # @return [Hash]
15
- def deactivate_scheduled_refresh(login_id:)
16
- patch("#{customer_id}/BankingServices/DeactivateScheduledRefresh/#{login_id}")
17
- end
18
6
 
19
7
  # @see https://sandbox-api.flinks.io/Readme/#scheduling-background-refresh
20
8
  # @param activated [Boolean]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dry-validation'
2
4
 
3
5
  module Flinks
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support'
2
4
  require 'active_support/core_ext/object'
3
5
  require 'dry-initializer'
@@ -25,6 +27,7 @@ module Flinks
25
27
  option :user_agent, default: proc { "Flinks Ruby Gem" }
26
28
  option :on_error, default: proc { proc {} }
27
29
  option :debug, default: proc { false }
30
+ option :raw, default: proc { false }
28
31
 
29
32
 
30
33
  private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Flinks
2
4
  class Error < StandardError
3
5
  attr_reader :response, :code
@@ -6,7 +8,8 @@ module Flinks
6
8
  # @return [Flinks::Error]
7
9
  def self.from_response(response)
8
10
  klass = case response.code
9
- when 400 then Flinks::BadRequest
11
+ when 202 then error_for_202(response)
12
+ when 400 then error_for_400(response)
10
13
  when 401 then Flinks::Unauthorized
11
14
  when 403 then error_for_403(response)
12
15
  when 404 then Flinks::NotFound
@@ -28,6 +31,26 @@ module Flinks
28
31
  klass.new(response)
29
32
  end
30
33
 
34
+ # @param response [HTTP::Response]
35
+ # @return [Flinks::Error]
36
+ def self.error_for_202(response)
37
+ if response.parse['FlinksCode'] == 'OPERATION_PENDING'
38
+ Flinks::OperationPending
39
+ else
40
+ Flinks::OperationDispatched
41
+ end
42
+ end
43
+
44
+ # @param response [HTTP::Response]
45
+ # @return [Flinks::Error]
46
+ def self.error_for_400(response)
47
+ if response.parse['FlinksCode'] == 'SESSION_NONEXISTENT'
48
+ Flinks::SessionNonexistent
49
+ else
50
+ Flinks::BadRequest
51
+ end
52
+ end
53
+
31
54
  # @param response [HTTP::Response]
32
55
  # @return [Flinks::Error]
33
56
  def self.error_for_403(response)
@@ -56,12 +79,21 @@ module Flinks
56
79
  end
57
80
  end
58
81
 
82
+ # Raised when API returns a 202 HTTP status code
83
+ class OperationPending < Error; end
84
+
85
+ # Raised when API returns a 202 HTTP status code
86
+ class OperationDispatched < Error; end
87
+
59
88
  # Raised when API returns a 400..499 HTTP status code
60
89
  class ClientError < Error; end
61
90
 
62
91
  # Raised when API returns a 400 HTTP status code
63
92
  class BadRequest < ClientError; end
64
93
 
94
+ # Raised when API returns a 400 HTTP status code
95
+ class SessionNonexistent < ClientError; end
96
+
65
97
  # Raised when API returns a 401 HTTP status code
66
98
  class Unauthorized < ClientError; end
67
99
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/core_ext/hash/indifferent_access'
2
4
  require 'http'
3
5
 
@@ -72,7 +74,9 @@ module Flinks
72
74
  data = response.parse
73
75
 
74
76
  # Transform data
75
- data.deep_transform_keys { |k| k.underscore }.with_indifferent_access
77
+ unless raw
78
+ data.deep_transform_keys { |k| k.underscore }.with_indifferent_access
79
+ end
76
80
  end
77
81
  end
78
82
  end
@@ -55,7 +55,7 @@ describe Flinks::API::Authorize do
55
55
 
56
56
  it "raises an error" do
57
57
  expect {
58
- client.accounts_summary(login_id: login_id, options: options)
58
+ client.authorize(login_id: login_id, options: options)
59
59
  }.to raise_error(ArgumentError)
60
60
  end
61
61
  end
@@ -115,4 +115,43 @@ describe Flinks::API::Authorize do
115
115
  end
116
116
  end
117
117
  end
118
+
119
+ describe '#authorize_multiple' do
120
+ let(:login_ids) { ['login_id_1', 'login_id_2'] }
121
+
122
+ before do
123
+ stub_request(:post, /#{api_endpoint}/)
124
+ .to_return(status: 200, body: "{}", headers: { 'Content-Type'=>'application/json' })
125
+ end
126
+
127
+ it "returns an object" do
128
+ expect(client.authorize_multiple(login_ids: login_ids)).to be_a(Hash)
129
+ end
130
+
131
+ context "with valid options" do
132
+ let(:options) do
133
+ {
134
+ most_recent_cached: true,
135
+ }
136
+ end
137
+
138
+ it "returns an object" do
139
+ expect(client.authorize_multiple(login_ids: login_ids, options: options)).to be_a(Hash)
140
+ end
141
+ end
142
+
143
+ context "with invalid options" do
144
+ let(:options) do
145
+ {
146
+ most_recent_cached: 'invalid'
147
+ }
148
+ end
149
+
150
+ it "raises an error" do
151
+ expect {
152
+ client.authorize_multiple(login_ids: login_ids, options: options)
153
+ }.to raise_error(ArgumentError)
154
+ end
155
+ end
156
+ end
118
157
  end
@@ -5,28 +5,6 @@ describe Flinks::API::Refresh do
5
5
  let(:client) { Flinks.new(customer_id: 'customer_id') }
6
6
  let(:login_id) { 'login_id' }
7
7
 
8
- describe '#activate_scheduled_refresh' do
9
- before do
10
- stub_request(:patch, /#{api_endpoint}/)
11
- .to_return(status: 200, body: "{}", headers: { 'Content-Type'=>'application/json' })
12
- end
13
-
14
- it "returns an object" do
15
- expect(client.activate_scheduled_refresh(login_id: login_id)).to be_a(Hash)
16
- end
17
- end
18
-
19
- describe '#deactivate_scheduled_refresh' do
20
- before do
21
- stub_request(:patch, /#{api_endpoint}/)
22
- .to_return(status: 200, body: "{}", headers: { 'Content-Type'=>'application/json' })
23
- end
24
-
25
- it "returns an object" do
26
- expect(client.deactivate_scheduled_refresh(login_id: login_id)).to be_a(Hash)
27
- end
28
- end
29
-
30
8
  describe '#set_scheduled_refresh' do
31
9
  before do
32
10
  stub_request(:patch, /#{api_endpoint}/)
@@ -18,6 +18,7 @@ describe Flinks::Client do
18
18
  expect(client.user_agent).not_to be_nil
19
19
  expect(client.on_error).not_to be_nil
20
20
  expect(client.debug).not_to be_nil
21
+ expect(client.raw).not_to be_nil
21
22
  end
22
23
  end
23
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flinks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philippe Dionne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-16 00:00:00.000000000 Z
11
+ date: 2018-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -218,7 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
218
  version: '0'
219
219
  requirements: []
220
220
  rubyforge_project:
221
- rubygems_version: 2.7.3
221
+ rubygems_version: 2.7.6
222
222
  signing_key:
223
223
  specification_version: 4
224
224
  summary: Flinks API client