steam_api_client 0.9.1 → 1.0.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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +105 -1
  3. data/README.md +36 -50
  4. data/docs/USAGE.md +326 -0
  5. data/lib/steam_api_client/client.rb +58 -35
  6. data/lib/steam_api_client/configuration.rb +55 -0
  7. data/lib/steam_api_client/endpoint/param.rb +83 -0
  8. data/lib/steam_api_client/endpoint.rb +90 -0
  9. data/lib/steam_api_client/endpoints.rb +122 -0
  10. data/lib/steam_api_client/errors/api_error.rb +39 -8
  11. data/lib/steam_api_client/errors/connection_error.rb +7 -0
  12. data/lib/steam_api_client/errors/missing_api_token.rb +11 -0
  13. data/lib/steam_api_client/errors/response_parse_error.rb +6 -6
  14. data/lib/steam_api_client/failure_handler.rb +4 -6
  15. data/lib/steam_api_client/model/field.rb +42 -0
  16. data/lib/steam_api_client/model/scalars.rb +59 -0
  17. data/lib/steam_api_client/model.rb +102 -0
  18. data/lib/steam_api_client/models/app_details.rb +118 -0
  19. data/lib/steam_api_client/models/friend.rb +11 -0
  20. data/lib/steam_api_client/models/game.rb +35 -0
  21. data/lib/steam_api_client/models/global_achievement.rb +10 -0
  22. data/lib/steam_api_client/models/news_item.rb +20 -0
  23. data/lib/steam_api_client/models/player_achievements.rb +19 -0
  24. data/lib/steam_api_client/models/player_game_stats.rb +25 -0
  25. data/lib/steam_api_client/models/player_summary.rb +37 -0
  26. data/lib/steam_api_client/request.rb +54 -53
  27. data/lib/steam_api_client/requestor.rb +42 -0
  28. data/lib/steam_api_client/response.rb +33 -17
  29. data/lib/steam_api_client/version.rb +1 -1
  30. data/lib/steam_api_client.rb +20 -57
  31. metadata +36 -89
  32. data/lib/steam_api_client/errors/url_error.rb +0 -5
  33. data/lib/steam_api_client/requestors/app_details.rb +0 -27
  34. data/lib/steam_api_client/requestors/app_global_achievements.rb +0 -19
  35. data/lib/steam_api_client/requestors/app_news.rb +0 -23
  36. data/lib/steam_api_client/requestors/base.rb +0 -32
  37. data/lib/steam_api_client/requestors/game_current_players.rb +0 -19
  38. data/lib/steam_api_client/requestors/player_achievements.rb +0 -21
  39. data/lib/steam_api_client/requestors/player_friends.rb +0 -21
  40. data/lib/steam_api_client/requestors/player_game_stats.rb +0 -21
  41. data/lib/steam_api_client/requestors/player_level.rb +0 -18
  42. data/lib/steam_api_client/requestors/player_owned_games.rb +0 -23
  43. data/lib/steam_api_client/requestors/player_recent_games.rb +0 -21
  44. data/lib/steam_api_client/requestors/player_steamid.rb +0 -19
  45. data/lib/steam_api_client/requestors/player_summaries.rb +0 -19
  46. data/lib/steam_api_client/structs/app_details/achievement.rb +0 -12
  47. data/lib/steam_api_client/structs/app_details/category.rb +0 -12
  48. data/lib/steam_api_client/structs/app_details/details.rb +0 -82
  49. data/lib/steam_api_client/structs/app_details/genre.rb +0 -12
  50. data/lib/steam_api_client/structs/app_details/movie.rb +0 -25
  51. data/lib/steam_api_client/structs/app_details/package_group.rb +0 -18
  52. data/lib/steam_api_client/structs/app_details/requirements.rb +0 -12
  53. data/lib/steam_api_client/structs/app_details/screenshot.rb +0 -13
  54. data/lib/steam_api_client/structs/app_details/sub.rb +0 -18
  55. data/lib/steam_api_client/structs/app_global_achievements.rb +0 -18
  56. data/lib/steam_api_client/structs/app_new.rb +0 -20
  57. data/lib/steam_api_client/structs/app_news.rb +0 -13
  58. data/lib/steam_api_client/structs/base.rb +0 -15
  59. data/lib/steam_api_client/structs/game_current_players.rb +0 -12
  60. data/lib/steam_api_client/structs/player_achievements.rb +0 -23
  61. data/lib/steam_api_client/structs/player_friends.rb +0 -17
  62. data/lib/steam_api_client/structs/player_game_stats.rb +0 -20
  63. data/lib/steam_api_client/structs/player_level.rb +0 -11
  64. data/lib/steam_api_client/structs/player_owned_games.rb +0 -25
  65. data/lib/steam_api_client/structs/player_recent_games.rb +0 -22
  66. data/lib/steam_api_client/structs/player_steamid.rb +0 -16
  67. data/lib/steam_api_client/structs/player_summaries.rb +0 -11
  68. data/lib/steam_api_client/structs/player_summary.rb +0 -34
  69. data/lib/steam_api_client/structs/requests/abstract.rb +0 -59
  70. data/lib/steam_api_client/structs/requests/get_app_details.rb +0 -54
  71. data/lib/steam_api_client/structs/requests/get_app_global_achievements.rb +0 -54
  72. data/lib/steam_api_client/structs/requests/get_app_news.rb +0 -62
  73. data/lib/steam_api_client/structs/requests/get_game_current_players.rb +0 -54
  74. data/lib/steam_api_client/structs/requests/get_player_achievements.rb +0 -54
  75. data/lib/steam_api_client/structs/requests/get_player_friends.rb +0 -57
  76. data/lib/steam_api_client/structs/requests/get_player_game_stats.rb +0 -54
  77. data/lib/steam_api_client/structs/requests/get_player_level.rb +0 -48
  78. data/lib/steam_api_client/structs/requests/get_player_owned_games.rb +0 -56
  79. data/lib/steam_api_client/structs/requests/get_player_recent_games.rb +0 -54
  80. data/lib/steam_api_client/structs/requests/get_player_steamid.rb +0 -48
  81. data/lib/steam_api_client/structs/requests/get_player_summaries.rb +0 -52
  82. data/lib/steam_api_client/structs/requests/storefront_abstract.rb +0 -58
  83. data/lib/steam_api_client/structs/types.rb +0 -14
