fmrest-core 0.18.0 → 0.19.0.rc1

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: fdfc316e5474cc3abbf196051aa48846f6b04452e0864a320445079a09a3f449
4
- data.tar.gz: d23a6c290f33ab9c43f149de58af85825859aae9f0bc781200395bc883f66009
3
+ metadata.gz: 59a37ccbd8e0d79538853d677fbab969d50c7af665f29636a53d1b3cf2a21ac2
4
+ data.tar.gz: 3772ee36a4f5271588d2b29b29687cb6a1a1173af7fc3603d84d2e502cc88a55
5
5
  SHA512:
6
- metadata.gz: 48ddb1505f075011675b5bfbeb437d42e70dff62912a6c44b0ac454c205332e8e61da6a628c0ae0cda095214d54dded125f8f98fa0af711d2e8e34b1d24332e1
7
- data.tar.gz: 16623334ee707adb60e479d6db8bff23f22aa23cac397e32b839d4dceaa7aed4a2e94558684d08b1eaaa1fb008093b9628014a73b8b7dbe93f3d2cd1bc3498fc
6
+ metadata.gz: 65614bc40c7b149454cc51eea9141dd6a2982d7bb068bc672f06e647244381e1a015ca495fc655e6d20169a1385c5e8358d007d40c8d40f6573be10deb4d7797
7
+ data.tar.gz: b824ecd703afcf6efce3d5ed3a170a1ef5f403c6c65455b1f8dc0bb9f31e8a041cd2cf3daeac92f3dada7fdfc0dc1705ddc6815b0f7be14e3fd55804f0a6bd10
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## Changelog
2
2
 
3
+ ### 0.19.0
4
+
5
+ * Add native support for FileMaker cloud through the `fmrest-cloud` gem
6
+
3
7
  ### 0.18.0
4
8
 
5
9
  * Better support for portals with mismatching field qualifiers
