clash_of_clans_api 0.1.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2b63aa46b4c6536b5c3c86729addc9e5dfa9c8071fdc890d24eed29d8768010
4
- data.tar.gz: 4c2a7bf252282acd7f5254b22eab7fe5f273dd740c0179fb04926af0d8295fef
3
+ metadata.gz: 17f2ed1ae9f529afa9f24bb6ee50bc3f35b70fb420bd972b22feedcf5df185da
4
+ data.tar.gz: 464de1457dd80505922d87511956aa4db139bf42ac51bea7a73d17d9f9572423
5
5
  SHA512:
6
- metadata.gz: b9735602b7013aa396f555b1aca1d7dfc560cd6a46b27fd290275195f1a759c3789d116076ff10fe5ef5c8762371dfa2fdbebebc8f60930adf686c80b460aafe
7
- data.tar.gz: ccdb84b96e9c4db19c6e1bb89cd142fdd200c22b953d3f4ed6e45051bc13b137d7e23d247487842dcc915fe7c97f07550813fcbb834657add06799e967a7563f
6
+ metadata.gz: 249a37b6c0fa133af87ef742a7f23ede23fc85264a898f5c32672ff6be0c1099f00d6471a776eca315e09fbeb2ec7e248d466954bdc0cc1cdb03034bc41f7064
7
+ data.tar.gz: da0f8eca3f5482d89f091eb033f28de91d23f42c031ef5420b328c42dc02ae1cf859e744554c66d8695c0dc89f2454010bce1d7843561b3b8ab6a4a6dec017ed
@@ -24,30 +24,30 @@ module ClashOfClansApi
24
24
  }
25
25
  end
26
26
 
27
- define_endpoint :clan_currentwar_leaguegroup, method: :get, endpoint: proc { |clan_tag | "clans/#{Utils.url_escape(clan_tag)}/currentwar/leaguegroup" }
28
- define_endpoint :clanwarleagues_war, method: :get, endpoint: proc { | war_tag | "clanwarleagues/wars/#{Utils.url_escape(war_tag)}" }
29
- define_endpoint :clan_warlog, method: :get, endpoint: proc { |clan_tag | "clans/#{Utils.url_escape(clan_tag)}/warlog" }
30
- define_endpoint :clans, method: :get, endpoint: 'clans'
31
- define_endpoint :clan_currentwar, method: :get, endpoint: proc { |clan_tag | "clans/#{Utils.url_escape(clan_tag)}/currentwar" }
32
- define_endpoint :clan, method: :get, endpoint: proc { |clan_tag | "clans/#{Utils.url_escape(clan_tag)}" }
33
- define_endpoint :clan_members, method: :get, endpoint: proc { |clan_tag | "clans/#{Utils.url_escape(clan_tag)}/members" }
27
+ define_endpoint :clan_currentwar_leaguegroup, method: :get, endpoint: proc { |clan_tag | "clans/#{Utils.url_escape(clan_tag)}/currentwar/leaguegroup" }
28
+ define_endpoint :clanwarleagues_war, method: :get, endpoint: proc { | war_tag | "clanwarleagues/wars/#{Utils.url_escape(war_tag)}" }
29
+ define_endpoint :clan_warlog, method: :get, endpoint: proc { |clan_tag | "clans/#{Utils.url_escape(clan_tag)}/warlog" }
30
+ define_endpoint :clans, method: :get, endpoint: 'clans'
31
+ define_endpoint :clan_currentwar, method: :get, endpoint: proc { |clan_tag | "clans/#{Utils.url_escape(clan_tag)}/currentwar" }
32
+ define_endpoint :clan, method: :get, endpoint: proc { |clan_tag | "clans/#{Utils.url_escape(clan_tag)}" }
33
+ define_endpoint :clan_members, method: :get, endpoint: proc { |clan_tag | "clans/#{Utils.url_escape(clan_tag)}/members" }
34
34
 
35
- define_endpoint :player, method: :get, endpoint: proc { |player_tag | "players/#{Utils.url_escape(player_tag)}" }
36
- define_endpoint :player_verifytoken, method: :post, endpoint: proc { |player_tag | "players/#{Utils.url_escape(player_tag)}/verifytoken" }, body: proc { |token:| %Q[{"token":"#{token.to_s}"}] }
35
+ define_endpoint :player, method: :get, endpoint: proc { |player_tag | "players/#{Utils.url_escape(player_tag)}" }
36
+ define_endpoint :player_verifytoken, method: :post, endpoint: proc { |player_tag | "players/#{Utils.url_escape(player_tag)}/verifytoken" }, body: proc { |token:| %Q({"token":"#{token}"}) }
37
37
 