@@ -5,17 +5,17 @@ module SteamApiClient
5
5
  class Response
6
6
  extend Forwardable
7
7
 
8
- def_delegators :@raw_response, :timed_out?, :success?, :body
8
+ # headers: the HTTP response headers (case-insensitive Faraday::Utils::Headers)
9
+ def_delegators :@raw_response, :success?, :body, :headers
9
10
  attr_accessor :request
10
11
 
11
12
  # Initialize a new instance
12
- # @param [Typhoeus::Response] raw_response
13
- # @param [SteamApiClient::Structs::Base] response_struct The struct necessary to
14
- # build the response received from Api
13
+ # @param [Faraday::Response] raw_response
14
+ # @param [SteamApiClient::Endpoint] endpoint The endpoint called, which builds the result
15
15
  # @param [SteamApiClient::Request] request The wrapper Request class
16
- def initialize(raw_response:, response_struct:, request:)
16
+ def initialize(raw_response:, endpoint:, request:)
17
17
  @raw_response = raw_response
18
- @response_struct = response_struct
18
+ @endpoint = endpoint
19
19
  @request = request
20
20
  end
21
21
 
@@ -28,7 +28,7 @@ module SteamApiClient
28
28
  # Returns the HTTP status code
29
29
  # @return [Integer]
30
30
  def status_code
31
- raw_response.code
31
+ raw_response.status
32
32
  end
33
33
 
34
34
  # Parses the response's json body as a Hash. If the response body isn't a json
@@ -40,25 +40,41 @@ module SteamApiClient
40
40
  {}
41
41
  end
42
42
 
43
- # Parses the response's json body and build the expected struct
44
- # @return [SteamApiClient::Structs::Base]
43
+ # Steam's JSON, untouched (keys symbolized)
44
+ # @return [Hash]
45
45
  # @raise [SteamApiClient::Errors::ResponseParseError] if the body isn't a JSON object
