starcall 0.2.1 → 0.3.0

This diff has not been reviewed by any users.
Log in in order to be able to vote.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f7a09d7f7d91682427ed719d214c309eb2ea0b26689ffca6f4975b4740b92b9d
4
- data.tar.gz: abd5c5c07f1106297b7d7f5715067b50ee8dfc1ec3f64bdc3892eac7b1404480
3
+ metadata.gz: afe7b17e98b4f26c45a50c13d4631ddbaae2f6e8f5674ad3769e5a85cb35089e
4
+ data.tar.gz: 216b511b0109f37211c59777012716cf76d3ecbf803dd38ec5387bd8646fc202
5
5
  SHA512:
6
- metadata.gz: 660f783e08ec030e856886580cc6d4da2161f77ce719a62a997079586410a69edd970f6bd541507cf42015a1a1046461d8b9f9061aaa1d3fc528ed2fcf042b2f
7
- data.tar.gz: c66145ff56e10d8051d500a4b059315ccd65cb1e970907268c8635b123ee9fa9c2c1c2823a280288c77e197b435669c00c8592a7598cde9ba67f7ab6fdbc391a
6
+ metadata.gz: 9b023aaee23d61056c570301b95bc360cd68ff045afa2551b0386238b83cc0de4ba49427434f926dc1bb983ff25fb773b5a38e06420c3af3108ffd26a74e21aa
7
+ data.tar.gz: 4ca4dc69588b7196d1ee04e77a684fc4f2b9ab1894277fb2953445baecdeea6ff13b88275c08b34fa887cedf74eb647c6c32c7153c91341a4b7de38938c4a636
data/.rakeTasks CHANGED
@@ -4,4 +4,4 @@ You are allowed to:
4
4
  1. Remove rake task
5
5
  2. Add existing rake tasks
6
6
  To add existing rake tasks automatically delete this file and reload the project.
7
- --><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build Starcall-0.1.0.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Remove any temporary products" fullCmd="clean" taksId="clean" /><RakeTask description="Remove any generated files" fullCmd="clobber" taksId="clobber" /><RakeTask description="Build and install Starcall-0.1.0.gem into system gems" fullCmd="install" taksId="install" /><RakeGroup description="" fullCmd="" taksId="install"><RakeTask description="Build and install Starcall-0.1.0.gem into system gems without network access" fullCmd="install:local" taksId="local" /></RakeGroup><RakeTask description="Create tag v0.1.0 and build and push Starcall-0.1.0.gem to TODO: Set to 'http://mygemserver.com'" fullCmd="release[remote]" taksId="release[remote]" /><RakeTask description="Run RuboCop" fullCmd="rubocop" taksId="rubocop" /><RakeGroup description="" fullCmd="" taksId="rubocop"><RakeTask description="Auto-correct RuboCop offenses" fullCmd="rubocop:auto_correct" taksId="auto_correct" /></RakeGroup><RakeTask description="Run RSpec code examples" fullCmd="spec" taksId="spec" /><RakeGroup description="" fullCmd="" taksId="travis"><RakeTask description="Run rubocop and rspec" fullCmd="travis:run" taksId="run" /></RakeGroup><RakeTask description="" fullCmd="release" taksId="release" /><RakeGroup description="" fullCmd="" taksId="release"><RakeTask description="" fullCmd="release:guard_clean" taksId="guard_clean" /><RakeTask description="" fullCmd="release:rubygem_push" taksId="rubygem_push" /><RakeTask description="" fullCmd="release:source_control_push" taksId="source_control_push" /></RakeGroup></RakeGroup></Settings>
7
+ --><RakeGroup description="" fullCmd="" taksId="rake" /></Settings>
@@ -13,6 +13,22 @@ None
13
13
 
14
14
  ---
15
15
 
