travel_time 0.5.5 → 0.5.6

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: 980351a64bc02a09468036537289c94c69e92524ced3303539a4849254f1ad6b
4
- data.tar.gz: 70232585d25f0a8dfa63b4f4b4a2fef827381e509ded12f3f641cfff58c88482
3
+ metadata.gz: 3d61024c00091bdbbf0036dcb0f0b3cbc13dfdf0f0690aa847cd2720ba9d7866
4
+ data.tar.gz: b7eb9f385d345cb2d115e34a37b85e6128730f3b87ca6ee6f34e79988b93236d
5
5
  SHA512:
6
- metadata.gz: 7f5c2aec26726acb47a74cfdd6608a0db0243fcfb7fa8c24ab4e86e9bf36bad03294b16bbeb8cbe6d1b1b671c801fb34227a140e1e6053b9612213e12e270d70
7
- data.tar.gz: 8c43d33f903df991fa35162d170ef71fa9ebb44cf21dd1570e718ae8e6adf98bbf825117dc4235dc38b843a4956f664f62e42968f03fb98461082569af78336d
6
+ metadata.gz: 16b1444ca180d2a151794b3eacc38d7f88b7873cb1c7c83446d53e19bee5b7b9ce4bf502075fd8f9215489a8132d6296288ecbe85e14ffad48f74ac10e3cd999
7
+ data.tar.gz: 9f670c473b8536204514f9f638e4cd654eeab197224f46c0a91552a6852d6a9ff35dcdf620220f07b7afbd915ac536c60a5fcfa87ebe45c657ad1f38323e56dd
data/README.md CHANGED
@@ -68,6 +68,14 @@ departure_search = {
68
68
  client.time_map(departure_searches: [departure_search])
69
69
  ```
70
70
 
71
+ ### Rate Limiting
72
+
73
+ You may specify an optional rate limit when initializing your client. The `rate_limit` parameter sets a cap on the number of requests that can be made to the API in 60 seconds. Requests are balanced at equal intervals.
74
+
75
+ ```ruby
76
+ client = TravelTime::Client.new(rate_limit = 60)
77
+ ```
78
+
71
79
  ### [Isochrones (Time Map)](https://traveltime.com/docs/api/reference/isochrones)
72
80
  Given origin coordinates, find shapes of zones reachable within corresponding travel time.
73
81
  Find unions/intersections between different searches.
@@ -3,15 +3,28 @@
3
3
  require 'faraday'
4
4
  require 'travel_time/middleware/authentication'
5
5
  require 'travel_time/middleware/proto'
6
+ require 'limiter'
6
7
 
7
8
  module TravelTime
8
9
  # The Client class provides the main interface to interact with the TravelTime API
9
10
  class Client # rubocop:disable Metrics/ClassLength
11
+ extend Limiter::Mixin
10
12
  API_BASE_URL = 'https://api.traveltimeapp.com/v4/'
11
13
 
12
14
  attr_reader :connection, :proto_connection
13
15
 
14
- def initialize
16
+ def initialize(rate_limit = nil)
17
+ init_connection
18
+ init_proto_connection
19
+
20
+ return unless rate_limit
21
+
22
+ %i[perform_request perform_request_proto].each do |method_name|
23
+ self.class.limit_method method_name, balanced: true, rate: rate_limit
24
+ end
25
+ end
26
+
27
+ def init_connection
15
28
  @connection = Faraday.new(API_BASE_URL) do |f|
16
29
  f.request :json
17
30
  f.response :raise_error if TravelTime.config.raise_on_failure
@@ -20,8 +33,6 @@ module TravelTime
20
33
  f.use TravelTime::Middleware::Authentication
21
34
  f.adapter TravelTime.config.http_adapter || Faraday.default_adapter
22
35
  end
23
-
24
- init_proto_connection
25
36
  end
26
37
 
27
38
  def init_proto_connection
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TravelTime
4
- VERSION = '0.5.5'
4
+ VERSION = '0.5.6'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: travel_time
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - TravelTime Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-13 00:00:00.000000000 Z
11
+ date: 2023-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-configurable
@@ -64,6 +64,20 @@ dependencies:
64
64
  - - "<"
65
65
  - !ruby/object:Gem::Version
66
66
  version: 3.21.9
67
+ - !ruby/object:Gem::Dependency
68
+ name: ruby-limiter
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: 2.2.2
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: 2.2.2
67
81
  description: TravelTime SDK for Ruby programming language
68
82
  email:
69
83
  - support@traveltime.com