46
- # or doesn't match the response struct
46
+ def json
47
+ parse_body.tap do |json|
48
+ raise Model::Error, "expected a JSON object, got #{json.class}" unless json.is_a?(Hash)
49
+ end
50
+ rescue JSON::ParserError, Model::Error
51
+ raise Errors::ResponseParseError.new(self, endpoint)
52
+ end
53
+
54
+ # The endpoint's result, built from the JSON body
55
+ # @return [Data, Array, Integer, nil] see SteamApiClient::Endpoints
56
+ # @raise [SteamApiClient::Errors::ResponseParseError] if the body isn't a JSON object
57
+ # or doesn't match the endpoint's result
47
58
  def result
48
- json_response = parse_body
49
- raise TypeError, "expected a JSON object, got #{json_response.class}" unless json_response.is_a?(Hash)
59
+ endpoint.result(json)
60
+ rescue Model::Error
61
+ raise Errors::ResponseParseError.new(self, endpoint)
62
+ end
50
63
 
51
- response_struct.build_from_response(json_response)
52
- rescue JSON::ParserError, TypeError, Dry::Struct::Error
53
- raise Errors::ResponseParseError.new(self, response_struct)
64
+ # Shows the status and the request, with the API token redacted
65
+ # @return [String]
66
+ def inspect
67
+ "#<#{self.class.name} status=#{status_code} request=#{request.inspect}>"
54
68
  end
55
69
 
56
70
  private
57
71
 
58
- attr_accessor :raw_response, :response_struct
72
+ attr_accessor :raw_response, :endpoint
59
73
 
74
+ # json 3 rejects duplicate keys by default; keep json 2's behavior (last one wins)
75
+ # so a response parses the same whichever json version the app uses
60
76
  def parse_body
61
- ::JSON.parse(raw_response.body.to_s, symbolize_names: true)
77
+ ::JSON.parse(raw_response.body.to_s, symbolize_names: true, allow_duplicate_key: true)
62
78
  end
63
79
  end
64
80
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SteamApiClient
4
- VERSION = "0.9.1"
4
+ VERSION = "1.0.0"
5
5
  end
@@ -1,74 +1,37 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "dry-configurable"
4
- require "dry-struct"
5
3
  require "json"
4
+ require "time"
6
5
  require "singleton"
7
- require "typhoeus"
6
+ require "faraday"
8
7
 
9
8
  require_relative "steam_api_client/version"
9
+ require_relative "steam_api_client/configuration"
10
+ require_relative "steam_api_client/model"
11
+ require_relative "steam_api_client/model/scalars"
12
+ require_relative "steam_api_client/model/field"
13
+ require_relative "steam_api_client/endpoint"
14
+ require_relative "steam_api_client/endpoint/param"
10
15
  require_relative "steam_api_client/request"
16
+ require_relative "steam_api_client/requestor"
11
17
  require_relative "steam_api_client/response"
12
18
  require_relative "steam_api_client/failure_handler"
13
19
 
14
20
  require_relative "steam_api_client/errors/api_error"
21
+ require_relative "steam_api_client/errors/connection_error"
22
+ require_relative "steam_api_client/errors/missing_api_token"
15
23
  require_relative "steam_api_client/errors/response_parse_error"
16
- require_relative "steam_api_client/errors/url_error"
17
24
 