38
38
  define_endpoint :leagues, method: :get, endpoint: 'leagues'
39
39
  define_endpoint :league_season, method: :get, endpoint: proc { | league_id, season_id| "leagues/#{Utils.url_escape( league_id)}/seasons/#{Utils.url_escape(season_id)}" }
40
- define_endpoint :league, method: :get, endpoint: proc { | league_id | "leagues/#{Utils.url_escape( league_id)}" }
41
- define_endpoint :league_seasons, method: :get, endpoint: proc { | league_id | "leagues/#{Utils.url_escape( league_id)}/seasons" }
42
- define_endpoint :warleague, method: :get, endpoint: proc { |warleague_id | "warleagues/#{Utils.url_escape(warleague_id)}" }
40
+ define_endpoint :league, method: :get, endpoint: proc { | league_id | "leagues/#{Utils.url_escape( league_id)}" }
41
+ define_endpoint :league_seasons, method: :get, endpoint: proc { | league_id | "leagues/#{Utils.url_escape( league_id)}/seasons" }
42
+ define_endpoint :warleague, method: :get, endpoint: proc { |warleague_id | "warleagues/#{Utils.url_escape(warleague_id)}" }
43
43
  define_endpoint :warleagues, method: :get, endpoint: 'warleagues'
44
44
 
45
- define_endpoint :location_rankings_clans, method: :get, endpoint: proc { |location_id | "locations/#{Utils.url_escape(location_id)}/rankings/clans" }
46
- define_endpoint :location_rankings_players, method: :get, endpoint: proc { |location_id | "locations/#{Utils.url_escape(location_id)}/rankings/players" }
47
- define_endpoint :location_rankings_clansversus, method: :get, endpoint: proc { |location_id | "locations/#{Utils.url_escape(location_id)}/rankings/clans-versus" }
48
- define_endpoint :location_rankings_playersversus, method: :get, endpoint: proc { |location_id | "locations/#{Utils.url_escape(location_id)}/rankings/players-versus" }
45
+ define_endpoint :location_rankings_clans, method: :get, endpoint: proc { |location_id | "locations/#{Utils.url_escape(location_id)}/rankings/clans" }
46
+ define_endpoint :location_rankings_players, method: :get, endpoint: proc { |location_id | "locations/#{Utils.url_escape(location_id)}/rankings/players" }
47
+ define_endpoint :location_rankings_clansversus, method: :get, endpoint: proc { |location_id | "locations/#{Utils.url_escape(location_id)}/rankings/clans-versus" }
48
+ define_endpoint :location_rankings_playersversus, method: :get, endpoint: proc { |location_id | "locations/#{Utils.url_escape(location_id)}/rankings/players-versus" }
49
49
  define_endpoint :locations, method: :get, endpoint: 'locations'
50
- define_endpoint :location, method: :get, endpoint: proc { |location_id | "locations/#{Utils.url_escape(location_id)}" }
50
+ define_endpoint :location, method: :get, endpoint: proc { |location_id | "locations/#{Utils.url_escape(location_id)}" }
51
51
 
52
52
  define_endpoint :goldpass_seasons_current, method: :get, endpoint: 'goldpass/seasons/current'
53
53
 
@@ -1,4 +1,7 @@
1
1
  require_relative 'api'
2
+ require_relative 'models/paginated_response'
3
+ require_relative 'models/clan'
4
+ require_relative 'models/player'
2
5
  require_relative 'models/league'
3
6
 
4
7
  module ClashOfClansApi
@@ -10,7 +13,7 @@ module ClashOfClansApi
10
13
  end
11
14
 
12
15
  def authorized?
13
- api.perform_get('test').code == '404'
16
+ api.perform_request(:get, 'test').code == '404'
14
17
  end
15
18
 
16
19
  def player_verifytoken(player_tag, token)
@@ -20,27 +23,37 @@ module ClashOfClansApi
20
23
  raise "Sent token #{ token .inspect} but received #{response['token'].inspect}." unless token == response['token']
21
24
 
22
25
  case response['status']
