playstationnetwork-api 1.0.2 → 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
  SHA1:
3
- metadata.gz: 76fa898f39d77d8b85920db372efd5157d2cf590
4
- data.tar.gz: 5ce19e4071db0d20a02ab7a9fda1b22fd5085f09
3
+ metadata.gz: 3e44ca9df594def37247156fd28288a63c5ae9fd
4
+ data.tar.gz: f266eb96a23753dfcd1b3f08e930159c4a6121bc
5
5
  SHA512:
6
- metadata.gz: 63720efb6eaa630bba77fd731004ceb028a747666a25a1ca11fd1e0df40c98ff8fde58a9252960acf556de1c4cb5e7d793b13447ddabcc748dae305223550c34
7
- data.tar.gz: 34735743f07ca2b51d84cb3dac38e26d1a2377634340566dddd31ddb2134da3381e24f8bd8fc4a7d045951c6c662ab95802ebebde9381df2d212adad2bcf56f0
6
+ metadata.gz: c3dfb69b339de351972fa8c44b9b4f62170a6e3dd86ec55988f281d9366ebb6980b4a12ab344d92853cb249bb05bd998a996f624b04f09dc8230b1d29e48860a
7
+ data.tar.gz: 7cc86eab3cf0c3ffdae34050ef1ad500dca2cb0f66c4e9618b7c76588b0fcb99fefe5de816b0652845a8d22c10728a0a7cc6424b366e64e16ced8fbd6cc3a6e1
data/Gemfile CHANGED
@@ -1,7 +1,2 @@
1
1
  source 'https://rubygems.org'
2
-
3
- gem 'httparty'
4
- gem 'json'
5
- gem 'activesupport'
6
-
7
2
  gemspec
data/README.md CHANGED
@@ -1,15 +1,13 @@
1
- # Playstationnetwork::Api
1
+ # PlayStationNetwork::API
2
2
 
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/playstationnetwork/api`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ Retrieve User, Trophies and Game data from PlayStationNetwork.
6
4
 
7
5
  ## Installation
8
6
 
9
7
  Add this line to your application's Gemfile:
10
8
 
11
9
  ```ruby
12
- gem 'playstationnetwork-api'
10
+ gem 'playstationnetwork-api', '~> 2.0'
13
11
  ```
14
12
 
15
13
  And then execute:
@@ -22,17 +20,54 @@ Or install it yourself as:
22
20
 
23
21
  ## Usage
24
22
 
25
- TODO: Write usage instructions here
23
+ #### Get a User
24
+ `PlayStationNetwork::User.new('pacMakaveli90').profile`
25
+
26
+ #### Get all Games for a User
27
+ `PlayStationNetwork::User.new('pacMakaveli90').games`
28
+
29
+
30
+ #### Get all Trophies for a Game
31
+ `PlayStationNetwork::User.new('pacMakaveli90').trophies('NPWR00132_00')`
32
+
33
+
34
+ #### Get a Game
35
+ `PlayStationNetwork::Game.new('NPWR00132_00').details`
36
+
37
+
38
+ #### Get all Trophies for a Game
39
+ `PlayStationNetwork::Game.new('NPWR00132_00').trophies`
40
+
41
+
42
+ #### Get all Games
43
+ `PlayStationNetwork::Game.new().all(platform: 'ps4') # you don't have to pass an argument. By default, it will get all games.`
44
+
45
+ #### Get Popular Games
46
+ `PlayStationNetwork::Game.new().all(popular: true)`
47
+
48
+ ## Configuration
49
+
50
+ In your app, create a new initializer `playstationnetwork.rb` and add the following:
51
+
52
+ ```
53
+ PlayStationNetwork::API.configure do |config|
54
+ config.key = '<API_KEY>',
55
+ config.secret = '<API_SECRET>'
56
+ config.url = '<API_URL>'
57
+ })
58
+ ```
59
+
60
+ Get Endpoint, your Key and Secret from: http://www.psnleaderboard.com/
26
61
 
27
62
  ## Development
28
63
 
29
64
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
65
 