18
- require_relative "steam_api_client/requestors/base"
19
- require_relative "steam_api_client/requestors/app_details"
20
- require_relative "steam_api_client/requestors/app_global_achievements"
21
- require_relative "steam_api_client/requestors/app_news"
22
- require_relative "steam_api_client/requestors/game_current_players"
23
- require_relative "steam_api_client/requestors/player_achievements"
24
- require_relative "steam_api_client/requestors/player_friends"
25
- require_relative "steam_api_client/requestors/player_game_stats"
26
- require_relative "steam_api_client/requestors/player_level"
27
- require_relative "steam_api_client/requestors/player_owned_games"
28
- require_relative "steam_api_client/requestors/player_recent_games"
29
- require_relative "steam_api_client/requestors/player_steamid"
30
- require_relative "steam_api_client/requestors/player_summaries"
31
-
32
- require_relative "steam_api_client/structs/types"
33
- require_relative "steam_api_client/structs/base"
34
- require_relative "steam_api_client/structs/app_details/achievement"
35
- require_relative "steam_api_client/structs/app_details/category"
36
- require_relative "steam_api_client/structs/app_details/genre"
37
- require_relative "steam_api_client/structs/app_details/movie"
38
- require_relative "steam_api_client/structs/app_details/sub"
39
- require_relative "steam_api_client/structs/app_details/package_group"
40
- require_relative "steam_api_client/structs/app_details/requirements"
41
- require_relative "steam_api_client/structs/app_details/screenshot"
42
- require_relative "steam_api_client/structs/app_details/details"
43
- require_relative "steam_api_client/structs/app_global_achievements"
44
- require_relative "steam_api_client/structs/app_new"
45
- require_relative "steam_api_client/structs/app_news"
46
- require_relative "steam_api_client/structs/game_current_players"
47
- require_relative "steam_api_client/structs/player_summary"
48
- require_relative "steam_api_client/structs/player_achievements"
49
- require_relative "steam_api_client/structs/player_friends"
50
- require_relative "steam_api_client/structs/player_game_stats"
51
- require_relative "steam_api_client/structs/player_level"
52
- require_relative "steam_api_client/structs/player_owned_games"
53
- require_relative "steam_api_client/structs/player_recent_games"
54
- require_relative "steam_api_client/structs/player_steamid"
55
- require_relative "steam_api_client/structs/player_summaries"
56
-
57
- require_relative "steam_api_client/structs/requests/abstract"
58
- require_relative "steam_api_client/structs/requests/storefront_abstract"
59
- require_relative "steam_api_client/structs/requests/get_app_details"
60
- require_relative "steam_api_client/structs/requests/get_app_global_achievements"
61
- require_relative "steam_api_client/structs/requests/get_app_news"
62
- require_relative "steam_api_client/structs/requests/get_game_current_players"
63
- require_relative "steam_api_client/structs/requests/get_player_achievements"
64
- require_relative "steam_api_client/structs/requests/get_player_friends"
65
- require_relative "steam_api_client/structs/requests/get_player_game_stats"
66
- require_relative "steam_api_client/structs/requests/get_player_level"
67
- require_relative "steam_api_client/structs/requests/get_player_owned_games"
68
- require_relative "steam_api_client/structs/requests/get_player_recent_games"
69
- require_relative "steam_api_client/structs/requests/get_player_steamid"
70
- require_relative "steam_api_client/structs/requests/get_player_summaries"
25
+ require_relative "steam_api_client/models/player_summary"
26
+ require_relative "steam_api_client/models/friend"
27
+ require_relative "steam_api_client/models/game"
28
+ require_relative "steam_api_client/models/player_achievements"
29
+ require_relative "steam_api_client/models/player_game_stats"
30
+ require_relative "steam_api_client/models/news_item"
31
+ require_relative "steam_api_client/models/global_achievement"
32
+ require_relative "steam_api_client/models/app_details"
71
33
 
34
+ require_relative "steam_api_client/endpoints"
72
35
  require_relative "steam_api_client/client"
73
36
 
74
37
  # Main module
metadata CHANGED
@@ -1,58 +1,34 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: steam_api_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - João Pedro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-23 00:00:00.000000000 Z
11
+ date: 2026-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: dry-configurable
14
+ name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.1.0
19
+ version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.1.0
27
- - !ruby/object:Gem::Dependency
28
- name: dry-struct
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.6'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.6'
41
- - !ruby/object:Gem::Dependency
42
- name: typhoeus
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.4'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.4'
55
- description:
26
+ version: '2.0'
27
+ description: A Ruby client for the Steam Web API (player summaries, friends, owned
28
+ and recent games, achievements, stats, levels, vanity URLs, app news, current players)
29
+ and the Storefront API (app details). Results come back as plain Ruby Data objects
30
+ with snake_case fields, and HTTP failures as specific error classes. Its only dependency
31
+ is Faraday.
56
32
  email:
57
33
  - pedrochaveslimas3@gmail.com
58
34
  executables: []
@@ -62,71 +38,42 @@ files:
62
38
  - CHANGELOG.md
63
39
  - LICENSE
64
40
  - README.md
41
+ - docs/USAGE.md
65
42
  - lib/steam_api_client.rb
66
43
  - lib/steam_api_client/client.rb
44
+ - lib/steam_api_client/configuration.rb
45
+ - lib/steam_api_client/endpoint.rb
46
+ - lib/steam_api_client/endpoint/param.rb
47
+ - lib/steam_api_client/endpoints.rb
67
48
  - lib/steam_api_client/errors/api_error.rb
49
+ - lib/steam_api_client/errors/connection_error.rb
50
+ - lib/steam_api_client/errors/missing_api_token.rb
68
51
  - lib/steam_api_client/errors/response_parse_error.rb
69
- - lib/steam_api_client/errors/url_error.rb
70
52
  - lib/steam_api_client/failure_handler.rb
53
+ - lib/steam_api_client/model.rb
54
+ - lib/steam_api_client/model/field.rb
55
+ - lib/steam_api_client/model/scalars.rb
56
+ - lib/steam_api_client/models/app_details.rb
57
+ - lib/steam_api_client/models/friend.rb
58
+ - lib/steam_api_client/models/game.rb
59
+ - lib/steam_api_client/models/global_achievement.rb
60
+ - lib/steam_api_client/models/news_item.rb
61
+ - lib/steam_api_client/models/player_achievements.rb
62
+ - lib/steam_api_client/models/player_game_stats.rb
63
+ - lib/steam_api_client/models/player_summary.rb
71
64
  - lib/steam_api_client/request.rb
72
- - lib/steam_api_client/requestors/app_details.rb
73
- - lib/steam_api_client/requestors/app_global_achievements.rb
74
- - lib/steam_api_client/requestors/app_news.rb
75
- - lib/steam_api_client/requestors/base.rb
76
- - lib/steam_api_client/requestors/game_current_players.rb
77
- - lib/steam_api_client/requestors/player_achievements.rb
78
- - lib/steam_api_client/requestors/player_friends.rb
79
- - lib/steam_api_client/requestors/player_game_stats.rb
80
- - lib/steam_api_client/requestors/player_level.rb
81
- - lib/steam_api_client/requestors/player_owned_games.rb
82
- - lib/steam_api_client/requestors/player_recent_games.rb
83
- - lib/steam_api_client/requestors/player_steamid.rb
84
- - lib/steam_api_client/requestors/player_summaries.rb
65
+ - lib/steam_api_client/requestor.rb
85
66
  - lib/steam_api_client/response.rb