23
- when 'ok'
24
- true
25
- when 'invalid'
26
- false
27
- else
28
- raise "Unknown status #{response['status'].inspect}."
26
+ when 'ok'
27
+ true
28
+ when 'invalid'
29
+ false
30
+ else
31
+ raise "Unknown status #{response['status'].inspect}."
29
32
  end
30
33
  end
31
34
 
35
+ def clan(tag)
36
+ Models::Clan.new(api.clan(tag), self)
37
+ end
38
+
39
+ def clan_members(tag)
40
+ Models::PaginatedResponse.new(Models::Player, api.clan_members(tag), self)
41
+ end
42
+
32
43
  def leagues
33
- response = api.leagues
34
-
35
- raise NotImplementedError, "Found a paging cursor but handling it is not implemented yet." if response['paging']['cursors'].any?
36
-
37
- response['items'].map do |league|
38
- Models::League.new(league)
39
- end
44
+ Models::PaginatedResponse.new(Models::League, api.leagues, self)
40
45
  end
41
46
 
42
47
  def league(id)
43
- Models::League.new(api.league(id))
48
+ Models::League.new(api.league(id), self)
49
+ end
50
+
51
+ def player(tag)
52
+ Models::Player.new(api.player(tag), self)
53
+ end
54
+
55
+ def league_season(league_id=29000022, season_id, limit: nil, before: nil, after: nil) # rubocop:disable Style/OptionalArguments
56
+ Models::PaginatedResponse.new(Models::Player, api.league_season(league_id, season_id, query: {limit: limit, before: before, after: after}.compact), self)
44
57
  end
45
58
  end
46
59
  end
@@ -9,17 +9,17 @@ module ClashOfClansApi
9
9
  end
10
10
 
11
11
  def perform_request(method, api_path, query: nil, body: nil, headers: nil)
12
- uri = self.base_uri+api_path
12
+ uri = self.base_uri + api_path
13
13
  uri.query = URI.encode_www_form(query) if query
14
14
 
15
- Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme=='https') do |http|
15
+ Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
16
16
  case method
17
- when :get
18
- Net::HTTP::Get
19
- when :post
20
- Net::HTTP::Post
21
- else
22
- raise ArgumentError, "Invalid method #{method.inspect}."
17
+ when :get
18
+ Net::HTTP::Get
19
+ when :post
20
+ Net::HTTP::Post
21
+ else
22
+ raise ArgumentError, "Invalid method #{method.inspect}."
23
23
  end.new(uri).tap do |request|
24
24
  endpoint_headers.merge(headers || {}).each do |name, value|
25
25
  request[name] = value
@@ -39,11 +39,10 @@ module ClashOfClansApi
39
39
  if response.is_a?(Net::HTTPSuccess)
40
40
  JSON.parse(response.body)
41
41
  else
42
- raise NoSuccessError.new(response)
42
+ raise NoSuccessError, response
43
43
  end
44
44
  end
45
45
 
46
-
47
46
  def self.included(klass)
48
47
  klass.extend(ClassMethods)
49
48
  end
@@ -54,7 +53,7 @@ module ClashOfClansApi
54
53
  uri = endpoint.respond_to?(:call) ? ClashOfClansApi::Utils.call_proc_without_unknown_keywords(endpoint, *args, **kwargs) : endpoint
55
54
  request_body = body .respond_to?(:call) ? ClashOfClansApi::Utils.call_proc_without_unknown_keywords(body, *args, **kwargs) : body
56
55
 
57
- perform_request(method, uri, body: request_body, query: kwargs.dig(:query), headers: kwargs.dig(:headers)).then do |response|
56
+ perform_request(method, uri, body: request_body, query: kwargs.key?(:query) ? kwargs.fetch(:query) : nil, headers: kwargs.key?(:headers) ? kwargs.fetch(:headers) : nil).then do |response|
58
57
  if !kwargs.key?(:plain_response) || !kwargs.fetch(:plain_response)
59
58
  transform_response(response)
60
59
  else
@@ -0,0 +1,15 @@
1
+ require_relative 'base'
2
+
3
+ module ClashOfClansApi
4
+ module Models
5
+ class Achievement < Base
6
+ property :name, 'name', required: true
7
+ property :stars, 'stars', required: true
8
+ property :value, 'value', required: true
9
+ property :target, 'target', required: true
10
+ property :info, 'info', required: true
11
+ property :completion_info, 'completionInfo', required: true
12
+ property :village, 'village', required: true
13
+ end
14
+ end
15
+ end
@@ -3,8 +3,11 @@ require_relative 'invalid_data_error'
3
3
  module ClashOfClansApi