16
+ ## v0.3.0 - Alistar
17
+ ![Alistar](http://ddragon.leagueoflegends.com/cdn/10.12.1/img/champion/Alistar.png)
18
+
19
+ ### New features
20
+ - Added the 3 Champion Mastery Endpoints.
21
+ - `ApiRequests` now checks for an API key called `RIOT_API_KEY` and adds to the headers.
22
+ - Added a region parser as the API URLs require a region, but they are not the same as the normal regions.
23
+
24
+ ### Changes
25
+ - Move `ApiRequests` under the `Starcall` namespace.
26
+ - Move errors in to their own directory.
27
+
28
+ ### Bug fixes
29
+
30
+ ---
31
+
16
32
  ## v0.2.1 - Akali
17
33
  ![Akali](http://ddragon.leagueoflegends.com/cdn/10.12.1/img/champion/Akali.png)
18
34
 
@@ -1,17 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- starcall (0.2.1)
4
+ starcall (0.3.0)
5
5
  httparty (~> 0.17)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  ast (2.4.1)
11
+ coderay (1.1.3)
11
12
  diff-lcs (1.3)
12
13
  httparty (0.18.1)
13
14
  mime-types (~> 3.0)
14
15
  multi_xml (>= 0.5.2)
16
+ method_source (1.0.0)
15
17
  mime-types (3.3.1)
16
18
  mime-types-data (~> 3.2015)
17
19
  mime-types-data (3.2020.0512)
@@ -19,6 +21,9 @@ GEM
19
21
  parallel (1.19.2)
20
22
  parser (2.7.1.4)
21
23
  ast (~> 2.4.1)
24
+ pry (0.13.1)
25
+ coderay (~> 1.1)
26
+ method_source (~> 1.0)
22
27
  rainbow (3.0.0)
23
28
  rake (12.3.3)
24
29
  regexp_parser (1.7.1)
@@ -58,6 +63,7 @@ PLATFORMS
58
63
 
59
64
  DEPENDENCIES
60
65
  bundler (~> 2.0)
66
+ pry (~> 0.13)
61
67
  rake (~> 12.3)
62
68
  rspec (~> 3.0)
63
69
  rubocop (~> 0.86)
data/README.md CHANGED
@@ -119,6 +119,34 @@ Details about summoner spells.
119
119
 
120
120
  Details about profile icons and where they can be found on the sprite sheets.
121
121
 
122
+ ## Endpoints
123
+ The below commands require a Riot API key.
124
+ It needs to be saved as an ENV var and called `RIOT_API_KEY`
125
+ ### Champion Mastery V4
126
+
127
+ #### `summoner`
128
+ [Riot API Documentation](https://developer.riotgames.com/apis#champion-mastery-v4/GET_getAllChampionMasteries)
129
+
130
+ Required fields:
131
+ - `encrypted_summoner_id` (The encrypted summoner ID for the summoner you want to know about.)
132
+ - `region` (The reigion that the summoner is in.)
133
+
134
+ #### `summoner_on_champion`
135
+ [Riot API Documentation](https://developer.riotgames.com/apis#champion-mastery-v4/GET_getChampionMastery)
136
+
137
+ Required fields:
138
+ - `encrypted_summoner_id` (The encrypted summoner ID for the summoner you want to know about.)
139
+ - `champion_id` (The ID number of the champion that you want to know about.)
140
+ - `region` (The reigion that the summoner is in.)
141
+
142
+ #### `summoner_total_mastery`
143
+ [Riot API Documentation](https://developer.riotgames.com/apis#champion-mastery-v4/GET_getChampionMasteryScore)
144
+
145
+ Required fields:
146
+ - `encrypted_summoner_id` (the encrypted summoner ID for the summoner you want to know about.)
147
+ - `region` (The reigion that the summoner is in.)
148
+
149
+
122
150
  ## Development
123
151
 
124
152
  After checking out the repo, run `bundle install` to install dependencies.
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'starcall/api_requests'
4
- require 'starcall/error'
3
+ require 'starcall/endpoints/endpoints'
4
+ require 'starcall/errors/errors'
5
5
  require 'starcall/languages'
6
6
  require 'starcall/regions'
7
7
  require 'starcall/static_data'
@@ -2,9 +2,12 @@
2
2
 
3
3
  require 'httparty'
4
4
 
5
- # A small class to make a HTTP get request using the passed in URL
6
- class ApiRequests
7
- def self.make_request(url:)
8
- HTTParty.get(url).parsed_response
5
+ module Starcall
6
+ # A small class to make a HTTP get request using the passed in URL
7
+ # Intened to only be used my internal Gem classes and not be called directly.
8
+ class ApiRequests
9
+ def self.make_request(url:)
10
+ HTTParty.get(url, { headers: { 'X-Riot-Token' => ENV['RIOT_API_KEY'] } }).parsed_response
11
+ end
9
12
  end
10
13
  end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'starcall/helpers/region_parser'
4
+ require 'starcall/api_requests'
5
+
6
+ module Starcall
7
+ module Endpoints
8
+ # Methods used to call the Champion Mastery endpoints.
9
+ class ChampionMasteryV4
10
+ # Get all champion mastery entries sorted by number of champion points descending.
11
+ def self.summoner(encrypted_summoner_id:, region:)
12
+ Starcall::Regions.valid?(region: region)
13
+ Starcall::ApiRequests.make_request(
14
+ url: "https://#{parse_region(region: region)}.api.riotgames.com"\
15
+ "/lol/champion-mastery/v4/champion-masteries/by-summoner/#{encrypted_summoner_id}"
16
+ )
17
+ end
18
+
19
+ # Get a champion mastery by player ID and champion ID.
20
+ def self.summoner_on_champion(encrypted_summoner_id:, champion_id:, region:)
21
+ Starcall::Regions.valid?(region: region)
22
+ Starcall::ApiRequests.make_request(
23
+ url: "https://#{parse_region(region: region)}.api.riotgames.com"\
24
+ "/lol/champion-mastery/v4/champion-masteries/by-summoner/#{encrypted_summoner_id}"\
25
+ "/by-champion/#{champion_id}"
26
+ )
27
+ end
28
+
29
+ # Get a player's total champion mastery score, which is the sum of individual champion mastery levels.
30
+ def self.summoner_total_mastery(encrypted_summoner_id:, region:)
31
+ Starcall::Regions.valid?(region: region)
32
+ Starcall::ApiRequests.make_request(
33
+ url: "https://#{parse_region(region: region)}.api.riotgames.com"\
34
+ "/lol/champion-mastery/v4/scores/by-summoner/#{encrypted_summoner_id}"
35
+ )
36
+ end
37
+
38
+ def self.parse_region(region:)
39
+ Starcall::Helpers::RegionParser.parse(region: region)
40
+ end
41
+
42
+ private_class_method :parse_region
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'champion_mastery_v4'
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'invalid_language'
4
+ require_relative 'invalid_region'
@@ -1,23 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Starcall
4
- module Error
5
- # A Custom error message, used when an incorrect region is passed.
6
- class InvalidRegion < StandardError
7
- def initialize(region:)
8
- super
9
- @region = region
10
- end
11
-
12
- def message
13
- "#{region} is not a valid region. Please consult Starcall::Regions.list for a list of valid regions."
14
- end
15
-
16
- private
17
-
18
- attr_reader :region
19
- end
20
-
4
+ module Errors
21
5
  # A Custom error message, used when an incorrect language is passed.
22
6
  class InvalidLanguage < StandardError
23
7
  def initialize(language:)
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Starcall
4
+ module Errors
5
+ # A Custom error message, used when an incorrect region is passed.
6
+ class InvalidRegion < StandardError
7
+ def initialize(region:)
8
+ super
9
+ @region = region
10
+ end
11
+
12
+ def message
13
+ "#{region} is not a valid region. Please consult Starcall::Regions.list for a list of valid regions."
14
+ end
15
+
16
+ private
17
+
18
+ attr_reader :region
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'starcall/regions'
4
+
5
+ module Starcall
6
+ module Helpers
7
+ # The API URLs don't use the actual region name, they used different ones.
8
+ # This converts from a region name to the URL string.
9
+ class RegionParser
10
+ def self.parse(region:)
11
+ Starcall::Regions.valid?(region: region)
12
+
13
+ region_matchup = {
14
+ br: 'br1',
15
+ eune: 'eun1',
16
+ euw: 'euw1',
17
+ lan: 'la1',
18
+ las: 'la2',
19
+ na: 'na1',
20
+ oce: 'oc1',
21
+ ru: 'ru',
22
+ tr: 'tr1',
23
+ jp: 'jp1',
24
+ kr: 'kr'
25
+ }
26
+ region_matchup[region.to_sym]
27
+ end
28
+ end
29
+ end
30
+ end
@@ -43,7 +43,7 @@ module Starcall
43
43
  def self.valid?(language:)
44
44
  return true if list.include? language
45
45
 
46
- raise Starcall::Error::InvalidLanguage.new(language: language)
46
+ raise Starcall::Errors::InvalidLanguage.new(language: language)
47
47
  end
48
48
  end
49
49
  end
@@ -24,7 +24,7 @@ module Starcall
24
24
  def self.valid?(region:)
25
25
  return true if list.include? region
26
26
 
27
- raise Starcall::Error::InvalidRegion.new(region: region)
27
+ raise Starcall::Errors::InvalidRegion.new(region: region)
28
28
  end
29
29
  end
30
30
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'starcall/api_requests'
4
+
3
5
  module Starcall
4
6
  # This class is used for all things Static Data related.
5
7
  # Using Riots Static data and Data Dragon.
@@ -16,29 +18,29 @@ module Starcall
16
18
  # Season ids are used in match history to indicate which season a match was played.
17
19
  # A full list of season ids can be retrieved with the below method.
18
20
  def season_ids
19
- ApiRequests.make_request(url: static_url(search_term: 'seasons'))
21
+ Starcall::ApiRequests.make_request(url: static_url(search_term: 'seasons'))
20
22
  end
21
23
 
22
24
  # Queue ids show up in several places throughout the API and are used to indicate which kind of match was played.
23
25
  # A full list of queue ids can be can be retrieved with the below method.
24
26
  def queue_ids
25
- ApiRequests.make_request(url: static_url(search_term: 'queues'))
27
+ Starcall::ApiRequests.make_request(url: static_url(search_term: 'queues'))
26
28
  end
27
29
 
28
30
  # Map ids are used in match history to indicate which map a match was played.
29
31
  # A full list of map ids can be can be retrieved with the below method.
30
32
  def map_ids
31
- ApiRequests.make_request(url: static_url(search_term: 'maps'))
33
+ Starcall::ApiRequests.make_request(url: static_url(search_term: 'maps'))
32
34
  end
33
35
 
34
36
  # A full list of game modes can be can be retrieved with the below method.
35
37
  def game_modes
36
- ApiRequests.make_request(url: static_url(search_term: 'gameModes'))
38
+ Starcall::ApiRequests.make_request(url: static_url(search_term: 'gameModes'))
37
39
  end
38
40
 
39
41
  # A full list of game types can be can be retrieved with the below method.
40
42
  def game_types
41
- ApiRequests.make_request(url: static_url(search_term: 'gameTypes'))
43
+ Starcall::ApiRequests.make_request(url: static_url(search_term: 'gameTypes'))
42
44
  end
43
45
 
44
46
  # All valid Data Dragon versions can be can be retrieved with the below method.
@@ -47,39 +49,39 @@ module Starcall
47
49
  # This typically occurs when there's an error in the original build.
48
50
  # As such, you should always use the most recent Data Dragon version for a given patch for the best results.
49
51
  def dd_versions
50
- ApiRequests.make_request(url: dd_versions_url)
52
+ Starcall::ApiRequests.make_request(url: dd_versions_url)
51
53
  end
52
54
 
53
55
  # Data Dragon versions aren't always equivalent to the League of Legends client version in a region.
54
56
  def dd_region_versions
55
- ApiRequests.make_request(url: dd_region_version_url)
57
+ Starcall::ApiRequests.make_request(url: dd_region_version_url)
56
58
  end
57
59
 
58
60
  # This returns a list of all champion with a brief summary, including stats, id and blurb.
59
61
  def dd_champions
60
- ApiRequests.make_request(url: dd_url(game_component: 'champion'))
62
+ Starcall::ApiRequests.make_request(url: dd_url(game_component: 'champion'))
61
63
  end
62
64
 
63
65
  # For me detailed and specific information about a champion, this call can be used.
64
66
  def dd_specific_champion(champion_name:)
65
- ApiRequests.make_request(url: dd_specific_champion_url(champion_name: champion_name))
67
+ Starcall::ApiRequests.make_request(url: dd_specific_champion_url(champion_name: champion_name))
66
68
  end
67
69
 
68
70
  # Data Dragon also provides detail for every item in the game.
69
71
  # with this method you can find info such as the item's description, purchase value, sell value,
70
72
  # items it builds from, items it builds into, and stats granted from the item.
71
73
  def dd_items
72
- ApiRequests.make_request(url: dd_url(game_component: 'item'))
74
+ Starcall::ApiRequests.make_request(url: dd_url(game_component: 'item'))
73
75
  end
74
76
 
75
77
  # Details about summoner spells.
76
78
  def dd_summoner_spells
77
- ApiRequests.make_request(url: dd_url(game_component: 'summoner'))
79
+ Starcall::ApiRequests.make_request(url: dd_url(game_component: 'summoner'))
78
80
  end
79
81
 
80
82
  # Details about profile icons and where they can be found on the sprite sheets.
81
83
  def dd_profile_icons
82
- ApiRequests.make_request(url: dd_url(game_component: 'profileicon'))
84
+ Starcall::ApiRequests.make_request(url: dd_url(game_component: 'profileicon'))
83
85
  end
84
86
 
85
87
  private
@@ -103,7 +105,7 @@ module Starcall
103
105
 
104
106
  # This gets the current version of specific game components, such as champions.
105
107
  def dd_current_data_version(game_component:)
106
- ApiRequests.make_request(url: dd_region_version_url)['n'][game_component]
108
+ Starcall::ApiRequests.make_request(url: dd_region_version_url)['n'][game_component]
107
109
  end
108
110
 
109
111
  # This builds the data dragon url for specific components such as champions,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Starcall
4
- VERSION = '0.2.1'
4
+ VERSION = '0.3.0'
5
5
  end
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.require_paths = ['lib']
31
31
 
32
32
  spec.add_development_dependency 'bundler', '~> 2.0'
33
+ spec.add_development_dependency 'pry', '~> 0.13'
33
34
  spec.add_development_dependency 'rake', '~> 12.3'
34
35
  spec.add_development_dependency 'rspec', '~> 3.0'
35
36
  spec.add_development_dependency 'rubocop', '~> 0.86'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: starcall
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kelvin Samuel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-28 00:00:00.000000000 Z
11
+ date: 2020-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.13'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.13'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +128,12 @@ files:
114
128
  - Rakefile
115
129
  - lib/starcall.rb
116
130
  - lib/starcall/api_requests.rb
117
- - lib/starcall/error.rb
131
+ - lib/starcall/endpoints/champion_mastery_v4.rb
132
+ - lib/starcall/endpoints/endpoints.rb
133
+ - lib/starcall/errors/errors.rb
134
+ - lib/starcall/errors/invalid_language.rb
135
+ - lib/starcall/errors/invalid_region.rb
136
+ - lib/starcall/helpers/region_parser.rb
118
137
  - lib/starcall/languages.rb
119
138
  - lib/starcall/regions.rb
120
139
  - lib/starcall/static_data.rb