86
- - lib/steam_api_client/structs/app_details/achievement.rb
87
- - lib/steam_api_client/structs/app_details/category.rb
88
- - lib/steam_api_client/structs/app_details/details.rb
89
- - lib/steam_api_client/structs/app_details/genre.rb
90
- - lib/steam_api_client/structs/app_details/movie.rb
91
- - lib/steam_api_client/structs/app_details/package_group.rb
92
- - lib/steam_api_client/structs/app_details/requirements.rb
93
- - lib/steam_api_client/structs/app_details/screenshot.rb
94
- - lib/steam_api_client/structs/app_details/sub.rb
95
- - lib/steam_api_client/structs/app_global_achievements.rb
96
- - lib/steam_api_client/structs/app_new.rb
97
- - lib/steam_api_client/structs/app_news.rb
98
- - lib/steam_api_client/structs/base.rb
99
- - lib/steam_api_client/structs/game_current_players.rb
100
- - lib/steam_api_client/structs/player_achievements.rb
101
- - lib/steam_api_client/structs/player_friends.rb
102
- - lib/steam_api_client/structs/player_game_stats.rb
103
- - lib/steam_api_client/structs/player_level.rb
104
- - lib/steam_api_client/structs/player_owned_games.rb
105
- - lib/steam_api_client/structs/player_recent_games.rb
106
- - lib/steam_api_client/structs/player_steamid.rb
107
- - lib/steam_api_client/structs/player_summaries.rb
108
- - lib/steam_api_client/structs/player_summary.rb
109
- - lib/steam_api_client/structs/requests/abstract.rb
110
- - lib/steam_api_client/structs/requests/get_app_details.rb
111
- - lib/steam_api_client/structs/requests/get_app_global_achievements.rb
112
- - lib/steam_api_client/structs/requests/get_app_news.rb
113
- - lib/steam_api_client/structs/requests/get_game_current_players.rb
114
- - lib/steam_api_client/structs/requests/get_player_achievements.rb
115
- - lib/steam_api_client/structs/requests/get_player_friends.rb
116
- - lib/steam_api_client/structs/requests/get_player_game_stats.rb
117
- - lib/steam_api_client/structs/requests/get_player_level.rb
118
- - lib/steam_api_client/structs/requests/get_player_owned_games.rb
119
- - lib/steam_api_client/structs/requests/get_player_recent_games.rb
120
- - lib/steam_api_client/structs/requests/get_player_steamid.rb
121
- - lib/steam_api_client/structs/requests/get_player_summaries.rb
122
- - lib/steam_api_client/structs/requests/storefront_abstract.rb
123
- - lib/steam_api_client/structs/types.rb
124
67
  - lib/steam_api_client/version.rb
125
- homepage: https://github.com/sosolidkk/steam_api
68
+ homepage: https://github.com/jpechaves/steam_api
126
69
  licenses:
127
70
  - MIT
128
71
  metadata:
129
- homepage_uri: https://github.com/sosolidkk/steam_api
72
+ homepage_uri: https://github.com/jpechaves/steam_api
73
+ source_code_uri: https://github.com/jpechaves/steam_api
74
+ changelog_uri: https://github.com/jpechaves/steam_api/blob/main/CHANGELOG.md
75
+ bug_tracker_uri: https://github.com/jpechaves/steam_api/issues
76
+ documentation_uri: https://rubydoc.info/gems/steam_api_client
130
77
  rubygems_mfa_required: 'true'
131
78
  post_install_message:
132
79
  rdoc_options: []
@@ -136,7 +83,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
136
83
  requirements:
137
84
  - - ">="
138
85
  - !ruby/object:Gem::Version
139
- version: '3.0'
86
+ version: '3.3'
140
87
  required_rubygems_version: !ruby/object:Gem::Requirement
141
88
  requirements:
142
89
  - - ">="