4
4
  module Models
5
5
  class Base
6
- def initialize(hash)
7
- @hash = hash
6
+ attr_reader :client
7
+
8
+ def initialize(hash, client)
9
+ @hash = hash
10
+ @client = client
8
11
 
9
12
  validate!
10
13
  end
@@ -20,23 +23,41 @@ module ClashOfClansApi
20
23
  class << self
21
24
  attr_reader :required_fields
22
25
 
23
- def property(name, key, type: nil, required: false)
26
+ def property(name, key, type: nil, required: false, default: nil)
24
27
  define_method(name) do
25
- if type.nil?
28
+ type =
29
+ case type
30
+ when Symbol
31
+ send(type)
32
+ when String
33
+ self.class.const_get(type)
34
+ else
35
+ type
36
+ end
37
+
38
+ if !@hash.key?(key) && !default.nil?
39
+ default
40
+ elsif type.nil?
26
41
  self[key]
42
+ elsif property_cached?(name)
43
+ property_from_cache(name)
27
44
  else
28
- if property_cached?(name)
29
- property_from_cache(name)
30
- else
31
- cache_property(name, self[key].then do |prop|
32
- prop.is_a?(Array) ? prop.map {|item| type.new(item) } : type.new(prop)
33
- end)
45
+ initializer_proc = proc do |item|
46
+ if type.ancestors.include?(ClashOfClansApi::Models::Base)
47
+ type.new(item, self.client)
48
+ else
49
+ type.new(item)
50
+ end
34
51
  end
52
+
53
+ cache_property(name, self[key].then do |prop|
54
+ prop.is_a?(Array) ? prop.map(&initializer_proc) : initializer_proc.call(prop)
55
+ end)
35
56
  end
36
57
  end
37
58
 
38
59
  if required
39
- @required_fields = (@required_fields || [])+[key]
60
+ @required_fields = (@required_fields || []) + [key]
40
61
  end
41
62
  end
42
63
  end
@@ -0,0 +1,32 @@
1
+ require_relative 'base'
2
+ require_relative 'icon_set'
3
+ require_relative 'label'
4
+
5
+ module ClashOfClansApi
6
+ module Models
7
+ class Clan < Base
8
+ property :tag, 'tag', required: true
9
+ property :name, 'name', required: true
10
+ property :clan_level, 'clanLevel', required: true
11
+ property :badge_urls, 'badgeUrls', required: true, type: IconSet
12
+ property :type, 'type'
13
+ property :location, 'location'
14
+ property :clan_points, 'clanPoints'
15
+ property :clan_versus_points, 'clanVersusPoints'
16
+ property :required_trophies, 'requiredTrophies'
17
+ property :war_frequency, 'warFrequency'
18
+ property :war_win_streak, 'warWinStreak'
19
+ property :war_wins, 'warWins'
20
+ property :war_ties, 'warTies'
21
+ property :war_losses, 'warLosses'
22
+ property :is_war_log_public, 'isWarLogPublic'
23
+ property :war_league, 'warLeague'
24
+ property :members, 'members'
25
+ property :member_list, 'memberList', type: 'ClashOfClansApi::Models::Player'
26
+ property :labels, 'labels', type: Label
27
+ property :chat_language, 'chatLanguage'
28
+ property :required_versus_trophies, 'requiredVersusTrophies'
29
+ property :required_townhall_level, 'requiredTownhallLevel'
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,12 @@
1
+ require_relative 'base'
2
+
3
+ module ClashOfClansApi
4
+ module Models
5
+ class Hero < Base
6
+ property :name, 'name', required: true
7
+ property :level, 'level', required: true
8
+ property :max_level, 'maxLevel', required: true
9
+ property :village, 'village', required: true
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require_relative 'base'
2
+ require_relative 'icon_set'
3
+
4
+ module ClashOfClansApi
5
+ module Models
6
+ class Label < Base
7
+ property :id, 'id', required: true
8
+ property :name, 'name', required: true
9
+ property :icon_urls, 'iconUrls', required: true, type: IconSet
10
+ end
11
+ end
12
+ end
@@ -6,7 +6,7 @@ module ClashOfClansApi
6
6
  class League < Base
7
7
  property :id, 'id', required: true