data/README.md CHANGED
@@ -5,14 +5,27 @@
5
5
  [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](https://rubydoc.info/github/beezwax/fmrest-ruby)
6
6
 
7
7
  A Ruby client for
8
- [FileMaker 18 and 19's Data API](https://help.claris.com/en/data-api-guide)
9
- using
10
- [Faraday](https://github.com/lostisland/faraday) and with optional
11
- ActiveRecord-ish ORM features through [Spyke](https://github.com/balvig/spyke).
12
-
13
- fmrest-ruby only partially implements FileMaker 19's Data API.
14
- See the [implementation completeness table](#api-implementation-completeness-table)
15
- to see if a feature you need is natively supported by the gem.
8
+ [FileMaker's Data API](https://help.claris.com/en/data-api-guide)
9
+ with ActiveRecord-ish ORM features.
10
+
11
+ While pretty feature-rich, fmrest-ruby doesn't yet support 100% of FileMaker
12
+ 19's Data API features. See the [implementation completeness
13
+ table](#api-implementation-completeness-table) to check if a feature you need
14
+ is natively supported by the gem.
15
+
16
+ ## Contents
17
+
18
+ * [Gems](#gems)
19
+ * [Installation](#installation)
20
+ * [Simple example](#simple-example)
21
+ * [Connection settings](#connection-settings)
22
+ * [Session token store](#session-token-store)
23
+ * [Date fields and timezones](#date-fields-and-timezones)
24
+ * [ActiveRecord-like ORM (fmrest-spyke)](#activerecord-like-orm--fmrest-spyke-)
25
+ * [Logging](#logging)
26
+ * [Gotchas](#gotchas)
27
+ * [API implementation completeness table](#api-implementation-completeness-table)
28
+ * [Supported Ruby versions](#supported-ruby-versions)
16
29
 
17
30
  ## Gems
18
31
 
@@ -20,28 +33,26 @@ The `fmrest` gem is a wrapper for two other gems:
20
33
 
21
34
  * `fmrest-spyke`, providing an ActiveRecord-like ORM library built on top
22
35
  of `fmrest-core` and [Spyke](https://github.com/balvig/spyke).
23
- * `fmrest-core`, providing the core Faraday connection builder, session
36
+ * `fmrest-core`, providing the core
37
+ [Faraday](https://github.com/lostisland/faraday) connection builder, session
24
38
  management, and other core utilities.
25
39
 
40
+ In addition, the optional `fmrest-cloud` gem adds support for FileMaker Cloud.
41
+ See the [main document on connecting to FileMaker
42
+ Cloud](docs/FileMakerCloud.md).
43
+
26
44
  ## Installation
27
45
 
28
- Add this to your Gemfile:
46
+ In your Gemfile:
29
47
 
30
48
  ```ruby
31
49
  gem 'fmrest'
32
- ```
33
-
34
- Or if you just want to use the Faraday connection without the ORM features:
35
50
 
36
- ```ruby
37
- gem 'fmrest-core'
51
+ # Optional: if your files are hosted on FileMaker Cloud
52
+ gem 'fmrest-cloud'
38
53
  ```
39
54
 
40
- ## Simple examples
41
-
42
- ### ORM example
43
-
44
- Most people would want to use the ORM features:
55
+ ## Simple example
45
56
 
46
57
  ```ruby
47
58
  # A Layout model connecting to the "Honeybees Web" FileMaker layout
@@ -90,32 +101,9 @@ bee.tasks.build(urgency: "Today")
90
101
  bee.save
91
102
  ```
92
103
 
93
- ### Barebones connection example (without ORM)
94
-
95
- In case you don't need the advanced ORM features (e.g. if you only need minimal
96
- Data API interaction and just want a lightweight solution) you can simply use
97
- the Faraday connection provided by `fmrest-core`:
98
-
99
- ```ruby
100
- connection = FmRest::V1.build_connection(
101
- host: "…",
102
- database: "…",
103
- username: "…",
104
- password: "…"
105
- )
106
-
107
- # Get all records (as parsed JSON)
108
- connection.get("layouts/FancyLayout/records")
109
-
110
- # Create new record
111
- connection.post do |req|
112
- req.url "layouts/FancyLayout/records"
113
-
114
- # You can just pass a hash for the JSON body
115
- req.body = { … }
116
- end
117
- ```
118
-
104
+ In case you don't want the ORM features (i.e. you only need authentication and
105
+ JSON parsing, and are comfortable writing the API requests manually without the
106
+ ORM overhead) you can use the Faraday connection provided by `fmrest-core`.
119
107
  See the [main document on using the base
120
108
  connection](docs/BaseConnectionUsage.md) for more.
121
109
 
@@ -125,10 +113,6 @@ The minimum required connection settings are `:host`, `:database`, `:username`
125
113
  and `:password`, but fmrest-ruby has many other options you can pass when
126
114
  setting up a connection (see [full list](#full-list-of-available-options) below).
127
115
 
128
- If you're using FileMaker Cloud you may need to pass `:fmid_token` instead
129
- of the regular `:username` and `:password`. See the [main document on
130
- connecting to FileMaker Cloud](docs/FileMakerCloud.md) for more info.
131
-
132
116
  `:ssl` and `:proxy` are forwarded to the underlying
133
117
  [Faraday](https://github.com/lostisland/faraday) connection. You can use this
134
118
  to, for instance, disable SSL verification:
@@ -153,7 +137,6 @@ Option | Description | Format
153
137
  `:username` | A Data API-ready account | String | None
154
138
  `:password` | Your password | String | None
155
139
  `:account_name` | Alias of `:username` | String | None
156
- `:fmid_token` | Claris ID token (only needed for FileMaker Cloud) | String | None
157
140
  `:ssl` | SSL options to be forwarded to Faraday | Faraday SSL options | None
158
141
  `:proxy` | Proxy options to be forwarded to Faraday | Faraday proxy options | None
159
142
  `:log` | Log JSON responses to STDOUT | Boolean | `false`
@@ -165,6 +148,11 @@ Option | Description | Format
165
148
  `:timezone` | The timezone for the FM server | `:local` \| `:utc` \| `nil` | `nil`
166
149
  `:autologin` | Whether to automatically start Data API sessions | Boolean | `true`
167
150
  `:token` | Used to manually provide a session token (e.g. if `:autologin` is `false`) | String | None
151
+ `:fmid_token` | Claris ID token (only needed if manually obtaining the token) | String | None
152
+ `:cloud` | Specifies whether the host is using FileMaker Cloud | `:auto` \| Boolean | `:auto`
153
+ `:cognito_client_id`| Overwrites the hardcoded FileMaker Cloud Cognito Client ID | String | None
154
+ `:cognito_pool_id` | Overwrites the hardcoded FileMaker Cloud Cognito Pool ID | String | None
155
+ `:aws_region` | Overwrites the hardcoded FileMaker Cloud AWS Region | String | None
168
156
 
169
157
  ### Default connection settings
170
158
 
@@ -207,7 +195,7 @@ See the [main document on date fields](docs/DateFields.md) for more info.
207
195
  ## ActiveRecord-like ORM (fmrest-spyke)
208
196
 
209
197
  [Spyke](https://github.com/balvig/spyke) is an ActiveRecord-like gem for
210
- building REST ORM models. fmrest-ruby builds its ORM features atop Spyke,
198
+ building REST ORM models. fmrest-ruby uses it to build its ORM features,
211
199
  bundled in the `fmrest-spyke` gem (already included if you're using the
212
200
  `fmrest` gem).
213
201
 
@@ -265,39 +253,33 @@ class Honeybee < FmRest::Layout
265
253
  end
266
254
  ```
267
255
 
268
- This will automatically create a proper Faraday connection using those
269
- connection settings, so you don't have to worry about setting that up.
270
-
271
- Note that these settings are inheritable, so you could create a base class that
256
+ These settings are class-inheritable, so you could create a base class that
272
257
  does the initial connection setup and then inherit from it in models using that
273
258
  same connection. E.g.:
274
259
 
275
260
  ```ruby
276
- class BeeBase < FmRest::Layout
261
+ class ApplicationFmLayout < FmRest::Layout
277
262
  self.fmrest_config = { host: "…", database: "…", … }
278
263
  end
279
264
 
280
- class Honeybee < BeeBase
281
- # This model will use the same connection as BeeBase
265
+ class Honeybee < ApplicationFmLayout
266
+ # This model will use the same connection as ApplicationFmLayout
282
267
  end
283
268
  ```
284
269
 
285
- Also, if not set, your model will try to use
270
+ If `fmrest_config` is not set, your model will try to use
286
271
  `FmRest.default_connection_settings` instead.
287
272
 
288
273
  #### Connection settings overlays
289
274
 
290
275
  There may be cases where you want to use a different set of connection settings
291
- depending on context, or simply change the connection settings over time. For
292
- example, if you want to use username and password provided by the user in a web
293
- application, or if you're connecting using an expiring Claris ID token. Since
294
- `.fmrest_config` is set at the class level, changing the username/password for
295
- the model in one context would also change it in all other contexts, leading to
296
- security issues.
276
+ depending on context. For example, if you want to use username and password
277
+ provided by the user in a web application. Since `.fmrest_config` is set at the
278
+ class level, changing the username/password for the model in one context would
279
+ also change it in all other contexts, leading to security issues.
297
280
 
298
- To solve this scenario, fmrest-ruby provides a way of defining thread-local and
299
- reversible connection settings overlays through
300
- `.fmrest_config_overlay=`.
281
+ To solve this scenario, fmrest-ruby provides a way of defining thread-local,
282
+ reversible connection settings overlays through `.fmrest_config_overlay=`.
301
283
 
302
284
  See the [main document on connection setting overlays](docs/ConfigOverlays.md)
303
285
  for details on how it works.
@@ -461,12 +443,10 @@ for details.
461
443
 
462
444
  ### Rescuable mixin
463
445
 
464
- Sometimes you may want to handle Data API errors at the model level. For
465
- instance, if you're logging in to a file hosted by FileMaker Cloud using a
466
- Claris ID token, and you want to be able to renew said token when it fails to
467
- log you in. For such cases fmrest-ruby provides an off-by-default mixin called
468
- `Rescuable` that provides convenience macros for that. If you've used Ruby on
469
- Rails you may be familiar with its syntax from controllers. E.g.
446
+ Sometimes you may want to handle Data API errors at the model level. For such
447
+ cases fmrest-ruby provides an off-by-default mixin called `Rescuable` that
448
+ provides convenience macros for that. If you've used Ruby on Rails you may be
449
+ familiar with its syntax from controllers. E.g.
470
450
 
471
451
  ```ruby
472
452
  class BeeBase < FmRest::Layout
@@ -474,9 +454,6 @@ class BeeBase < FmRest::Layout
474
454
 
475
455
  rescue_from FmRest::APIError::SystemError, with: :notify_admin_of_system_error
476
456
 
477
- # Shorthand for rescue_with FmRest::APIError::AccountError, ...
478
- rescue_account_error { ClarisIDTokenManager.expire_token }
479
-
480
457
  def self.notify_admin_of_system_error(e)
481
458
  # Shoot an email to the FM admin...
482
459
  end
@@ -549,14 +526,14 @@ Read about unexpected scenarios in the [gotchas doc](docs/Gotchas.md).
549
526
 
550
527
  ## API implementation completeness table
551
528
 
552
- FM Data API reference: https://fmhelp.filemaker.com/docs/18/en/dataapi/
529
+ FM Data API reference: https://help.claris.com/en/data-api-guide/
553
530
 
554
- | FM 18 Data API feature | Supported by basic connection | Supported by FmRest::Layout |
531
+ | FM 19 Data API feature | Supported by basic connection | Supported by FmRest::Layout |
555
532
  |-------------------------------------|-------------------------------|-----------------------------|
556
533
  | Log in using HTTP Basic Auth | Yes | Yes |
557
534
  | Log in using OAuth | No | No |
558
535
  | Log in to an external data source | No | No |
559
- | Log in using Claris ID account | Yes | Yes |
536
+ | Log in using Claris ID account (FileMaker Cloud) | Yes | Yes |
560
537
  | Log out | Yes | Yes |
561
538
  | Get product information | Manual* | No |
562
539
  | Get database names | Manual* | No |
@@ -592,9 +569,9 @@ the following Ruby implementations:
592
569
  ## Gem development
593
570
 
594
571
  After checking out the repo, run `bin/setup` to install dependencies. Then, run
595
- `rake spec` to run the tests. You can also run `bin/console` for an interactive
596
- prompt that will allow you to experiment (it will auto-load all fixtures in
597
- spec/fixtures).
572
+ `bundle exec rspec` to run the specs. You can also run `bin/console` for an
573
+ interactive prompt that will allow you to experiment (it will auto-load all
574
+ fixtures in spec/fixtures).
598
575
 
599
576
  To install all gems onto your local machine, run
600
577
  `bundle exec rake all:install`. To release a new version, update the version
@@ -602,12 +579,6 @@ number in `lib/fmrest/version.rb`, and then run `bundle exec rake all:release`,
602
579
  which will create a git tag for the version, push git commits and tags, and
603
580
  push the `.gem` files to [rubygems.org](https://rubygems.org).
604
581
 
605
- ## License
606
-
607
- The gem is available as open source under the terms of the
608
- [MIT License](https://opensource.org/licenses/MIT).
609
- See [LICENSE.txt](LICENSE.txt).
610
-
611
582
  ## Disclaimer
612
583
 
613
584
  This project is not sponsored by or otherwise affiliated with Claris
@@ -31,6 +31,10 @@ module FmRest
31
31
  timestamp_format
32
32
  time_format
33
33
  timezone
34
+ cognito_client_id
35
+ cognito_pool_id
36
+ aws_region
37
+ cloud
34
38
  ).freeze
35
39
 
36
40
  # NOTE: password intentionally left non-required since it's only really
@@ -51,7 +55,8 @@ module FmRest
51
55
  date_format: DEFAULT_DATE_FORMAT,
52
56
  time_format: DEFAULT_TIME_FORMAT,
53
57
  timestamp_format: DEFAULT_TIMESTAMP_FORMAT,
54
- coerce_dates: false
58
+ coerce_dates: false,
59
+ cloud: :auto,
55
60
  }.freeze
56
61
 
57
62
  def self.wrap(settings, skip_validation: false)
@@ -7,19 +7,19 @@ module FmRest
7
7
  class Memory < Base
8
8
  def initialize(*args)
9
9
  super
10
- @tokens = {}
10
+ @@tokens ||= {}
11
11
  end
12
12
 
13
13
  def delete(key)
14
- @tokens.delete(key)
14
+ @@tokens.delete(key)
15
15
  end
16
16
 
17
17
  def load(key)
18
- @tokens[key]
18
+ @@tokens[key]
19
19
  end
20
20
 
21
21
  def store(key, value)
22
- @tokens[key] = value
22
+ @@tokens[key] = value
23
23
  end
24
24
  end
25
25
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fmrest/token_store/base"
4
+
5
+ module FmRest
6
+ module TokenStore
7
+ # Similar to Memory token store, but using instance vars instead of class
8
+ # vars. Mainly useful for specs, where we want to scope token persistance
9
+ # to a spec's context only
10
+ class ShortMemory < Base
11
+ def initialize(*args)
12
+ super
13
+ @tokens ||= {}
14
+ end
15
+
16
+ def delete(key)
17
+ @tokens.delete(key)
18
+ end
19
+
20
+ def load(key)
21
+ @tokens[key]
22
+ end
23
+
24
+ def store(key, value)
25
+ @tokens[key] = value
26
+ end
27
+ end
28
+ end
29
+ end
@@ -8,5 +8,29 @@ module FmRest
8
8
  autoload :ActiveRecord, "fmrest/token_store/active_record"
9
9
  autoload :Moneta, "fmrest/token_store/moneta"
10
10
  autoload :Redis, "fmrest/token_store/redis"
11
+ autoload :ShortMemory, "fmrest/token_store/short_memory"
12
+
13
+ TOKEN_STORE_INTERFACE = [:load, :store, :delete].freeze
14
+
15
+ private
16
+
17
+ def token_store
18
+ @token_store ||=
19
+ if TOKEN_STORE_INTERFACE.all? { |method| token_store_option.respond_to?(method) }
20
+ token_store_option
21
+ elsif token_store_option.kind_of?(Class)
22
+ if token_store_option.respond_to?(:instance)
23
+ token_store_option.instance
24
+ else
25
+ token_store_option.new
26
+ end
27
+ else
28
+ FmRest::TokenStore::Memory.new
29
+ end
30
+ end
31
+
32
+ def token_store_option
33
+ raise NotImplementedError
34
+ end
11
35
  end
12
36
  end
@@ -12,6 +12,8 @@ module FmRest
12
12
  AUTH_CONNECTION_HEADERS = DEFAULT_HEADERS.merge("Content-Type" => "application/json").freeze
13
13
  CLARIS_ID_HTTP_AUTH_TYPE = "FMID"
14
14
 
15
+ FILEMAKER_CLOUD_HOST_MATCHER = /\.filemaker-cloud\.com\Z/.freeze
16
+
15
17
  # Builds a complete DAPI Faraday connection with middleware already
16
18
  # configured to handle authentication, JSON parsing, logging and DAPI
17
19
  # error handling. A block can be optionally given for additional
@@ -57,11 +59,18 @@ module FmRest
57
59
  def auth_connection(settings = FmRest.default_connection_settings)
58
60
  settings = ConnectionSettings.wrap(settings)
59
61
 
62
+ if is_cloud_host = cloud_host?(settings)
63
+ FmRest.require_cloud_support
64
+ end
65
+
60
66
  base_connection(settings, headers: AUTH_CONNECTION_HEADERS) do |conn|
67
+ conn.use Cloud::AuthErrorHandler, settings if is_cloud_host
61
68
  conn.use RaiseErrors
62
69
 
63
70
  if settings.fmid_token?
64
- conn.request :authorization, CLARIS_ID_HTTP_AUTH_TYPE, settings.fmid_token
71
+ conn.request :authorization, CLARIS_ID_HTTP_AUTH_TYPE, -> { settings.fmid_token }
72
+ elsif is_cloud_host
73
+ conn.request :authorization, CLARIS_ID_HTTP_AUTH_TYPE, -> { Cloud::ClarisIdTokenManager.new(settings).fetch_token }
65
74
  else
66
75
  conn.request :basic_auth, settings.username!, settings.password!
67
76
  end
@@ -117,6 +126,16 @@ module FmRest
117
126
  &block
118
127
  )
119
128
  end
129
+
130
+ private
131
+
132
+ def cloud_host?(settings)
133
+ if settings.cloud == :auto
134
+ return FILEMAKER_CLOUD_HOST_MATCHER =~ settings.host
135
+ end
136
+
137
+ settings.cloud
138
+ end
120
139
  end
121
140
  end
122
141
  end
@@ -7,10 +7,11 @@ module FmRest
7
7
  # FM Data API authentication middleware using the credentials strategy
8
8
  #
9
9
  class TokenSession < Faraday::Middleware
10
+ include TokenStore
11
+
10
12
  class NoSessionTokenSet < FmRest::Error; end
11
13
 
12
14
  HEADER_KEY = "Authorization"
13
- TOKEN_STORE_INTERFACE = [:load, :store, :delete].freeze
14
15
  LOGOUT_PATH_MATCHER = %r{\A(#{FmRest::V1::Connection::DATABASES_PATH}/[^/]+/sessions/)[^/]+\Z}.freeze
15
16
 
16
17
  # @param app [#call]
@@ -110,23 +111,6 @@ module FmRest
110
111
  end
111
112
  end
112
113
 
113
- def token_store
114
- @token_store ||=
115
- begin
116
- if TOKEN_STORE_INTERFACE.all? { |method| token_store_option.respond_to?(method) }
117
- token_store_option
118
- elsif token_store_option.kind_of?(Class)
119
- if token_store_option.respond_to?(:instance)
120
- token_store_option.instance
121
- else
122
- token_store_option.new
123
- end
124
- else
125
- FmRest::TokenStore::Memory.new
126
- end
127
- end
128
- end
129
-
130
114
  def token_store_option
131
115
  @settings.token_store || FmRest.token_store
132
116
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FmRest
4
- VERSION = "0.18.0"
4
+ VERSION = "0.19.0.rc1"
5
5
  end
data/lib/fmrest.rb CHANGED
@@ -59,5 +59,12 @@ module FmRest
59
59
  require "fmrest/spyke"
60
60
  self.Layout(*_)
61
61
  end
62
+
63
+ def require_cloud_support
64
+ require "fmrest/cloud"
65
+ rescue LoadError => e
66
+ e.message << " (Did you include fmrest-cloud in your Gemfile?)" unless e.message.frozen?
67
+ raise e
68
+ end
62
69
  end
63
70
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fmrest-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0
4
+ version: 0.19.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Carbajal
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-16 00:00:00.000000000 Z
11
+ date: 2021-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.9.0
19
+ version: 1.8.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '2.0'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.9.0
29
+ version: 1.8.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '2.0'
@@ -64,7 +64,6 @@ files:
64
64
  - LICENSE.txt
65
65
  - README.md
66
66
  - lib/fmrest-core.rb
67
- - lib/fmrest-spyke.rb
68
67
  - lib/fmrest.rb
69
68
  - lib/fmrest/connection_settings.rb
70
69
  - lib/fmrest/errors.rb
@@ -76,6 +75,7 @@ files:
76
75
  - lib/fmrest/token_store/moneta.rb
77
76
  - lib/fmrest/token_store/null.rb
78
77
  - lib/fmrest/token_store/redis.rb
78
+ - lib/fmrest/token_store/short_memory.rb
79
79
  - lib/fmrest/v1.rb
80
80
  - lib/fmrest/v1/auth.rb
81
81
  - lib/fmrest/v1/connection.rb
@@ -104,9 +104,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
104
104
  version: '0'
105
105
  required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ">="
107
+ - - ">"
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: 1.3.1
110
110
  requirements: []
111
111
  rubygems_version: 3.2.3
112
112
  signing_key:
data/lib/fmrest-spyke.rb DELETED
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "fmrest/spyke"