@@ -1,5 +0,0 @@
1
- module SteamApiClient
2
- module Errors
3
- class EndpointKindNotSupported < ::StandardError; end
4
- end
5
- end
@@ -1,27 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class that expose the necessary method(s) to get the details of an
4
- # app in the Steam Storefront Api.
5
- class AppDetails < Base
6
- # Get on the Api the details of an app.
7
- # @param [Integer] appid The Steam app id
8
- # @param [Array<Integer>] filters The Steam to filter field values
9
- # @param [String] country_code Country code for method to return appropriate currency values.
10
- # Defaults to 'US'.
11
- # @param [String] locale Localized ISO 639-1 string.
12
- # Defaults to 'en'.
13
- # @return [SteamApiClient::Structs::AppDetails::Details] instance with the app details.
14
- # When the app is unavailable, `response.success` is false and `response.data` is nil.
15
- def retrieve(appid:, filters: [], country_code: "US", locale: "en")
16
- build_request_and_run(
17
- SteamApiClient::Structs::Requests::GetAppDetails,
18
- SteamApiClient::Structs::AppDetails::Details,
19
- appid: appid,
20
- filters: filters,
21
- cc: country_code,
22
- l: locale
23
- )
24
- end
25
- end
26
- end
27
- end
@@ -1,19 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class that expose the necessary method(s) to get the global achievements
4
- # of an app in the Steam Web Api.
5
- class AppGlobalAchievements < Base
6
- # Get on the Api all global achievements info of an App in the Steam.
7
- # @param [Integer] gameid The Steam app id
8
- # @return [SteamApiClient::Structs::AppGlobalAchievements] instance with the
9
- # player summary details.
10
- def retrieve(gameid)
11
- build_request_and_run(
12
- SteamApiClient::Structs::Requests::GetAppGlobalAchievements,
13
- SteamApiClient::Structs::AppGlobalAchievements,
14
- gameid: gameid
15
- )
16
- end
17
- end
18
- end
19
- end
@@ -1,23 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class that expose the necessary method(s) to get the news of an
4
- # app in the Steam Web Api.
5
- class AppNews < Base
6
- # Get on the Api one or more news of an App in the Steam.
7
- # @param [Integer] appid The Steam app id
8
- # @param [Integer] count The number of wanted news
9
- # @param [Integer] maxlength The max length of the news content
10
- # @return [SteamApiClient::Structs::AppNews] instance with the
11
- # player summary details.
12
- def retrieve(appid, count, maxlength = 300)
13
- build_request_and_run(
14
- SteamApiClient::Structs::Requests::GetAppNews,
15
- SteamApiClient::Structs::AppNews,
16
- appid: appid,
17
- count: count,
18
- maxlength: maxlength
19
- )
20
- end
21
- end
22
- end
23
- end
@@ -1,32 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class responsible to expose the methods necessary to perform a request
4
- # on the Steam Web Api.
5
- # @abstract class for the Requestors
6
- class Base
7
- # Initialize the class
8
- # @param [SteamApiClient::Client] the client object.
9
- def initialize(client)
10
- @client = client
11
- end
12
-
13
- protected
14
-
15
- # Build an Request and executes it
16
- def build_request_and_run(request_struct_class, response_struct_class, **params)
17
- request_struct = request_struct_class.build_from_params(params)
18
-
19
- response = build_request(request_struct, response_struct_class).run
20
- response.result
21
- end
22
-
23
- attr_accessor :client
24
-
25
- private
26
-
27
- def build_request(request_struct, response_struct_class)
28
- Request.new(request_struct: request_struct, response_struct: response_struct_class, client: client)
29
- end
30
- end
31
- end
32
- end
@@ -1,19 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class that expose the necessary method(s) to get number of current players
4
- # for a game in the Steam Web Api.
5
- class GameCurrentPlayers < Base
6
- # Get the number of current players for a game.
7
- # @param [Integer] appid The Steam app id
8
- # @return [SteamApiClient::Structs::GameCurrentPlayers] instance with the
9
- # game current players count.
10
- def retrieve(appid)
11
- build_request_and_run(
12
- SteamApiClient::Structs::Requests::GetGameCurrentPlayers,
13
- SteamApiClient::Structs::GameCurrentPlayers,
14
- appid: appid
15
- )
16
- end
17
- end
18
- end
19
- end
@@ -1,21 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class that exposes the necessary method(s) to get the achievements of a
4
- # player for a given app.
5
- class PlayerAchievements < Base
6
- # Returns a list of achievements for a user by app id.
7
- # @param [Integer] appid The Steam app id
8
- # @param [Integer] steamid The Steam user id
9
- # @return [SteamApiClient::Structs::PlayerAchievements] instance with the
10
- # player summary details.
11
- def retrieve(appid, steamid)
12
- build_request_and_run(
13
- SteamApiClient::Structs::Requests::GetPlayerAchievements,
14
- SteamApiClient::Structs::PlayerAchievements,
15
- appid: appid,
16
- steamid: steamid
17
- )
18
- end
19
- end
20
- end
21
- end
@@ -1,21 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class that expose the necessary method(s) to get an User
4
- # friend list in the Steam Web Api.
5
- class PlayerFriends < Base
6
- # Get an User complete friend list, if public.
7
- # @param [Integer] steamid The Steam user id
8
- # @param [String] relationship Relationship filter. Possibles values: 'all', 'friend'.
9
- # @return [SteamApiClient::Structs::PlayerFriends] instance with the
10
- # player friends list.
11
- def retrieve(steamid, relationship = "all")
12
- build_request_and_run(
13
- SteamApiClient::Structs::Requests::GetPlayerFriends,
14
- SteamApiClient::Structs::PlayerFriends,
15
- steamid: steamid,
16
- relationship: relationship
17
- )
18
- end
19
- end
20
- end
21
- end
@@ -1,21 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class that exposes the necessary method(s) to get the stats of a
4
- # player for a given game/appid.
5
- class PlayerGameStats < Base
6
- # Returns a list of stats for a user for a given game/appid.
7
- # @param [Integer] appid The Steam app id
8
- # @param [Integer] steamid The Steam user id
9
- # @return [SteamApiClient::Structs::PlayerGameStats] instance with the
10
- # player summary details.
11
- def retrieve(appid, steamid)
12
- build_request_and_run(
13
- SteamApiClient::Structs::Requests::GetPlayerGameStats,
14
- SteamApiClient::Structs::PlayerGameStats,
15
- appid: appid,
16
- steamid: steamid
17
- )
18
- end
19
- end
20
- end
21
- end
@@ -1,18 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class that exposes the necessary method(s) to get level of an user.
4
- class PlayerLevel < Base
5
- # Returns the user current level on Steam.
6
- # @param [Integer] steamid The Steam user id
7
- # @return [SteamApiClient::Structs::PlayerLevel] instance with the
8
- # player level.
9
- def retrieve(steamid)
10
- build_request_and_run(
11
- SteamApiClient::Structs::Requests::GetPlayerLevel,
12
- SteamApiClient::Structs::PlayerLevel,
13
- steamid: steamid
14
- )
15
- end
16
- end
17
- end
18
- end
@@ -1,23 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class that exposes the necessary method(s) to get a list of
4
- # the player owned games, if public.
5
- class PlayerOwnedGames < Base
6
- # Returns a list of all games owned by the user.
7
- # @param [Integer] steamid The Steam user id
8
- # @param [Boolean] include_appinfo Flag to include all game related information
9
- # @param [Boolean] include_played_free_games Flag to include free games
10
- # @return [SteamApiClient::Structs::PlayerOwnedGames] instance with the
11
- # player owned games details.
12
- def retrieve(steamid, include_appinfo: false, include_played_free_games: false)
13
- build_request_and_run(
14
- SteamApiClient::Structs::Requests::GetPlayerOwnedGames,
15
- SteamApiClient::Structs::PlayerOwnedGames,
16
- steamid: steamid,
17
- include_appinfo: include_appinfo,
18
- include_played_free_games: include_played_free_games
19
- )
20
- end
21
- end
22
- end
23
- end
@@ -1,21 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class that exposes the necessary method(s) to get a list of
4
- # recently played games for a user.
5
- class PlayerRecentGames < Base
6
- # Returns a list of recently played games for a user.
7
- # @param [Integer] steamid - The Steam user id
8
- # @param [Integer] count - The number of games that should return
9
- # @return [SteamApiClient::Structs::PlayerRecentGames] instance with the
10
- # player summary details.
11
- def retrieve(steamid, count = 5)
12
- build_request_and_run(
13
- SteamApiClient::Structs::Requests::GetPlayerRecentGames,
14
- SteamApiClient::Structs::PlayerRecentGames,
15
- steamid: steamid,
16
- count: count
17
- )
18
- end
19
- end
20
- end
21
- end
@@ -1,19 +0,0 @@
1
- module SteamApiClient
2
- module Requestors
3
- # Class that exposes the necessary method(s) to get The 64 bit Steam ID
4
- # the vanity URL resolves to.
5
- class PlayerSteamId < Base
6
- # Returns the 64 bit Steam ID the vanity URL resolves to.
7
- # @param [String] vanityurl - The Steam user short url
8
- # @return [SteamApiClient::Structs::PlayerSteamId] instance with the
9
- # player SteamId.
10
- def retrieve(vanityurl)
11
- build_request_and_run(
12
- SteamApiClient::Structs::Requests::GetPlayerSteamId,
13
- SteamApiClient::Structs::PlayerSteamId,
14
- vanityurl: vanityurl
15
- )
16
- end
17
- end
18
- end
19
- end