8
8
  property :name, 'name', required: true
9
- property :icon_urls, 'iconUrls', type: IconSet
9
+ property :icon_urls, 'iconUrls', required: true, type: IconSet
10
10
  end
11
11
  end
12
12
  end
@@ -0,0 +1,11 @@
1
+ require_relative 'base'
2
+
3
+ module ClashOfClansApi
4
+ module Models
5
+ class LegendSeason < Base
6
+ property :id, 'id', required: false
7
+ property :rank, 'rank', required: true
8
+ property :trophies, 'trophies', required: true
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ require_relative 'base'
2
+ require_relative 'legend_season'
3
+
4
+ module ClashOfClansApi
5
+ module Models
6
+ class LegendStatistics < Base
7
+ property :legend_trophies, 'legendTrophies', required: true
8
+ property :previous_season, 'previousSeason', required: true, type: LegendSeason
9
+ property :best_season, 'bestSeason', required: true, type: LegendSeason
10
+ property :current_season, 'currentSeason', required: true, type: LegendSeason
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'base'
2
+
3
+ module ClashOfClansApi
4
+ module Models
5
+ class PaginatedResponse < Base
6
+ attr_accessor :item_type
7
+
8
+ property :items, 'items', type: :item_type, required: true
9
+ property :paging, 'paging'
10
+
11
+ def initialize(item_type, hash, client)
12
+ self.item_type = item_type
13
+
14
+ super(hash, client)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,43 @@
1
+ require_relative 'base'
2
+ require_relative 'achievement'
3
+ require_relative 'hero'
4
+ require_relative 'label'
5
+ require_relative 'league'
6
+ require_relative 'legend_statistics'
7
+ require_relative 'spell'
8
+ require_relative 'troop'
9
+
10
+ module ClashOfClansApi
11
+ module Models
12
+ class Player < Base
13
+ property :tag, 'tag', required: true
14
+ property :name, 'name', required: true
15
+ property :town_hall_level, 'townHallLevel'
16
+ property :town_hall_weapon_level, 'townHallWeaponLevel'
17
+ property :exp_level, 'expLevel'
18
+ property :trophies, 'trophies', required: true
19
+ property :best_trophies, 'bestTrophies'
20
+ property :war_stars, 'warStars'
21
+ property :attack_wins, 'attackWins'
22
+ property :defense_wins, 'defenseWins'
23
+ property :builder_hall_level, 'builderHallLevel'
24
+ property :versus_trophies, 'versusTrophies'
25
+ property :best_versus_trophies, 'bestVersusTrophies'
26
+ property :versus_battle_wins, 'versusBattleWins'
27
+ property :role, 'role'
28
+ property :war_preference, 'warPreference'
29
+ property :donations, 'donations'
30
+ property :donations_received, 'donationsReceived'
31
+ property :rank, 'rank'
32
+ property :clan, 'clan', type: 'ClashOfClansApi::Models::Clan'
33
+ property :league, 'league', type: League
34
+ property :legend_statistics, 'legendStatistics', type: LegendStatistics
35
+ property :achievements, 'achievements', type: Achievement
36
+ property :versus_battle_win_count, 'versusBattleWinCount'
37
+ property :labels, 'labels', type: Label
38
+ property :troops, 'troops', type: Troop
39
+ property :heroes, 'heroes', type: Hero
40
+ property :spells, 'spells', type: Spell
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,12 @@
1
+ require_relative 'base'
2
+
3
+ module ClashOfClansApi
4
+ module Models
5
+ class Spell < Base
6
+ property :name, 'name', required: true
7
+ property :level, 'level', required: true
8
+ property :max_level, 'maxLevel', required: true
9
+ property :village, 'village', required: true
10
+ end
11
+ end
12
+ end
@@ -14,14 +14,8 @@ module ClashOfClansApi
14
14
  property :valid_until, 'validUntil'
15
15
  property :key, 'key', required: true
16
16
 
17
- def initialize(hash, token_client:)
18
- super(hash)
19
-
20
- @token_client = token_client
21
- end
22
-
23
17
  def revoke
24
- @token_client.revoke_api_key(self.id)
18
+ self.client.revoke_api_key(self.id)
25
19
  end
26
20
 
27
21
  def client_from_token
