taric 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 74cfe01a2705fb7a32a64bbad4f4f5f5db6fb082
4
- data.tar.gz: 158152d2dc30cd760974c29b599ae1febcf052d6
3
+ metadata.gz: 2e20af3d854b8c5f7fbb56f6fbfe94e6be61e744
4
+ data.tar.gz: 69061b667be3bd835082fb20077b3835ff0a006e
5
5
  SHA512:
6
- metadata.gz: bf70ca4585cfa7ceafdbb8bdc274effd3fafd9fe1e9355662aaa5c9afec61c583f2df477fc1cd01d18b4f380198d1045fe6833ffec566d46a3b04261186ddc7c
7
- data.tar.gz: 62ba9b1e6aab1577c7303865f78d5112dfe2cd0cd69304e438f1ad906741f29612fda3c8172ad19858f3719deb48e98639d6991c76c09121d40cddea59985c05
6
+ metadata.gz: ab811f3276d40aba25e883672ec3b82e1c2b3425961841ca656ef010c9319251d33748d4d64e99f1f4924a45f47b90ab6e3f758650d9b9f6794af8236c015e4b
7
+ data.tar.gz: 2498e174d418df266c8984d9e976759afb4eb75fb98c336ddd2fc2976b05e7635033b130f401e82f595c039fd282c5e0cb117440a509eb051491bdce4c5b4178
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ *.gem
1
2
  /.bundle/
2
3
  /.yardoc
3
4
  /Gemfile.lock