31
- 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`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
66
+ 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 add any changes to the `changelog`.
32
67
 
33
68
  ## Contributing
34
69
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/playstationnetwork-api. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
70
+ Bug reports and pull requests are welcome on GitHub at https://github.com/games-directory/api-playstationnetwork/. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
71
 
37
72
 
38
73
  ## License
@@ -2,8 +2,7 @@ require 'playstationnetwork/version'
2
2
  require 'httparty'
3
3
 
4
4
  module PlayStationNetwork
5
-
6
- Dir[File.dirname(__FILE__) + '/playstationnetwork/**/*.rb'].each do |file|
5
+ Dir[File.dirname(__FILE__) + '/playstationnetwork/*.rb'].each do |file|
7
6
  require file
8
7
  end
9
8
  end
@@ -1,15 +1,78 @@
1
1
  module PlayStationNetwork
2
+ class Configuration
3
+ attr_writer :key, :secret, :url
4
+
5
+ def key
6
+ @key
7
+ end
8
+
9
+ def secret
10
+ @secret
11
+ end
12
+
13
+ def url
14
+ @url
15
+ end
16
+ end
17
+
18
+ def self.configure(&block)
19
+ block.call(configuration)
20
+ end
21
+
22
+ def self.configuration
23
+ @configuration ||= Configuration.new
24
+ end
25
+
2
26
  module API
3
27
  include HTTParty
28
+ base_uri ""
29
+
30
+ extend self
31
+
32
+ MISSING_CONFIGURATION ||= "You must configure the PlayStationNetwork module before using this Gem. See the README.md for how to configure it"
33
+ MISSING_URL ||= "You must pass the 'url' to the PlayStationNetwork module before using this Gem. See the README.md for how to configure it"
34
+ MISSING_KEY ||= "You must pass your 'key' to the PlayStationNetwork module before using this Gem. See the README.md for how to configure it"
35
+ MISSING_SECRET ||= "You must pass your 'secret' to the PlayStationNetwork module before using this Gem. See the README.md for how to configure it"
36
+
37
+ def request
38
+ handle_response do
39
+ raise MISSING_CONFIGURATION if PlayStationNetwork.configuration.nil?
40
+ raise MISSING_KEY if PlayStationNetwork.configuration.key.nil?
41
+ raise MISSING_SECRET if PlayStationNetwork.configuration.secret.nil?
42
+ raise MISSING_URL if PlayStationNetwork.configuration.url.nil?
4
43
 
5
- base_uri 'https://www.happynation.co.uk/api'
44
+ self.base_uri PlayStationNetwork.configuration.url
6
45
 
7
- def self.config
46
+ return {
47
+ api_key: PlayStationNetwork.configuration.key,
48
+ api_secret: PlayStationNetwork.configuration.secret,
49
+ response_type: 'json'
50
+ }
51
+ end
52
+ end
53
+
54
+ def handle_response(&block)
55
+ yield
56
+ rescue => e
8
57
  {
9
- api_key: '4047cc6b66393a82a0c7d90844cf0d88b14e0c3a',
10
- api_secret: 'pacMakaveli90',
11
- response_type: 'json'
58
+ success: false,
59
+ code: 500,
60
+ message: e
12
61
  }
13
62
  end
63
+
64
+ def parse_response(url, body)
65
+ request = post(url, body)
66
+
67
+ if request.success?
68
+ begin
69
+ JSON.parse(request)
70
+ rescue
71
+ raise "There was a problem parsing the JSON. Most likely an API problem."
72
+ end
73
+ else
74
+ raise request.response
75
+ end
76
+ end
14
77
  end
15
78
  end
@@ -0,0 +1,74 @@
1
+ module PlayStationNetwork
2
+ class Game
3
+ attr_accessor :options
4
+
5
+ GAMES_PARAMETERS_TYPES ||= ['all', 'ps4', 'ps3', 'psvita']
6
+
7
+ INVALID_NPCOMMID_TYPE ||="'npcommid' parameter needs to be a String"
8
+ INVALID_PLATFORM_TYPE ||= "'platform' parameter needs to be a String and be one of #{ GAMES_PARAMETERS_TYPES.join(', ') }"
9
+ INVALID_PLATFORM_PARAM ||= "'platform' needs to be one of #{ GAMES_PARAMETERS_TYPES.join(', ') }"
10
+ INVALID_POPULAR_TYPE ||= "'popular' parameter needs to be a Boolean"
11
+
12
+ def initialize(npcommid = "")
13
+ PlayStationNetwork::API.handle_response do
14
+ raise INVALID_NPCOMMID_TYPE unless npcommid.is_a?(String)
15
+
16
+ @options = PlayStationNetwork::API.request
17
+
18
+ unless npcommid.blank?
19
+ @options = @options.merge(npcommid: npcommid)
20
+ end
21
+ end
22
+ end
23
+
24
+ def details
25
+ PlayStationNetwork::API.handle_response do
26
+ PlayStationNetwork::API.parse_response('/psnGetGame', body: options)
27
+ end
28
+ end
29
+
30
+ def trophies
31
+ PlayStationNetwork::API.handle_response do
32
+ PlayStationNetwork::API.parse_response('/psnGetTrophies', body: options)
33
+ end
34
+ end
35
+
36
+ def all(platform: 'all', popular: false)
37
+ PlayStationNetwork::API.handle_response do
38
+ raise INVALID_PLATFORM_TYPE unless platform.is_a?(String)
39
+ raise INVALID_PLATFORM_PARAM unless GAMES_PARAMETERS_TYPES.include?(platform)
40
+ raise INVALID_POPULAR_TYPE unless popular.is_a?(FalseClass) || popular.is_a?(TrueClass)
41
+
42
+ if popular
43
+ url = '/psnPopularThisWeek'
44
+ else
45
+ @options = options.merge(platform: platform)
46
+ url = '/psnListGames'
47
+ end
48
+
49
+ request = PlayStationNetwork::API.post(url, body: options)
50
+
51
+ if request.success?
52
+ begin
53
+ parse_xml(request)['psn_api']
54
+ rescue
55
+ raise "There was a problem parsing the XML response"
56
+ end
57
+ else
58
+ raise request.response
59
+ end
60
+ end
61
+ end
62
+
63
+ private
64
+
65
+ def parse_xml(response)
66
+ xml_parsed = response
67
+ .gsub('<?xml version=\"1.0\"?>', '')
68
+ .gsub('<\/', '</')
69
+ .tr('"', '')
70
+
71
+ return Hash.from_xml(xml_parsed)
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,37 @@
1
+ module PlayStationNetwork
2
+ class User
3
+ attr_accessor :options
4
+
5
+ INVALID_IDENTITY_TYPE ||="'identity' parameter needs to be a String"
6
+ INVALID_NPCOMMID_TYPE ||= "'npcommid' parameter needs to be a String"
7
+
8
+ def initialize(identity)
9
+ PlayStationNetwork::API.handle_response do
10
+ raise ArgumentError, INVALID_IDENTITY_TYPE unless identity.is_a?(String)
11
+
12
+ @options = PlayStationNetwork::API.request.merge(user_id: identity)
13
+ end
14
+ end
15
+
16
+ def profile
17
+ PlayStationNetwork::API.handle_response do
18
+ PlayStationNetwork::API.parse_response('/psnGetUser', body: options)
19
+ end
20
+ end
21
+
22
+ def games
23
+ PlayStationNetwork::API.handle_response do
24
+ PlayStationNetwork::API.parse_response('/psnGetUserGames', body: options)
25
+ end
26
+ end
27
+
28
+ def trophies(npcommid)
29
+ PlayStationNetwork::API.handle_response do
30
+ raise INVALID_NPCOMMID_TYPE unless npcommid.is_a?(String)
31
+
32
+ @options = options.merge(npcommid: npcommid)
33
+ PlayStationNetwork::API.parse_response('/psnGetUserTrophies', body: options)
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,21 +1,43 @@
1
1
  module PlayStationNetwork
2
- VERSION = '1.0.2'
2
+ VERSION ||= '2.0'
3
3
 
4
- # Changelog
5
- #
4
+ def self.changelog
5
+ puts "
6
+ v0.0
6
7
 
7
- #
8
- # v0.0.1 - Initial
9
- # v0.0.2 - Added Trophy Information
10
- # v0.0.3 - Added Trophies offset
11
- # v0.1.0 - Pluralized Renamed Trophy and TrophyGroup classes
12
- # v0.1.1 - Added a convenient method 'all' on Trophies, without having to pass
13
- # the group id as an argument
8
+ v0.0.1 - Initial
9
+ v0.0.2 - Added Trophy Information
10
+ v0.0.3 - Added Trophies offset
11
+ v0.1.0 - Pluralized Renamed Trophy and TrophyGroup classes
12
+ v0.1.1 - Added a convenient method 'all' on Trophies, without having to pass the group id as an argument
13
+
14
+ v1.0 - This version is not backwards compatible! Read below for new API endpoints
15
+
16
+ v1.0.0 - Introduces a new API source and a new format
17
+ v1.0.1 - Fixes a bug where ActiveSupport version would cause an issue with existing rails apps
18
+ v1.0.2 - Adds correct hash format to pass the api key and secret to each route
19
+
20
+ v2.0 - This version is not backwards compatible! Read below for new API endpoints
21
+
22
+ v2.0.0
23
+ - Simplified API calls. Instead of separating each endpoint into its own file, use one file per class
24
+ - Remove all dependencies except HTTParty and use native Ruby where dependency was required
25
+ - No more parsing the data inside the gem, instead return the RAW data and let the application decide how to parse it
14
26
 
15
- #
16
- # v1.0.0 - Introduces a new API, new endpoints and new format for requesting data
17
- # it's basically a new gem
18
- # v1.0.1 - Fixes a bug where activesupport version would cause an issue with existing
19
- # rails apps
20
- # v1.0.2 - Adds correct hash format to pass the api key and secret to each route
27
+ ## Old method -> New method ( PlayStationNetwork:: removed for breviety )
28
+ #
29
+ # User
30
+ #
31
+ Profile: ::U::User.profile('pacMakaveli90') -> ::User.new('pacMakaveli90').profile
32
+ Games: ::U::Games.all('pacMakaveli90') -> ::User.new('pacMakaveli90').games
33
+ Trophies: ::U::Trophies.all('pacMakaveli90', 'NPWR00132_00') -> ::User.new('pacMakaveli90').trophies('NPWR00132_00')
34
+
35
+ # Games
36
+ #
37
+ Game: ::G::Game.find('NPWR00132_00') -> ::Game.new('NPWR00132_00').details
38
+ Trophies: ::G::Trophies.all('NPWR00132_00') -> ::Game.new('NPWR00132_00').trophies
39
+ All: ::G::Games.all('all') -> ::Game.new().all(platform: 'ps4') # default 'all'
40
+ Popular: ::G::Games.popular() -> ::Game.new().all(popular: true)
41
+ "
42
+ end
21
43
  end
@@ -2,25 +2,23 @@
2
2
  require './lib/playstationnetwork/version'
3
3
 
4
4
  Gem::Specification.new do |spec|
5
- spec.name = "playstationnetwork-api"
5
+ spec.name = 'playstationnetwork-api'
6
6
  spec.version = PlayStationNetwork::VERSION
7
- spec.authors = ["Vlad Radulescu"]
8
- spec.email = ["pacMakaveli90@gmail.co.uk"]
7
+ spec.authors = ['Vlad Radulescu']
8
+ spec.email = ['vlad@games.directory']
9
9
 
10
- spec.summary = %q{A Ruby wrapper for Studio51's PlayStation Network API}
11
- spec.description = %q{A Ruby wrapper for Studio51's PlayStation Network API for grabbing User profiles, Games and Trophies}
10
+ spec.summary = %q{ A Ruby wrapper for PSN Leaderboard API }
11
+ spec.description = %q{ A Ruby wrapper around PSN Leaderboard's API for grabbing Users, Games and Trophies }
12
12
  spec.homepage = ''
13
- spec.license = "MIT"
13
+ spec.license = 'MIT'
14
14
 
15
15
  spec.files = `git ls-files`.split("\n")
16
16
  spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
17
  spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_dependency 'httparty'
21
- spec.add_dependency 'json'
22
- spec.add_dependency 'activesupport'
23
- spec.add_development_dependency "bundler", "~> 1.11"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec", "~> 3.0"
20
+ spec.add_dependency 'httparty', '~> 0.15.6'
21
+ spec.add_development_dependency 'bundler', '~> 1.15.3'
22
+ spec.add_development_dependency 'rake', '~> 12.0.0'
23
+ spec.add_development_dependency 'rspec', '~> 3.6.0'
26
24
  end
metadata CHANGED
@@ -1,103 +1,75 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playstationnetwork-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: '2.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vlad Radulescu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-14 00:00:00.000000000 Z
11
+ date: 2017-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: json
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: activesupport
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
17
+ - - "~>"
46
18
  - !ruby/object:Gem::Version
47
- version: '0'
19
+ version: 0.15.6
48
20
  type: :runtime
49
21
  prerelease: false
50
22
  version_requirements: !ruby/object:Gem::Requirement
51
23
  requirements:
52
- - - ">="
24
+ - - "~>"
53
25
  - !ruby/object:Gem::Version
54
- version: '0'
26
+ version: 0.15.6
55
27
  - !ruby/object:Gem::Dependency
56
28
  name: bundler
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
31
  - - "~>"
60
32
  - !ruby/object:Gem::Version
61
- version: '1.11'
33
+ version: 1.15.3
62
34
  type: :development
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
38
  - - "~>"
67
39
  - !ruby/object:Gem::Version
68
- version: '1.11'
40
+ version: 1.15.3
69
41
  - !ruby/object:Gem::Dependency
70
42
  name: rake
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
45
  - - "~>"
74
46
  - !ruby/object:Gem::Version
75
- version: '10.0'
47
+ version: 12.0.0
76
48
  type: :development
77
49
  prerelease: false
78
50
  version_requirements: !ruby/object:Gem::Requirement
79
51
  requirements:
80
52
  - - "~>"
81
53
  - !ruby/object:Gem::Version
82
- version: '10.0'
54
+ version: 12.0.0
83
55
  - !ruby/object:Gem::Dependency
84
56
  name: rspec
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - "~>"
88
60
  - !ruby/object:Gem::Version
89
- version: '3.0'
61
+ version: 3.6.0
90
62
  type: :development
91
63
  prerelease: false
92
64
  version_requirements: !ruby/object:Gem::Requirement
93
65
  requirements:
94
66
  - - "~>"
95
67
  - !ruby/object:Gem::Version
96
- version: '3.0'
97
- description: A Ruby wrapper for Studio51's PlayStation Network API for grabbing User
98
- profiles, Games and Trophies
68
+ version: 3.6.0
69
+ description: " A Ruby wrapper around PSN Leaderboard's API for grabbing Users, Games
70
+ and Trophies "
99
71
  email:
100
- - pacMakaveli90@gmail.co.uk
72
+ - vlad@games.directory
101
73
  executables:
102
74
  - console
103
75
  - setup
@@ -113,12 +85,8 @@ files:
113
85
  - bin/setup
114
86
  - lib/playstationnetwork-api.rb
115
87
  - lib/playstationnetwork/api.rb
116
- - lib/playstationnetwork/g/game.rb
117
- - lib/playstationnetwork/g/games.rb
118
- - lib/playstationnetwork/g/trophies.rb
119
- - lib/playstationnetwork/u/games.rb
120
- - lib/playstationnetwork/u/trophies.rb
121
- - lib/playstationnetwork/u/user.rb
88
+ - lib/playstationnetwork/game.rb
89
+ - lib/playstationnetwork/user.rb
122
90
  - lib/playstationnetwork/version.rb
123
91
  - playstationnetwork-api.gemspec
124
92
  - spec/playstationnetwork/api_spec.rb
@@ -143,10 +111,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
111
  version: '0'
144
112
  requirements: []
145
113
  rubyforge_project:
146
- rubygems_version: 2.5.1
114
+ rubygems_version: 2.6.12
147
115
  signing_key:
148
116
  specification_version: 4
149
- summary: A Ruby wrapper for Studio51's PlayStation Network API
117
+ summary: A Ruby wrapper for PSN Leaderboard API
150
118
  test_files:
151
119
  - spec/playstationnetwork/api_spec.rb
152
120
  - spec/spec_helper.rb
121
+ has_rdoc:
@@ -1,97 +0,0 @@
1
- module PlayStationNetwork
2
- module G
3
-
4
- class Game
5
- attr_accessor :media, :updates, :trophies, :stats,
6
- :psn_id, :psn_hash, :psn_type, :psn_slug, :name, :cover, :platforms,
7
- :updated, :checked,
8
- :total, :platinum, :gold, :silver, :bronze,
9
- :points, :points_platinum, :average_percentage, :owners, :completers, :completers_platinum, :trophies_earned, :played_this_week
10
-
11
- def initialize(
12
- psn_id, psn_hash, psn_type, psn_slug, name, cover, platforms,
13
- updated, checked,
14
- artworks, videos,
15
- total, platinum, gold, silver, bronze,
16
- points, points_platinum, average_percentage, owners, completers, completers_platinum, trophies_earned, played_this_week
17
- )
18
-
19
- game_updates = Hash.new
20
- game_updates[:last_updated] = updated
21
- game_updates[:last_checked] = checked
22
-
23
- game_media = Hash.new
24
- game_media[:artworks] = artworks
25
- game_media[:videos] = videos
26
-
27
- game_trophies = Hash.new
28
- game_trophies[:total] = total
29
- game_trophies[:platinum] = platinum
30
- game_trophies[:gold] = gold
31
- game_trophies[:silver] = silver
32
- game_trophies[:bronze] = bronze
33
-
34
- game_stats = Hash.new
35
- game_stats[:points] = points
36
- game_stats[:points_platinum] = points_platinum
37
- game_stats[:average_percentage] = "#{average_percentage}%"
38
- game_stats[:owners] = owners
39
- game_stats[:completers] = completers
40
- game_stats[:completers_platinum] = completers_platinum
41
- game_stats[:trophies_earned] = trophies_earned
42
- game_stats[:played_this_week] = played_this_week
43
-
44
- self.psn_id = psn_id
45
- self.psn_hash = psn_hash
46
- self.psn_type = psn_type
47
- self.psn_slug = psn_slug
48
- self.name = name
49
- self.cover = cover
50
- self.platforms = platforms.split(',')
51
- self.media = game_media
52
- self.updates = game_updates
53
- self.trophies = game_trophies
54
- self.stats = game_stats
55
- end
56
-
57
- def self.find(psn_game_id)
58
- options = PlayStationNetwork::API.config.merge({ npcommid: psn_game_id })
59
- response = PlayStationNetwork::API.post('/psnGetGame', body: options)
60
-
61
- if response.success?
62
- parsed = JSON.parse(response)
63
-
64
- new(
65
- parsed['npcommid'],
66
- parsed['game_hash'],
67
- parsed['content_Type'],
68
- parsed['unique_url'],
69
- parsed['title'],
70
- parsed['image'],
71
- parsed['pf'],
72
- parsed['updated'].to_i,
73
- parsed['meta_check'].to_i,
74
- parsed['screenshots'],
75
- parsed['videos'],
76
- parsed['total'].to_i,
77
- parsed['platinum'].to_i,
78
- parsed['gold'].to_i,
79
- parsed['silver'].to_i,
80
- parsed['bronze'].to_i,
81
- parsed['total_points'].to_i,
82
- parsed['total_points_plat'].to_i,
83
- parsed['average_perc'].to_f,
84
- parsed['owners'].to_i,
85
- parsed['completers'].to_i,
86
- parsed['platters'].to_i,
87
- parsed['trophies_earned'].to_i,
88
- parsed['played_this_week'].to_i
89
- )
90
- else
91
- raise response.response
92
- end
93
- end
94
- end
95
-
96
- end
97
- end
@@ -1,61 +0,0 @@
1
- require 'json'
2
- require 'active_support/core_ext/hash'
3
- require 'pp'
4
-
5
- module PlayStationNetwork
6
- module G
7
-
8
- class Games
9
- attr_accessor :success, :total_games, :games
10
-
11
- def initialize(success, total_games, games)
12
- self.success = success
13
- self.total_games = total_games
14
- self.games = games
15
- end
16
-
17
- # Available platform options
18
- #
19
- # => all returns all PlayStation Network games
20
- # => psp2 returns all PSP games
21
- # => ps3 returns all PS3 games
22
- # => ps4 returns all PS4 games
23
- #
24
- def self.all(psn_platform = 'all')
25
- options = PlayStationNetwork::API.config.merge({ platform: psn_platform })
26
- response = PlayStationNetwork::API.post('/psnListGames', body: options)
27
-
28
- sanitized_response = response.gsub('<?xml version=\"1.0\"?>', '').gsub('<\/', '</').tr('"', '')
29
- parsed_response = Hash.from_xml(sanitized_response)
30
-
31
- if response.success?
32
- new(
33
- (parsed_response['psn_api']['success'].to_i == 1 ? true : false),
34
- parsed_response['psn_api']['game'].size,
35
- parsed_response['psn_api']['game']
36
- )
37
- else
38
- raise response.response
39
- end
40
- end
41
-
42
- def self.popular
43
- response = PlayStationNetwork::API.post('/psnPopularThisWeek')
44
-
45
- sanitized_response = response.gsub('<?xml version=\"1.0\"?>', '').gsub('<\/', '</').tr('"', '')
46
- parsed_response = Hash.from_xml(sanitized_response)
47
-
48
- if response.success?
49
- new(
50
- (parsed_response['psn_api']['success'].to_i == 1 ? true : false),
51
- parsed_response['psn_api']['game'].size,
52
- parsed_response['psn_api']['game']
53
- )
54
- else
55
- raise response.response
56
- end
57
- end
58
-
59
- end
60
- end
61
- end
@@ -1,34 +0,0 @@
1
- module PlayStationNetwork
2
- module G
3
-
4
- class Trophies
5
- attr_accessor :psn_id, :image_prefix, :trophies, :groups
6
-
7
- def initialize(psn_id, image_prefix, trophies, groups)
8
- self.psn_id = psn_id
9
- self.image_prefix = image_prefix
10
- self.trophies = trophies
11
- self.groups = groups
12
- end
13
-
14
- def self.all(psn_game_id)
15
- options = PlayStationNetwork::API.config.merge({ npcommid: psn_game_id })
16
- response = PlayStationNetwork::API.post('/psnGetTrophies', body: options)
17
-
18
- if response.success?
19
- parsed = JSON.parse(response)
20
-
21
- new(
22
- parsed['npcommid'],
23
- parsed['image_prefix'],
24
- parsed['trophies'],
25
- parsed['groups']
26
- )
27
- else
28
- raise response.response
29
- end
30
- end
31
- end
32
-
33
- end
34
- end
@@ -1,30 +0,0 @@
1
- module PlayStationNetwork
2
- module U
3
-
4
- class Games
5
- attr_accessor :total_games, :games
6
-
7
- def initialize(total_games, games)
8
- self.total_games = total_games
9
- self.games = games
10
- end
11
-
12
- def self.all(psn_user_id)
13
- options = PlayStationNetwork::API.config.merge({ user_id: psn_user_id })
14
- response = PlayStationNetwork::API.post('/psnGetUserGames', body: options)
15
-
16
- if response.success?
17
- parsed = JSON.parse(response)
18
-
19
- new(
20
- parsed['games'].size,
21
- parsed['games']
22
- )
23
- else
24
- raise response.response
25
- end
26
- end
27
- end
28
-
29
- end
30
- end
@@ -1,28 +0,0 @@
1
- module PlayStationNetwork
2
- module U
3
-
4
- class Trophies
5
- attr_accessor :trophies
6
-
7
- def initialize(trophies)
8
- self.trophies = trophies
9
- end
10
-
11
- def self.all(psn_user_id, psn_game_id)
12
- options = PlayStationNetwork::API.config.merge({ user_id: psn_user_id, npcommid: psn_game_id })
13
- response = PlayStationNetwork::API.post('/psnGetUserTrophies', body: options)
14
-
15
- if response.success?
16
- parsed = JSON.parse(response)
17
-
18
- new(
19
- parsed['trophies']
20
- )
21
- else
22
- raise response.response
23
- end
24
- end
25
- end
26
-
27
- end
28
- end
@@ -1,121 +0,0 @@
1
- module PlayStationNetwork
2
- module U
3
-
4
- class User
5
- attr_accessor :profile, :trophies, :points, :level, :stats,
6
- :membership, :avatar, :username, :about, :country, :region,
7
- :total, :platinum, :gold, :silver, :bronze, :total_possible,
8
- :points_base, :points, :points_next,
9
- :level, :projected_level, :progress, :projected_progress,
10
- :total_games, :completed_games, :completion_percentage, :world_rank, :region_rank, :hardcore_rank
11
-
12
- def initialize(
13
- membership, avatar, username, about, country, region,
14
- total, platinum, gold, silver, bronze, total_possible,
15
- points_base, points, points_next,
16
- level, projected_level, progress, projected_progress,
17
- total_games, completed_games, completion_percentage, world_rank, region_rank, hardcore_rank
18
- )
19
-
20
- # Build the Profile Hash
21
- #
22
- psn_profile = Hash.new
23
- psn_profile[:membership] = membership.to_i
24
- psn_profile[:avatar] = avatar
25
- psn_profile[:username] = username
26
- psn_profile[:about] = about
27
- psn_profile[:location] = Hash.new
28
- psn_profile[:location][:country] = country
29
- psn_profile[:location][:region] = region
30
-
31
- # Build the Trophies hash
32
- #
33
- psn_profile_trophies = Hash.new
34
- psn_profile_trophies[:total] = total.to_i
35
- psn_profile_trophies[:platinum] = platinum.to_i
36
- psn_profile_trophies[:gold] = gold.to_i
37
- psn_profile_trophies[:silver] = silver.to_i
38
- psn_profile_trophies[:bronze] = bronze.to_i
39
- psn_profile_trophies[:total_possible] = total_possible.to_i
40
-
41
- # Build the Points hash
42
- #
43
- psn_profile_points = Hash.new
44
- psn_profile_points[:base] = points_base.to_i
45
- psn_profile_points[:actual] = points.to_i
46
- psn_profile_points[:next] = points_next.to_i
47
-
48
- # Build the Level hash
49
- #
50
- psn_profile_level = Hash.new
51
- psn_profile_level[:level] = level.to_i
52
- psn_profile_level[:projected_level] = projected_level.to_i
53
- psn_profile_level[:progress] = progress.to_f
54
- psn_profile_level[:projected_progress] = projected_progress.to_f
55
-
56
- # Build the Points hash
57
- #
58
- psn_profile_stats = Hash.new
59
- psn_profile_stats[:games] = total_games.to_i
60
- psn_profile_stats[:completed_games] = completed_games.to_i
61
- psn_profile_stats[:completion_percentage] = completion_percentage.to_f
62
- psn_profile_stats[:rank] = Hash.new
63
- psn_profile_stats[:rank][:world_rank] = world_rank.to_i
64
- psn_profile_stats[:rank][:region_rank] = region_rank.to_i
65
- psn_profile_stats[:rank][:hardcore_rank] = hardcore_rank.to_i
66
-
67
- self.profile = psn_profile
68
- self.trophies = psn_profile_trophies
69
- self.level = psn_profile_level
70
- self.points = psn_profile_points
71
- self.stats = psn_profile_stats
72
-
73
- end
74
-
75
- def self.profile(psn_user_id)
76
- options = PlayStationNetwork::API.config.merge({ user_id: psn_user_id })
77
- response = PlayStationNetwork::API.post('/psnGetUser', body: options)
78
-
79
- if response.success?
80
- parsed = JSON.parse(response)
81
-
82
- self.new(
83
- parsed['psnplus'],
84
- parsed['avatar'],
85
- parsed['psn_id'],
86
- parsed['about_me'],
87
- parsed['country'],
88
- parsed['region'],
89
-
90
- parsed['total'],
91
- parsed['platinum'],
92
- parsed['gold'],
93
- parsed['silver'],
94
- parsed['bronze'],
95
- parsed['total_possible_trophies'],
96
-
97
- parsed['base'],
98
- parsed['points'],
99
- parsed['next'],
100
-
101
- parsed['level'],
102
- parsed['projected_level'],
103
- parsed['progress'],
104
- parsed['projected_progress'],
105
-
106
- parsed['total_games'],
107
- parsed['games_complete'],
108
- parsed['completion_percentage'],
109
- parsed['worldrank'],
110
- parsed['regionrank'],
111
- parsed['hardcore_rank']
112
-
113
- )
114
- else
115
- raise response.response
116
- end
117
- end
118
- end
119
-
120
- end
121
- end