@@ -0,0 +1,13 @@
1
+ require_relative 'base'
2
+
3
+ module ClashOfClansApi
4
+ module Models
5
+ class Troop < Base
6
+ property :name, 'name', required: true
7
+ property :level, 'level', required: true
8
+ property :max_level, 'maxLevel', required: true
9
+ property :village, 'village', required: true
10
+ property :super_troop_is_active, 'superTroopIsActive', required: false, default: false
11
+ end
12
+ end
13
+ end
@@ -3,6 +3,8 @@ module ClashOfClansApi
3
3
  attr_reader :response
4
4
 
5
5
  def initialize(response)
6
+ super
7
+
6
8
  @response = response
7
9
  end
8
10
  end
@@ -36,14 +36,14 @@ module ClashOfClansApi
36
36
  response = TokenApi.apikey_list(headers: @session_headers)
37
37
 
38
38
  response['keys'].map do |key|
39
- Models::Token.new(key, token_client: self)
39
+ Models::Token.new(key, self)
40
40
  end
41
41
  end
42
42
 
43
43
  def create_api_key(name, description, ip_addresses)
44
44
  response = TokenApi.apikey_create(name: name, description: description, ip_addresses: (ip_addresses.is_a?(Array) ? ip_addresses : [ip_addresses]), headers: @session_headers)
45
45
 
46
- Models::Token.new(response['key'], token_client: self)
46
+ Models::Token.new(response['key'], self)
47
47
  end
48
48
 
49
49
  def revoke_api_key(id)
@@ -21,13 +21,13 @@ module ClashOfClansApi
21
21
  if params.key?(:keyrest)
22
22
  kwargs
23
23
  else
24
- kwargs.slice(*(params.values_at(:key, :keyreq).compact.flatten))
24
+ kwargs.slice(*params.values_at(:key, :keyreq).compact.flatten)
25
25
  end
26
26
 
27
27
  proc.call(*args, **proc_keys, &block)
28
28
  end
29
29
 
30
- def self.get_current_ipv4_address
30
+ def self.current_ipv4_address
31
31
  IPAddr.new(URI('https://ipv4.icanhazip.com').open.read.strip).to_s
32
32
  end
33
33
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ClashOfClansApi
4
- VERSION = '0.1.1'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clash_of_clans_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - expeehaa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-26 00:00:00.000000000 Z
11
+ date: 2022-02-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -22,11 +22,21 @@ files:
22
22
  - lib/clash_of_clans_api/api.rb
23
23
  - lib/clash_of_clans_api/client.rb
24
24
  - lib/clash_of_clans_api/endpoint_methods.rb
25
+ - lib/clash_of_clans_api/models/achievement.rb
25
26
  - lib/clash_of_clans_api/models/base.rb
27
+ - lib/clash_of_clans_api/models/clan.rb
28
+ - lib/clash_of_clans_api/models/hero.rb
26
29
  - lib/clash_of_clans_api/models/icon_set.rb
27
30
  - lib/clash_of_clans_api/models/invalid_data_error.rb
31
+ - lib/clash_of_clans_api/models/label.rb
28
32
  - lib/clash_of_clans_api/models/league.rb
33
+ - lib/clash_of_clans_api/models/legend_season.rb
34
+ - lib/clash_of_clans_api/models/legend_statistics.rb
35
+ - lib/clash_of_clans_api/models/paginated_response.rb
36
+ - lib/clash_of_clans_api/models/player.rb
37
+ - lib/clash_of_clans_api/models/spell.rb
29
38
  - lib/clash_of_clans_api/models/token.rb
39
+ - lib/clash_of_clans_api/models/troop.rb
30
40
  - lib/clash_of_clans_api/no_success_error.rb
31
41
  - lib/clash_of_clans_api/tags.rb
32
42
  - lib/clash_of_clans_api/token_api.rb
@@ -37,6 +47,7 @@ homepage: https://github.com/expeehaa/clash_of_clans_api
37
47
  licenses: []
38
48
  metadata:
39
49
  allowed_push_host: https://rubygems.org
50
+ rubygems_mfa_required: 'true'
40
51
  post_install_message:
41
52
  rdoc_options: []
42
53
  require_paths:
@@ -52,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
52
63
  - !ruby/object:Gem::Version
53
64
  version: '0'
54
65
  requirements: []
55
- rubygems_version: 3.2.22
66
+ rubygems_version: 3.3.3
56
67
  signing_key:
57
68
  specification_version: 4
58
69
  summary: Client library for interacting with the ClashOfClans API.