taric 0.1.14 → 0.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.
- checksums.yaml +4 -4
- data/README.md +18 -0
- data/lib/taric.rb +3 -4
- data/lib/taric/client.rb +48 -10
- data/lib/taric/configuration.rb +11 -1
- data/lib/taric/faraday_middleware/http_exception.rb +5 -1
- data/lib/taric/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f2141c73d11c661c20fc2d93327ae3627fda562
|
4
|
+
data.tar.gz: a0409ad07a9911debed350002f27db2a5dffa0e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb93f0e684f289bff8a2cff4504f1888c708e77c125002af15938d812b21ef94729532c61a594499285d11ad91fb5f7caea6e7b3a2292c96caa8024f00145300
|
7
|
+
data.tar.gz: c93ec5b2740a9dcfdba453e65f4dcb46f4f34030eb1c3ff0ecc2e607a284e2464bf2e7769dcecda2e640d3685854ed93e92fe3bf421a3e59c80261257414ee37
|
data/README.md
CHANGED
@@ -79,6 +79,24 @@ client = Taric.client(region: :na)
|
|
79
79
|
client = Taric.client(region: 'kr')
|
80
80
|
```
|
81
81
|
|
82
|
+
Taric also supports parallel HTTP requests via Typhoeus.
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
# Be sure to include the adapter
|
86
|
+
require 'typhoeus/adapters/faraday'
|
87
|
+
|
88
|
+
# from regular client...
|
89
|
+
client = Taric.client(region: :na)
|
90
|
+
|
91
|
+
# ...to parallel mode. Just chain the operation methods
|
92
|
+
parallel_client = client.in_parallel.match(id: 1).match(id: 42)
|
93
|
+
|
94
|
+
# When you're ready, execute! Note, this clears the operations.
|
95
|
+
# By default each response returns a hash with HTTP status
|
96
|
+
# and body e.g. {status: 200, body: [1778689691]}
|
97
|
+
responses = parallel_client.execute!
|
98
|
+
```
|
99
|
+
|
82
100
|
### Champion
|
83
101
|
|
84
102
|
```ruby
|
data/lib/taric.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'taric/client'
|
2
2
|
require 'taric/configuration'
|
3
|
-
|
3
|
+
|
4
4
|
require 'taric/version'
|
5
5
|
require 'memoist'
|
6
6
|
|
@@ -32,8 +32,7 @@ module Taric
|
|
32
32
|
def client(region: :na, api_key: nil, config: @configuration ||= Taric::Configuration.new)
|
33
33
|
Taric::Client.new(api_key: api_key || config.api_key,
|
34
34
|
region: region.is_a?(String) ? region.to_sym : region,
|
35
|
-
|
36
|
-
response_handler: config.response_handler)
|
35
|
+
config: config)
|
37
36
|
end
|
38
37
|
|
39
38
|
# Sets global configuration. Should only be called once in a process (e.g. Rails initializer)
|
@@ -55,7 +54,7 @@ module Taric
|
|
55
54
|
@configuration = Taric::Configuration.new
|
56
55
|
end
|
57
56
|
|
58
|
-
|
57
|
+
|
59
58
|
end
|
60
59
|
|
61
60
|
end
|
data/lib/taric/client.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
require_relative 'operation/api'
|
2
2
|
require 'memoist'
|
3
|
+
require_relative 'connection'
|
3
4
|
module Taric
|
4
5
|
class Client
|
6
|
+
include Taric::Connection
|
5
7
|
include Taric::Operation::API
|
8
|
+
attr_reader :api_key, :region, :conn, :config
|
6
9
|
|
7
10
|
REGION_ENDPOINT_INFO = {
|
8
11
|
br: {region: 'br'.freeze, platform_id: 'BR1'.freeze, host: 'br.api.pvp.net'},
|
@@ -22,18 +25,23 @@ module Taric
|
|
22
25
|
|
23
26
|
# @param api_key [String] rito api key
|
24
27
|
# @param region [Symbol] region code
|
25
|
-
# @param
|
26
|
-
|
27
|
-
#
|
28
|
-
def initialize(api_key:, region:, requestor:, response_handler:)
|
28
|
+
# @param config [Configuration] configuration
|
29
|
+
def initialize(api_key:, region:, config:) #requestor:, response_handler:)
|
29
30
|
raise ArgumentError, 'api_key cannot be nil' if api_key.nil?
|
30
31
|
raise ArgumentError, 'region cannot be nil' if region.nil?
|
31
32
|
raise ArgumentError, "#{region} is not a valid region, #{REGION_ENDPOINT_STRING_KEYS}" if REGION_ENDPOINT_INFO[region].nil?
|
32
|
-
|
33
33
|
@api_key = api_key
|
34
34
|
@region = region
|
35
|
-
@
|
36
|
-
@
|
35
|
+
@config = config
|
36
|
+
@conn = connection(config)
|
37
|
+
# @requestor = requestor
|
38
|
+
# @response_handler = response_handler
|
39
|
+
end
|
40
|
+
|
41
|
+
# Returns a ParallelClient that will execute operations in parallel.
|
42
|
+
# @return [ParallelClient]
|
43
|
+
def in_parallel
|
44
|
+
ParallelClient.new(self)
|
37
45
|
end
|
38
46
|
|
39
47
|
class << self
|
@@ -43,8 +51,8 @@ module Taric
|
|
43
51
|
#
|
44
52
|
# Sets up and returns hash of api key and region values.
|
45
53
|
#
|
46
|
-
# @
|
47
|
-
# @
|
54
|
+
# @param api_key [String] rito api key
|
55
|
+
# @param region [Symbol] key for region
|
48
56
|
# @return [Hash] of api_key and region info
|
49
57
|
def operation_values(api_key:, region:)
|
50
58
|
{api_key: api_key}.merge!(REGION_ENDPOINT_INFO[region])
|
@@ -69,8 +77,38 @@ module Taric
|
|
69
77
|
private
|
70
78
|
def response_for(operation, options = {})
|
71
79
|
-> url {
|
72
|
-
API_CALL.(url: url, requestor: @requestor, response_handler: @response_handler)
|
80
|
+
API_CALL.(url: url, requestor: @config.requestor.(@conn), response_handler: @config.response_handler)
|
73
81
|
}.(self.class.expand_template(api_key: @api_key, region: @region, operation: operation, options: options))
|
74
82
|
end
|
83
|
+
|
84
|
+
class ParallelClient
|
85
|
+
include Taric::Operation::API
|
86
|
+
def initialize(parent)
|
87
|
+
@parent = parent
|
88
|
+
@operations = []
|
89
|
+
end
|
90
|
+
|
91
|
+
# Processes all chained requests, clears operations, and returns responses with respect to the operations.
|
92
|
+
#
|
93
|
+
# @return [Array] of operation responses, default is hash with response status and body.
|
94
|
+
#
|
95
|
+
# @example
|
96
|
+
# client.in_parallel.match(id: 1).match(id: 42).featured_games.execute!
|
97
|
+
#
|
98
|
+
def execute!
|
99
|
+
-> responses {
|
100
|
+
@operations.clear
|
101
|
+
responses
|
102
|
+
}.(API_CALL.(url: @operations, requestor: @parent.config.parallel_requestor.(@parent.conn), response_handler: @parent.config.parallel_response_handler))
|
103
|
+
end
|
104
|
+
|
105
|
+
private
|
106
|
+
|
107
|
+
def response_for(operation, options = {})
|
108
|
+
@operations << @parent.class.expand_template(api_key: @parent.api_key, region: @parent.region, operation: operation, options: options)
|
109
|
+
self
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
75
113
|
end
|
76
114
|
end
|
data/lib/taric/configuration.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Taric
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :api_key, :format, :user_agent, :connection_opts, :adapter, :region, :requestor, :response_handler
|
3
|
+
attr_accessor :api_key, :format, :user_agent, :connection_opts, :adapter, :region, :requestor, :response_handler, :parallel_requestor, :parallel_response_handler
|
4
4
|
|
5
5
|
DEFAULT_REQUESTOR = -> connection, url {
|
6
6
|
connection.get url
|
@@ -10,6 +10,14 @@ module Taric
|
|
10
10
|
response.body
|
11
11
|
}
|
12
12
|
|
13
|
+
PARALLEL_REQUESTOR = -> connection, urls {
|
14
|
+
urls.map{|url| connection.get url}
|
15
|
+
}.curry
|
16
|
+
|
17
|
+
PARALLEL_RESPONSE_HANDLER = -> responses {
|
18
|
+
responses.map{|response| {body: response.body, status: response.status}}
|
19
|
+
}
|
20
|
+
|
13
21
|
def initialize(options = {})
|
14
22
|
@api_key = options.fetch(:api_key, ENV.fetch('RIOT_API_KEY'.freeze, nil))
|
15
23
|
@format = options.fetch(:format, :json)
|
@@ -19,6 +27,8 @@ module Taric
|
|
19
27
|
@connection_opts = options.fetch(:connection_opts, {})
|
20
28
|
@requestor = options.fetch(:requestor, DEFAULT_REQUESTOR)
|
21
29
|
@response_handler = options.fetch(:response_handler, DEFAULT_RESPONSE_HANDLER)
|
30
|
+
@parallel_requestor = options.fetch(:parallel_requestor, PARALLEL_REQUESTOR)
|
31
|
+
@parallel_response_handler = options.fetch(:parallel_response_handler, PARALLEL_RESPONSE_HANDLER)
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
@@ -13,6 +13,10 @@ module Taric
|
|
13
13
|
|
14
14
|
class HttpException < Faraday::Response::Middleware
|
15
15
|
def call(env)
|
16
|
+
default_request(env) if env.parallel_manager.nil? # might need a better way of detecting this
|
17
|
+
end
|
18
|
+
|
19
|
+
def default_request(env)
|
16
20
|
@app.call(env).on_complete do |response|
|
17
21
|
case response[:status]
|
18
22
|
when 400
|
@@ -33,7 +37,7 @@ module Taric
|
|
33
37
|
raise Taric::FaradayMiddleware::GatewayTimeout, 'Gateway timeout'
|
34
38
|
end
|
35
39
|
end
|
40
|
+
end
|
36
41
|
end
|
37
42
|
end
|
38
|
-
end
|
39
43
|
end
|
data/lib/taric/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taric
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joseph Yi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -215,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
215
215
|
version: '0'
|
216
216
|
requirements: []
|
217
217
|
rubyforge_project:
|
218
|
-
rubygems_version: 2.4.
|
218
|
+
rubygems_version: 2.4.6
|
219
219
|
signing_key:
|
220
220
|
specification_version: 4
|
221
221
|
summary: An outrageous Riot Games LoL API Client
|