data/.idea/.name ADDED
@@ -0,0 +1 @@
1
+ taric
data/.idea/.rakeTasks ADDED
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Settings><!--This file was automatically generated by Ruby plugin.
3
+ You are allowed to:
4
+ 1. Remove rake task
5
+ 2. Add existing rake tasks
6
+ To add existing rake tasks automatically delete this file and reload the project.
7
+ --><RakeGroup description="" fullCmd="" taksId="rake" /></Settings>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
4
+ </project>
data/.idea/misc.xml ADDED
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-2.2.0 [global]" project-jdk-type="RUBY_SDK" />
4
+ </project>
data/.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/taric.iml" filepath="$PROJECT_DIR$/.idea/taric.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,5 @@
1
+ <component name="DependencyValidationManager">
2
+ <state>
3
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
4
+ </state>
5
+ </component>
data/.idea/taric.iml ADDED
@@ -0,0 +1,40 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="FacetManager">
4
+ <facet type="gem" name="Ruby Gem">
5
+ <configuration>
6
+ <option name="GEM_APP_ROOT_PATH" value="$MODULE_DIR$" />
7
+ <option name="GEM_APP_TEST_PATH" value="$MODULE_DIR$/test" />
8
+ <option name="GEM_APP_LIB_PATH" value="$MODULE_DIR$/lib" />
9
+ </configuration>
10
+ </facet>
11
+ </component>
12
+ <component name="NewModuleRootManager">
13
+ <content url="file://$MODULE_DIR$">
14
+ <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
15
+ </content>
16
+ <orderEntry type="jdk" jdkName="RVM: ruby-2.1.5 [taric]" jdkType="RUBY_SDK" />
17
+ <orderEntry type="sourceFolder" forTests="false" />
18
+ <orderEntry type="library" scope="PROVIDED" name="addressable (v2.3.7, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v1.8.5, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
20
+ <orderEntry type="library" scope="PROVIDED" name="crack (v0.4.2, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
21
+ <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.2.5, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="ethon (v0.7.3, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
23
+ <orderEntry type="library" scope="PROVIDED" name="faraday (v0.9.1, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
24
+ <orderEntry type="library" scope="PROVIDED" name="faraday_middleware (v0.9.1, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
25
+ <orderEntry type="library" scope="PROVIDED" name="ffi (v1.9.8, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
26
+ <orderEntry type="library" scope="PROVIDED" name="hashie (v3.4.0, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
27
+ <orderEntry type="library" scope="PROVIDED" name="memoist (v0.11.0, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
28
+ <orderEntry type="library" scope="PROVIDED" name="multi_json (v1.11.0, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
29
+ <orderEntry type="library" scope="PROVIDED" name="multipart-post (v2.0.0, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
30
+ <orderEntry type="library" scope="PROVIDED" name="rake (v10.4.2, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
31
+ <orderEntry type="library" scope="PROVIDED" name="rspec (v3.2.0, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
32
+ <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.2.2, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
33
+ <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.2.0, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
34
+ <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.2.1, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
35
+ <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.2.2, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
36
+ <orderEntry type="library" scope="PROVIDED" name="safe_yaml (v1.0.4, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
37
+ <orderEntry type="library" scope="PROVIDED" name="typhoeus (v0.7.1, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
38
+ <orderEntry type="library" scope="PROVIDED" name="webmock (v1.20.4, RVM: ruby-2.1.5 [taric]) [gem]" level="application" />
39
+ </component>
40
+ </module>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015 TODO: Write your name
3
+ Copyright (c) 2015 Joseph Yi
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,11 +1,21 @@
1
+ [![Code Climate](https://codeclimate.com/github/josephyi/taric/badges/gpa.svg)](https://codeclimate.com/github/josephyi/taric)
2
+
1
3
  # Taric
2
4
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/taric`. To experiment with that code, run `bin/console` for an interactive prompt.
5
+ > "Ruby for vigor."
6
+
7
+ Taric is a wrapper client to Riot Games' League of Legends API.
8
+
9
+ ## Prerequisite
4
10
 
5
- TODO: Delete this and the text above, and describe your gem
11
+ > "You face unblemished power."
12
+
13
+ Sign up for an API key at [Riot Games Developer] site.
6
14
 
7
15
  ## Installation
8
16
 
17
+ > "Gems? Gems are truly outrageous. They are truly, truly, truly outrageous."
18
+
9
19
  Add this line to your application's Gemfile:
10
20
 
11
21
  ```ruby
@@ -20,20 +30,86 @@ Or install it yourself as:
20
30
 
21
31
  $ gem install taric
22
32
 
33
+ ## Configuration
34
+
35
+ > "With clarity."
36
+
37
+ There are a couple of ways to set the API key:
38
+
39
+ 1. Set the `RIOT_API_KEY` environment variable:
40
+
41
+ ```
42
+ RIOT_API_KEY=whatever_key_rito_assigned_you
43
+ ```
44
+
45
+ This approach is best if you don't care to configure anything else.
46
+
47
+ 2. Configure it once (e.g. Rails initializer):
48
+
49
+ ```ruby
50
+ Taric.configure! do |config|
51
+ config.api_key = 'whatever_key_rito_assigned_you'
52
+ end
53
+ ```
54
+
55
+ This approach is best if you want to configure other things (documentation to come)
56
+
23
57
  ## Usage
24
58
 
25
- TODO: Write usage instructions here
59
+ > "Functional and stylish."
60
+
61
+ Once the key is set, you can use `Taric.client(:region)` to get a client instance for the specified region.
62
+
63
+ ```ruby
64
+ # North America
65
+ client = Taric.client(:na)
66
+
67
+ # Korea
68
+ client = Taric.client(:kr)
69
+ ```
70
+
71
+ ### Champion
72
+
73
+ ```ruby
74
+ # https://developer.riotgames.com/api/methods#!/958/3289
75
+ client.champion(id: )
76
+
77
+ # https://developer.riotgames.com/api/methods#!/958/3290
78
+ client.champions
79
+ ```
80
+
81
+ ### Current Game
82
+
83
+ ```ruby
84
+ # https://developer.riotgames.com/api/methods#!/956/3287
85
+ client.current_game(summoner_id: )
86
+ ```
87
+
88
+ ### Featured Games
89
+
90
+ ```ruby
91
+ # https://developer.riotgames.com/api/methods#!/957/3288
92
+ client.featured_games
93
+ ```
94
+
95
+ TODO: finish writing this crap :p
26
96
 
27
97
  ## Development
28
98
 
99
+ > "I will weep for you."
100
+
29
101
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
30
102
 
31
103
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
104
 
33
105
  ## Contributing
34
106
 
107
+ > ""Brilliantly."
108
+
35
109
  1. Fork it ( https://github.com/[my-github-username]/taric/fork )
36
110
  2. Create your feature branch (`git checkout -b my-new-feature`)
37
111
  3. Commit your changes (`git commit -am 'Add some feature'`)
38
112
  4. Push to the branch (`git push origin my-new-feature`)
39
113
  5. Create a new Pull Request
114
+
115
+ [Riot Games Developer]:https://developer.riotgames.com/
data/lib/taric.rb CHANGED
@@ -1,5 +1,41 @@
1
- require "taric/version"
1
+ require 'taric/client'
2
+ require 'taric/configuration'
3
+ require 'taric/connection'
4
+ require 'taric/version'
5
+ require 'typhoeus/adapters/faraday'
6
+ require 'memoist'
2
7
 
3
8
  module Taric
4
- # Your code goes here...
9
+ class << self
10
+ extend Memoist
11
+ attr_accessor :configuration
12
+
13
+ def client(region = :na, config = @configuration ||= Taric::Configuration.new)
14
+ Taric::Client.new(config.api_key, region, config.requestor.(connection(config)), config.response_handler)
15
+ end
16
+ memoize :client
17
+
18
+ def configure!
19
+ reset!
20
+ yield(configuration)
21
+ end
22
+
23
+ def reset!
24
+ @configuration = Taric::Configuration.new
25
+ end
26
+
27
+ def method_missing(method, *args, &block)
28
+ return super unless client.respond_to?(method)
29
+ client.send(method, *args, &block)
30
+ end
31
+
32
+ def respond_to?(method, include_all=false)
33
+ client.respond_to?(method, include_all) || super
34
+ end
35
+
36
+ include Taric::Connection
37
+ end
38
+
5
39
  end
40
+
41
+
@@ -0,0 +1,31 @@
1
+ require_relative 'operation/api'
2
+ require 'memoist'
3
+ module Taric
4
+ class Client
5
+ include Taric::Operation::API
6
+
7
+ def initialize(api_key, region, requestor, response_handler)
8
+ @api_key = api_key
9
+ @region = region
10
+ @requestor = requestor
11
+ @response_handler = response_handler
12
+ end
13
+
14
+ def expand_template(operation, options = {})
15
+ operation.expand(options.merge(self.class.operation_values(@api_key, @region)))
16
+ end
17
+
18
+ private
19
+ def response_for(operation, options = {})
20
+ RESPONSE.(expand_template(operation, options), @requestor, @response_handler)
21
+ end
22
+
23
+ class << self
24
+ extend Memoist
25
+ def operation_values(api_key, region)
26
+ {api_key: api_key}.merge!(Taric::Operation::API::REGION_ENDPOINT_INFO[region]).freeze
27
+ end
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,24 @@
1
+ module Taric
2
+ class Configuration
3
+ attr_accessor :api_key, :format, :user_agent, :connection_opts, :adapter, :region, :requestor, :response_handler
4
+
5
+ DEFAULT_REQUESTOR = -> connection, url {
6
+ connection.get url
7
+ }.curry
8
+
9
+ DEFAULT_RESPONSE_HANDLER = -> response {
10
+ response.body
11
+ }
12
+
13
+ def initialize(options = {})
14
+ @api_key = options.fetch(:api_key, ENV.fetch('RIOT_API_KEY'.freeze, 'KeyNotSetButUsingThisForTest'.freeze))
15
+ @format = options.fetch(:format, :json)
16
+ @user_agent = options.fetch(:user_agent, 'Taric Gem')
17
+ @adapter = options.fetch(:adapter, :typhoeus)
18
+ @region = options.fetch(:region, ENV.fetch('RIOT_API_REGION'.freeze, 'na').to_sym)
19
+ @connection_opts = options.fetch(:connection_opts, {})
20
+ @requestor = options.fetch(:requestor, DEFAULT_REQUESTOR)
21
+ @response_handler = options.fetch(:response_handler, DEFAULT_RESPONSE_HANDLER)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,17 @@
1
+ require 'faraday_middleware'
2
+
3
+ module Taric
4
+ module Connection
5
+ def connection(config)
6
+ options = {
7
+ :headers => {'Accept' => "application/#{config.format}; charset=utf-8", 'User-Agent' => config.user_agent}
8
+ }.merge(config.connection_opts)
9
+
10
+ Faraday::Connection.new(options) do |conn|
11
+ #conn.use FaradayMiddleware::Mashify
12
+ conn.response :json, :content_type => /\bjson$/
13
+ conn.adapter config.adapter
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,45 @@
1
+ require_relative 'champion'
2
+ require_relative 'current_game'
3
+ require_relative 'featured_games'
4
+ require_relative 'game'
5
+ require_relative 'league'
6
+ require_relative 'lol_static_data'
7
+ require_relative 'lol_status'
8
+ require_relative 'match'
9
+ require_relative 'stats'
10
+ require_relative 'summoner'
11
+ module Taric
12
+ module Operation
13
+ module API
14
+ include Taric::Operation::Champion
15
+ include Taric::Operation::CurrentGame
16
+ include Taric::Operation::FeaturedGames
17
+ include Taric::Operation::Game
18
+ include Taric::Operation::League
19
+ include Taric::Operation::LolStaticData
20
+ include Taric::Operation::LolStatus
21
+ include Taric::Operation::Match
22
+ include Taric::Operation::Stats
23
+ include Taric::Operation::Summoner
24
+
25
+ REGION_ENDPOINT_INFO = {
26
+ br: {region: 'br'.freeze, platform_id: 'BR1'.freeze, host: 'br.api.pvp.net'},
27
+ eune: {region: 'eune'.freeze, platform_id: 'EUN1'.freeze, host: 'eune.api.pvp.net'},
28
+ euw: {region: 'euw'.freeze, platform_id: 'EUW1', host: 'euw.api.pvp.net'},
29
+ kr: {region: 'kr'.freeze, platform_id: 'KR', host: 'kr.api.pvp.net'},
30
+ lan: {region: 'lan'.freeze, platform_id: 'LA1', host: 'lan.api.pvp.net'},
31
+ las: {region: 'las'.freeze, platform_id: 'LA2', host: 'las.api.pvp.net'},
32
+ na: {region: 'na'.freeze, platform_id: 'NA1', host: 'na.api.pvp.net'},
33
+ oce: {region: 'oce'.freeze, platform_id: 'OC1', host: 'oce.api.pvp.net'},
34
+ tr: {region: 'tr'.freeze, platform_id: 'TR1', host: 'tr.api.pvp.net'},
35
+ ru: {region: 'ru'.freeze, platform_id: 'RU', host: 'ru.api.pvp.net'},
36
+ pbe: {region: 'pbe'.freeze, platform_id: 'PBE1', host: 'pbe.api.pvp.net'}
37
+ }.freeze
38
+
39
+ RESPONSE = -> url, requestor, response_handler {
40
+ response_handler.(requestor.(url))
41
+ }.curry
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,8 @@
1
+ module Taric
2
+ module Operation
3
+ module Base
4
+ BASE_URL_FN = -> version {"https://{host}/api/lol/{region}/#{version}"}
5
+
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,23 @@
1
+ require_relative 'base'
2
+ require 'addressable/template'
3
+ module Taric
4
+ module Operation
5
+ module Champion
6
+ include Taric::Operation::Base
7
+
8
+ CHAMPION_VERSION = 'v1.2'.freeze
9
+ CHAMPION_BASE_URL = "#{BASE_URL_FN.(CHAMPION_VERSION)}/champion"
10
+
11
+ CHAMPIONS = Addressable::Template.new("#{CHAMPION_BASE_URL}{?api_key,freeToPlay}")
12
+ CHAMPION_BY_ID = Addressable::Template.new("#{CHAMPION_BASE_URL}/{id}{?api_key}")
13
+
14
+ def champions(free_to_play: nil)
15
+ response_for CHAMPIONS, freeToPlay: free_to_play
16
+ end
17
+
18
+ def champion(id:)
19
+ response_for CHAMPION_BY_ID, id: id
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,11 @@
1
+ module Taric
2
+ module Operation
3
+ module CurrentGame
4
+ GAME_INFO = Addressable::Template.new 'https://{host}/observer-mode/rest/consumer/getSpectatorGameInfo/{platform_id}/{summonerId}{?api_key}'
5
+
6
+ def current_game(summoner_id:)
7
+ response_for GAME_INFO, summonerId: summoner_id
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Taric
2
+ module Operation
3
+ module FeaturedGames
4
+ FEATURED_GAMES = Addressable::Template.new 'https://{host}/observer-mode/rest/featured{?api_key}'
5
+
6
+ def featured_games
7
+ response_for FEATURED_GAMES
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ require_relative 'base'
2
+ module Taric
3
+ module Operation
4
+ module Game
5
+ include Taric::Operation::Base
6
+
7
+ GAME_VERSION = 'v1.3'.freeze
8
+ RECENT = Addressable::Template.new "#{BASE_URL_FN.(GAME_VERSION)}/game/by-summoner/{summonerId}/recent{?api_key}"
9
+
10
+ def recent_games(summoner_id:)
11
+ response_for RECENT, {summonerId: summoner_id}
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,38 @@
1
+ require_relative 'base'
2
+ require 'addressable/template'
3
+ module Taric
4
+ module Operation
5
+ module League
6
+ include Taric::Operation::Base
7
+
8
+ LEAGUE_VERSION = 'v2.5'
9
+ BASE_LEAGUE_URL = "#{BASE_URL_FN.(LEAGUE_VERSION)}/league"
10
+
11
+ LEAGUES_BY_SUMMONER_IDS = Addressable::Template.new "#{BASE_LEAGUE_URL}/by-summoner/{summonerIds}{?api_key}"
12
+ ENTRIES_BY_SUMMONER_IDS = Addressable::Template.new "#{LEAGUES_BY_SUMMONER_IDS}/entry{?api_key}"
13
+ LEAGUES_BY_TEAM_IDS = Addressable::Template.new "#{BASE_LEAGUE_URL}/by-team/{teamIds}{?api_key}"
14
+ ENTRIES_BY_TEAM_IDS = Addressable::Template.new "#{LEAGUES_BY_TEAM_IDS}/entry{?api_key}"
15
+ CHALLENGER = Addressable::Template.new "#{BASE_LEAGUE_URL}/challenger{?api_key}"
16
+
17
+ def leagues_by_summoner_ids(summoner_ids:)
18
+ response_for LEAGUES_BY_SUMMONER_IDS, {summonerIds: summoner_ids}
19
+ end
20
+
21
+ def league_entries_by_summoner_ids(summoner_ids:)
22
+ response_for ENTRIES_BY_SUMMONER_IDS, {summonerIds: summoner_ids}
23
+ end
24
+
25
+ def leagues_by_team_ids(team_ids:)
26
+ response_for LEAGUES_BY_TEAM_IDS, {teamIds: team_ids}
27
+ end
28
+
29
+ def league_entries_by_team_ids(team_ids:)
30
+ response_for ENTRIES_BY_TEAM_IDS, {teamIds: team_ids}
31
+ end
32
+
33
+ def challenger(type: )
34
+ response_for CHALLENGER, {type: type}
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,157 @@
1
+ require_relative 'base'
2
+ module Taric
3
+ module Operation
4
+ module LolStaticData
5
+ include Taric::Operation::Base
6
+ VERSION = 'v1.2'
7
+ BASE_STATIC_URL = "https://global.api.pvp.net/api/lol/static-data/{region}/#{VERSION}"
8
+
9
+ STATIC_CHAMPIONS = Addressable::Template.new "#{BASE_STATIC_URL}/champion{?api_key}"
10
+ STATIC_CHAMPION = Addressable::Template.new "#{STATIC_CHAMPIONS}/{id}{?api_key}"
11
+ STATIC_ITEMS = Addressable::Template.new "#{BASE_STATIC_URL}/item{?api_key}"
12
+ STATIC_ITEM = Addressable::Template.new "#{STATIC_ITEMS}/{id}{?api_key}"
13
+ STATIC_LANGUAGE_STRINGS = Addressable::Template.new "#{BASE_STATIC_URL}/language-strings{?api_key}"
14
+ STATIC_LANGUAGES = Addressable::Template.new "#{BASE_STATIC_URL}/languages{?api_key}"
15
+ STATIC_MAP = Addressable::Template.new "#{BASE_STATIC_URL}/map{?api_key}"
16
+ STATIC_MASTERIES = Addressable::Template.new "#{BASE_STATIC_URL}/mastery{?api_key}"
17
+ STATIC_MASTERY = Addressable::Template.new "#{STATIC_MASTERIES}/{id}{?api_key}"
18
+ STATIC_REALM = Addressable::Template.new "#{BASE_STATIC_URL}/realm{?api_key}"
19
+ STATIC_RUNES = Addressable::Template.new "#{BASE_STATIC_URL}/rune{?api_key}"
20
+ STATIC_RUNE = Addressable::Template.new "#{STATIC_RUNES}/{id}{?api_key}"
21
+ STATIC_SUMMONER_SPELLS = Addressable::Template.new "#{BASE_STATIC_URL}/summoner-spell{?api_key}"
22
+ STATIC_SUMMONER_SPELL = Addressable::Template.new "#{STATIC_SUMMONER_SPELLS}/{id}{?api_key}"
23
+ STATIC_VERSIONS = Addressable::Template.new "#{BASE_STATIC_URL}/versions{?api_key}"
24
+
25
+ CHAMP_DATA_OPTIONS = [
26
+ 'all'.freeze,
27
+ 'allytips'.freeze,
28
+ 'altimages'.freeze,
29
+ 'blurb'.freeze,
30
+ 'enemytips'.freeze,
31
+ 'image'.freeze,
32
+ 'info'.freeze,
33
+ 'lore'.freeze,
34
+ 'partype'.freeze,
35
+ 'passive'.freeze,
36
+ 'recommended'.freeze,
37
+ 'skins'.freeze,
38
+ 'stats'.freeze,
39
+ 'tags'.freeze
40
+ ]
41
+
42
+ ITEM_DATA_OPTIONS = [
43
+ 'all'.freeze,
44
+ 'colloq'.freeze,
45
+ 'consumeOnFull'.freeze,
46
+ 'consumed'.freeze,
47
+ 'depth'.freeze,
48
+ 'from'.freeze,
49
+ 'gold'.freeze,
50
+ 'groups'.freeze,
51
+ 'hideFromAll'.freeze,
52
+ 'image'.freeze,
53
+ 'inStore'.freeze,
54
+ 'into'.freeze,
55
+ 'maps'.freeze,
56
+ 'requiredChampion'.freeze,
57
+ 'sanitizedDescription'.freeze,
58
+ 'specialRecipe'.freeze,
59
+ 'stacks'.freeze,
60
+ 'stats'.freeze,
61
+ 'tags'.freeze,
62
+ 'tree'.freeze
63
+ ].freeze
64
+
65
+ MASTERY_DATA_OPTIONS = [
66
+ 'all'.freeze,
67
+ 'image'.freeze,
68
+ 'masteryTree'.freeze,
69
+ 'prereq'.freeze,
70
+ 'ranks'.freeze,
71
+ 'sanitizedDescription'.freeze
72
+ ].freeze
73
+
74
+ SPELL_DATA_OPTIONS = [
75
+ 'all'.freeze,
76
+ 'cooldown'.freeze,
77
+ 'cooldownBurn'.freeze,
78
+ 'cost'.freeze,
79
+ 'costType'.freeze,
80
+ 'effect'.freeze,
81
+ 'effectBurn'.freeze,
82
+ 'image'.freeze,
83
+ 'key'.freeze,
84
+ 'leveltip'.freeze,
85
+ 'maxrank'.freeze,
86
+ 'modes'.freeze,
87
+ 'range'.freeze,
88
+ 'rangeBurn'.freeze,
89
+ 'resource'.freeze,
90
+ 'sanitizedDescription'.freeze,
91
+ 'sanitizedTooltip'.freeze,
92
+ 'tooltip'.freeze,
93
+ 'vars'.freeze
94
+ ].freeze
95
+
96
+ def static_champions(data_by_id: nil, champ_data_option: nil, locale: nil, version: nil)
97
+ response_for STATIC_CHAMPIONS, {dataById: data_by_id, champData: champ_data_option, locale: locale, version: version}
98
+ end
99
+
100
+ def static_champion(id:, champ_data_option: nil, locale: nil, version: nil)
101
+ response_for STATIC_CHAMPION, {id: id, champData: champ_data_option, locale: locale, version: version}
102
+ end
103
+
104
+ def static_items(item_data_option: nil, locale: nil, version: nil)
105
+ response_for STATIC_ITEMS, {itemListData: item_data_option, locale: locale, version: version,}
106
+ end
107
+
108
+ def static_item(id:, item_data_option: nil, locale: nil, version: nil)
109
+ response_for STATIC_ITEM, {id: id, itemData: item_data_option, locale: locale, version: version}
110
+ end
111
+
112
+ def static_language_strings(locale: nil, version: nil)
113
+ response_for STATIC_LANGUAGE_STRINGS, {locale: locale, version: version}
114
+ end
115
+
116
+ def static_languages
117
+ response_for STATIC_LANGUAGES
118
+ end
119
+
120
+ def static_map(locale: nil, version: nil)
121
+ response_for STATIC_MAP, {locale: locale, version: version}
122
+ end
123
+
124
+ def static_masteries(mastery_data_option: nil, locale: nil, version: nil)
125
+ response_for STATIC_MASTERIES, {masteryListData: mastery_data_option, locale: locale, version: version}
126
+ end
127
+
128
+ def static_mastery(id:, mastery_data_option: nil, locale: nil, version: nil)
129
+ response_for STATIC_MASTERY, {id: id, masteryData: mastery_data_option, locale:locale, version: version}
130
+ end
131
+
132
+ def static_realm
133
+ response_for STATIC_REALM
134
+ end
135
+
136
+ def static_runes(rune_data_option: nil, locale: nil, version: nil)
137
+ response_for STATIC_RUNES, {runeListData: rune_data_option, locale: locale, version: version}
138
+ end
139
+
140
+ def static_rune(id:, rune_data_option: nil, locale: nil, version: nil)
141
+ response_for STATIC_RUNE, {id: id, runeData: rune_data_option, locale: locale, version: version}
142
+ end
143
+
144
+ def static_summoner_spells(data_by_id: nil, spell_data_option: nil, locale: nil, version: nil)
145
+ response_for STATIC_SUMMONER_SPELLS, {dataById: data_by_id, spellData: spell_data_option, locale: locale, version: version}
146
+ end
147
+
148
+ def static_summoner_spell(id:, spell_data_option: nil, locale: nil, version: nil)
149
+ response_for STATIC_SUMMONER_SPELL, {id: id, spellData: spell_data_option, locale: locale, version: version}
150
+ end
151
+
152
+ def static_versions
153
+ response_for STATIC_VERSIONS
154
+ end
155
+ end
156
+ end
157
+ end
@@ -0,0 +1,16 @@
1
+ module Taric
2
+ module Operation
3
+ module LolStatus
4
+ SHARDS = Addressable::Template.new 'http://status.leagueoflegends.com/shards'
5
+ SHARD = Addressable::Template.new 'http://status.leagueoflegends.com/shards/{region}'
6
+
7
+ def shards
8
+ response_for SHARDS
9
+ end
10
+
11
+ def shard(region:)
12
+ response_for SHARD, {region: region}
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ require_relative 'base'
2
+ module Taric
3
+ module Operation
4
+ module Match
5
+ include Taric::Operation::Base
6
+
7
+ MATCH_VERSION = 'v2.2'
8
+ MATCH = Addressable::Template.new "#{BASE_URL_FN.(MATCH_VERSION)}/match/{matchId}"
9
+
10
+ def match(id:, include_timeline: nil)
11
+ response_for MATCH, {matchId: id, includeTimeline: include_timeline}
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'base'
2
+ module Taric
3
+ module Operation
4
+ module Stats
5
+ include Taric::Operation::Base
6
+
7
+ STATS_VERSION = 'v1.3'.freeze
8
+ BASE_STATS_URL = Addressable::Template.new "#{BASE_URL_FN.(STATS_VERSION)}/stats/by-summoner/{summonerId}{?api_key}"
9
+ RANKED = Addressable::Template.new "#{BASE_STATS_URL}/ranked{?api_key}"
10
+ SUMMARY = Addressable::Template.new "#{BASE_STATS_URL}/summary{?api_key}"
11
+
12
+ def ranked(summoner_id: , season: nil)
13
+ response_for RANKED, {summonerId: summoner_id, season: season}
14
+ end
15
+
16
+ def summary(summoner_id: , season: nil)
17
+ response_for SUMMARY, {summonerId: summoner_id, season: season}
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,38 @@
1
+ require_relative 'base'
2
+ module Taric
3
+ module Operation
4
+ module Summoner
5
+ include Taric::Operation::Base
6
+
7
+ VERSION = 'v1.4'
8
+ BASE_SUMMONER_URL = "#{BASE_URL_FN.(VERSION)}/summoner"
9
+
10
+ BY_NAMES = Addressable::Template.new "#{BASE_SUMMONER_URL}/by-name/{summonerNames}{?api_key}"
11
+ BY_IDS = Addressable::Template.new "#{BASE_SUMMONER_URL}/{summonerIds}{?api_key}"
12
+ MASTERIES = Addressable::Template.new "#{BY_IDS}/masteries{?api_key}"
13
+ NAMES = Addressable::Template.new "#{BY_IDS}/name{?api_key}"
14
+ RUNES = Addressable::Template.new "#{BY_IDS}/rune{?api_key}"
15
+
16
+ def summoners_by_names(names:)
17
+ response_for BY_NAMES, {summonerNames: names}
18
+ end
19
+
20
+ def summoners_by_ids(summoner_ids:)
21
+ response_for BY_IDS, {summonerIds: summoner_ids}
22
+ end
23
+
24
+ def masteries(summoner_ids:)
25
+ response_for MASTERIES, {summonerIds: summoner_ids}
26
+ end
27
+
28
+ def name(summoner_ids)
29
+ response_for NAME, {summonerIds: summoner_ids}
30
+ end
31
+
32
+ def runes(summoner_ids:)
33
+ response_for RUNES, {summonerIds: summoner_ids}
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,23 @@
1
+ require_relative 'base'
2
+ module Taric
3
+ module Operation
4
+ module Team
5
+ include Taric::Operation::Base
6
+
7
+ TEAM_VERSION = 'v2.4'.freeze
8
+ BASE_TEAM_URL = "#{BASE_URL_FN.(TEAM_VERSION)}/team"
9
+
10
+ TEAMS_BY_SUMMONER_IDS = Addressable::Template.new "#{BASE_TEAM_URL}/by-summoner/{summonerIds}"
11
+ TEAMS_BY_TEAM_IDS = Addressable::Template.new "#{BASE_TEAM_URL}/{teamIds}"
12
+
13
+ def teams_by_summoner_ids(summoner_ids:)
14
+ response_for TEAMS_BY_SUMMONER_IDS, {summonerIds: summoner_ids}
15
+ end
16
+
17
+ def teams(team_ids:)
18
+ response_for TEAMS_BY_TEAM_IDS, {teamIds: team_ids}
19
+ end
20
+ end
21
+ end
22
+ end
23
+
data/lib/taric/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Taric
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/taric.gemspec CHANGED
@@ -8,14 +8,10 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Taric::VERSION
9
9
  spec.authors = ["Joseph Yi"]
10
10
  spec.email = ["dissonance@gmail.com"]
11
- #
12
- # if spec.respond_to?(:metadata)
13
- # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com' to prevent pushes to rubygems.org, or delete to allow pushes to any server."
14
- # end
15
11
 
16
12
  spec.summary = %q{Riot Games LoL Api Client}
17
13
  spec.description = %q{Riot Games LoL Api Client.}
18
- spec.homepage = "http://github.com/crapg"
14
+ spec.homepage = "http://github.com/josephyi/taric"
19
15
  spec.license = "MIT"
20
16
 
21
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taric
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph Yi
@@ -172,6 +172,14 @@ extensions: []
172
172
  extra_rdoc_files: []
173
173
  files:
174
174
  - ".gitignore"
175
+ - ".idea/.name"
176
+ - ".idea/.rakeTasks"
177
+ - ".idea/encodings.xml"
178
+ - ".idea/misc.xml"
179
+ - ".idea/modules.xml"
180
+ - ".idea/scopes/scope_settings.xml"
181
+ - ".idea/taric.iml"
182
+ - ".idea/vcs.xml"
175
183
  - ".rspec"
176
184
  - ".travis.yml"
177
185
  - CODE_OF_CONDUCT.md
@@ -182,9 +190,25 @@ files:
182
190
  - bin/console
183
191
  - bin/setup
184
192
  - lib/taric.rb
193
+ - lib/taric/client.rb
194
+ - lib/taric/configuration.rb
195
+ - lib/taric/connection.rb
196
+ - lib/taric/operation/api.rb
197
+ - lib/taric/operation/base.rb
198
+ - lib/taric/operation/champion.rb
199
+ - lib/taric/operation/current_game.rb
200
+ - lib/taric/operation/featured_games.rb
201
+ - lib/taric/operation/game.rb
202
+ - lib/taric/operation/league.rb
203
+ - lib/taric/operation/lol_static_data.rb
204
+ - lib/taric/operation/lol_status.rb
205
+ - lib/taric/operation/match.rb
206
+ - lib/taric/operation/stats.rb
207
+ - lib/taric/operation/summoner.rb
208
+ - lib/taric/operation/team.rb
185
209
  - lib/taric/version.rb
186
210
  - taric.gemspec
187
- homepage: http://github.com/crapg
211
+ homepage: http://github.com/josephyi/taric
188
212
  licenses:
189
213
  - MIT
190
214
  metadata: {}
@@ -204,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
204
228
  version: '0'
205
229
  requirements: []
206
230
  rubyforge_project:
207
- rubygems_version: 2.4.6
231
+ rubygems_version: 2.4.3
208
232
  signing_key:
209
233
  specification_version: 4
210
234
  summary: Riot Games LoL Api Client