gogcom 0.0.21 → 0.0.22

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: 885814e4bbb612c9ba92a8962b9c3f38bba373ce
4
- data.tar.gz: d9295d660f7d2cd52b5cfa69ce84a43474e1b01e
3
+ metadata.gz: 564984945b4cc083fdbae86e8c3e7c269e77b4dd
4
+ data.tar.gz: 682e889b6a8120ed92ad097417611d8228acdc33
5
5
  SHA512:
6
- metadata.gz: 8f1308007971aa9c03bdfaee2a6a4d91004004d294f8bfd371630f49e38fdec518e755e910dc45c7791887f7b7beaccdd31c03abcc08ded0c44e2cc800ca933b
7
- data.tar.gz: a5ba7475ed48ea5859d6959a72ee694bfc7cba9d08b69916fa90af3e4f5e5fdb334b9a32e4a172dd876f195a8b429759c3648540b4ada6bc951f5b9161052494
6
+ metadata.gz: 1c171a490c1765bc723023320012996f81147e0852e63e0433cbb26b92de6726484a305aaded8d43ea5fab96520afc0d0132248200f5e13a4cd31c8d16ddddc4
7
+ data.tar.gz: 2f64a3db71ee98eb52ef91ccd04b83873f6f1096942acf9d80cd144848f63bf852a1cc958329f029a113d4eb336d04f5b905f4aced9e0d75460f490d95afda2e
data/README.md CHANGED
@@ -8,7 +8,7 @@ This library is in early stages and not ready for general use.
8
8
  ## Usage
9
9
 
10
10
  ```
11
- gem 'gogcom', '~> 0.0.2'
11
+ gem 'gogcom', '~> 0.0.21'
12
12
  bundle install
13
13
  ```
14
14
 
data/Rakefile CHANGED
@@ -1,7 +1,9 @@
1
1
  require 'rake/testtask'
2
2
 
3
3
  Rake::TestTask.new do |t|
4
- t.libs << 'test'
4
+ t.libs.push %w(test)
5
+ t.test_files = FileList['test/test_*.rb']
6
+ t.verbose = true
5
7
  end
6
8
 
7
9
  desc "Run tests"
@@ -1,7 +1,16 @@
1
+ module Gogcom
2
+ class << self
3
+ def game(name)
4
+ Gogcom::Game.get(name)
5
+ end
6
+ end
7
+ end
8
+
1
9
  require 'open-uri'
2
10
  require 'nokogiri'
3
11
  require 'json'
4
12
 
5
- require 'gogcom/gogcom'
6
- require 'gogcom/game'
13
+ require 'gogcom/func'
7
14
  require 'gogcom/review'
15
+ require 'gogcom/game'
16
+ require 'gogcom/version'
@@ -0,0 +1,8 @@
1
+ module Gogcom
2
+ class Func
3
+ def self.urlfy(name)
4
+ name = name.gsub(/[^0-9A-Za-z\s]/, '').gsub(/\s/, '_').downcase
5
+ name
6
+ end
7
+ end
8
+ end
@@ -1,5 +1,121 @@
1
- class Game
2
- attr_accessor :title, :genres, :download_size, :release_date, :price, :avg_rating,
1
+ module Gogcom
2
+ class Game
3
+ attr_accessor :title, :genres, :download_size, :release_date, :price, :avg_rating,
3
4
  :avg_ratings_count, :platforms, :languages, :developer, :publisher,
4
5
  :game_modes, :reviews
6
+
7
+ def self.get_data(game_name)
8
+ name = Gogcom::Func.urlfy(game_name)
9
+ page = Nokogiri::HTML(open("http://www.gog.com/game/" + name))
10
+ data = JSON.parse(page.css('script')[0].text.gsub(/^\s+|\s+$/, "")
11
+ .gsub("var gogData = ", "")[0..-2])
12
+ data
13
+ end
14
+
15
+ def self.get_title(data)
16
+ data["gameProductData"]["title"]
17
+ end
18
+
19
+ def self.get_genres(data)
20
+ genres = []
21
+ genres_raw = data["gameProductData"]["genres"]
22
+ genres_raw.each do |genre|
23
+ genres.push(genre["name"])
24
+ end
25
+
26
+ genres
27
+ end
28
+
29
+ def self.get_download_size(data)
30
+ data["gameProductData"]["downloadSize"]
31
+ end
32
+
33
+ def self.get_release_date(data)
34
+ data["gameProductData"]["releaseDate"]
35
+ end
36
+
37
+ def self.get_price(data)
38
+ data["gameProductData"]["price"]["symbol"] + data["gameProductData"]["price"]["amount"]
39
+ end
40
+
41
+ def self.get_avg_rating(data)
42
+ data["gameProductData"]["rating"].to_s.insert(1, ".")
43
+ end
44
+
45
+ def self.get_avg_ratings_count(data)
46
+ data["gameProductData"]["votesCount"]
47
+ end
48
+
49
+ def self.get_platforms(data)
50
+ platforms = []
51
+ platforms_raw = data["gameProductData"]["worksOn"]
52
+ platforms_raw.each do |platform|
53
+ if(platform[1])
54
+ platforms.push(platform[0])
55
+ end
56
+ end
57
+
58
+ platforms
59
+ end
60
+
61
+ def self.get_languages(data)
62
+ data["gameProductData"]["languages"]
63
+ end
64
+
65
+ def self.get_developer(data)
66
+ data["gameProductData"]["developer"]["name"]
67
+ end
68
+
69
+ def self.get_publisher(data)
70
+ data["gameProductData"]["publisher"]["name"]
71
+ end
72
+
73
+ def self.get_modes(data)
74
+ game_modes = []
75
+ modes_raw = data["gameProductData"]["modes"]
76
+ modes_raw.each do |mode|
77
+ game_modes.push(mode["title"])
78
+ end
79
+
80
+ game_modes
81
+ end
82
+
83
+ def self.get_reviews(data)
84
+ reviews = []
85
+ reviews_raw = data["reviews"]["pages"][0]
86
+ reviews_raw.each do |review|
87
+ r = Review.new
88
+
89
+ r.title = review["title"]
90
+ r.rating = review["rating"].to_s.insert(1, ".")
91
+ r.author = review["author"]["name"]
92
+ r.body = review["description"]
93
+
94
+ reviews.push(r)
95
+ end
96
+
97
+ reviews
98
+ end
99
+
100
+ def self.get(game_name)
101
+ data = self.get_data(game_name)
102
+ game = Game.new
103
+
104
+ game.title = get_title(data)
105
+ game.genres = get_genres(data)
106
+ game.download_size = get_download_size(data)
107
+ game.release_date = get_release_date(data)
108
+ game.price = get_price(data)
109
+ game.avg_rating = get_avg_rating(data)
110
+ game.avg_ratings_count = get_avg_ratings_count(data)
111
+ game.platforms = get_platforms(data)
112
+ game.languages = get_languages(data)
113
+ game.developer = get_developer(data)
114
+ game.publisher = get_publisher(data)
115
+ game.game_modes = get_modes(data)
116
+ game.reviews = get_reviews(data)
117
+
118
+ game
119
+ end
120
+ end
5
121
  end
@@ -1,3 +1,5 @@
1
- class Review
2
- attr_accessor :title, :rating, :author, :body
1
+ module Gogcom
2
+ class Review
3
+ attr_accessor :title, :rating, :author, :body
4
+ end
3
5
  end
@@ -1,3 +1,3 @@
1
- module GogcomV
2
- VERSION = "0.0.21"
1
+ module Gogcom
2
+ VERSION = "0.0.22"
3
3
  end
@@ -1,2 +1,9 @@
1
+ require 'simplecov'
1
2
  require 'coveralls'
2
- Coveralls.wear!
3
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
4
+ SimpleCov.start do
5
+ add_filter '/test/'
6
+ end
7
+
8
+ require 'minitest/autorun'
9
+ require 'gogcom'
@@ -0,0 +1,7 @@
1
+ require 'helper'
2
+
3
+ class GogcomTest < Minitest::Test
4
+ def test_urlfy
5
+ assert_equal "faster_than_light", Gogcom::Func.urlfy("Faster Than Light")
6
+ end
7
+ end
@@ -0,0 +1,68 @@
1
+ require 'helper'
2
+
3
+ class GogcomTest < Minitest::Test
4
+ def setup
5
+ @data = Gogcom::Game.get_data("Faster Than Light")
6
+ end
7
+
8
+ def test_get_data
9
+ assert @data.is_a?(Hash)
10
+ end
11
+
12
+ def test_get_title
13
+ assert_equal Gogcom::Game.get_title(@data), "FTL: Advanced Edition"
14
+ end
15
+
16
+ def test_get_genres
17
+ assert_equal Gogcom::Game.get_genres(@data), ["Strategy", "Simulation", "Sci-fi"]
18
+ end
19
+
20
+ def test_download_size
21
+ assert_equal Gogcom::Game.get_download_size(@data), "205 MB"
22
+ end
23
+
24
+ def test_release_date
25
+ assert_equal Gogcom::Game.get_release_date(@data), 1347595200
26
+ end
27
+
28
+ def test_price
29
+ assert_match /^\$\d+(\.\d{2})?$/, Gogcom::Game.get_price(@data)
30
+ end
31
+
32
+ def test_avg_ratings
33
+ assert_match /\d.\d/, Gogcom::Game.get_avg_rating(@data).to_s
34
+ end
35
+
36
+ def test_avg_ratings_count
37
+ assert_kind_of Integer, Gogcom::Game.get_avg_ratings_count(@data)
38
+ end
39
+
40
+ def test_platforms
41
+ assert_equal Gogcom::Game.get_platforms(@data), ["Windows", "Mac"]
42
+ end
43
+
44
+ def test_languages
45
+ assert_equal Gogcom::Game.get_languages(@data), ["English"]
46
+ end
47
+
48
+ def test_developer
49
+ assert_equal Gogcom::Game.get_developer(@data), "Subset Games"
50
+ end
51
+
52
+ def test_publisher
53
+ assert_equal Gogcom::Game.get_publisher(@data), "Subset Games"
54
+ end
55
+
56
+ def test_modes
57
+ assert_equal Gogcom::Game.get_modes(@data), ["Single-player"]
58
+ end
59
+
60
+ def test_reviews
61
+ assert Gogcom::Game.get_reviews(@data).is_a?(Array)
62
+ end
63
+
64
+ def test_get
65
+ game = Gogcom::Game.get("Spelunky")
66
+ assert_kind_of Object, game
67
+ end
68
+ end
@@ -1,63 +1,6 @@
1
- require 'minitest/autorun'
2
- require 'helper'
3
- require 'gogcom'
4
-
5
- class GogcomTest < MiniTest::Test
6
- def setup
7
- @game = Gogcom.game("Faster Than Light")
8
- end
9
-
10
- # Game
11
- def test_that_game_has_title
12
- assert_equal "FTL: Advanced Edition", @game.title
13
- end
14
-
15
- def test_that_game_has_genres
16
- assert_equal ["Strategy", "Simulation", "Sci-fi"], @game.genres
17
- end
18
-
19
- def test_that_game_has_download_size
20
- assert_equal "205 MB", @game.download_size
21
- end
22
-
23
- def test_that_game_has_release_date
24
- assert_equal 1347595200, @game.release_date
25
- end
26
-
27
- def test_that_game_has_price
28
- assert_match /^\$\d+(\.\d{2})?$/, @game.price
29
- end
30
-
31
- def test_that_game_has_avg_rating
32
- assert_match /\d.\d/, @game.avg_rating.to_s
33
- end
34
-
35
- def test_that_game_has_avg_ratings_number
36
- assert_kind_of Integer, @game.avg_ratings_count
37
- end
38
-
39
- def test_that_game_has_platforms
40
- assert_equal ["Windows", "Mac"], @game.platforms
41
- end
42
-
43
- def test_that_game_has_languages
44
- assert_equal ["English"], @game.languages
45
- end
46
-
47
- def test_that_game_has_developer
48
- assert_equal "Subset Games", @game.developer
49
- end
50
-
51
- def test_that_game_has_publisher
52
- assert_equal "Subset Games", @game.publisher
53
- end
54
-
55
- def test_that_game_has_game_modes
56
- assert_equal ["Single-player"], @game.game_modes
57
- end
58
-
59
- def test_that_game_has_reviews
60
- assert !@game.reviews.empty?, "Reviews array is empty"
61
- end
62
-
1
+ class GogcomTest < Minitest::Test
2
+ def test_game
3
+ game = Gogcom.game("Spelunky")
4
+ assert_kind_of Object, game
5
+ end
63
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gogcom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.21
4
+ version: 0.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rolandas Barysas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-01 00:00:00.000000000 Z
11
+ date: 2014-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coveralls
@@ -30,6 +30,20 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 0.7.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: rake
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '10.3'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '10.3'
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: minitest
35
49
  requirement: !ruby/object:Gem::Requirement
@@ -37,9 +51,6 @@ dependencies:
37
51
  - - "~>"
38
52
  - !ruby/object:Gem::Version
39
53
  version: '5.4'
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: 5.4.1
43
54
  type: :development
44
55
  prerelease: false
45
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -47,29 +58,20 @@ dependencies:
47
58
  - - "~>"
48
59
  - !ruby/object:Gem::Version
49
60
  version: '5.4'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 5.4.1
53
61
  - !ruby/object:Gem::Dependency
54
- name: rake
62
+ name: simplecov
55
63
  requirement: !ruby/object:Gem::Requirement
56
64
  requirements:
57
65
  - - "~>"
58
66
  - !ruby/object:Gem::Version
59
- version: '10.3'
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: 10.3.2
67
+ version: '0.9'
63
68
  type: :development
64
69
  prerelease: false
65
70
  version_requirements: !ruby/object:Gem::Requirement
66
71
  requirements:
67
72
  - - "~>"
68
73
  - !ruby/object:Gem::Version
69
- version: '10.3'
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- version: 10.3.2
74
+ version: '0.9'
73
75
  - !ruby/object:Gem::Dependency
74
76
  name: nokogiri
75
77
  requirement: !ruby/object:Gem::Requirement
@@ -121,11 +123,13 @@ files:
121
123
  - README.md
122
124
  - Rakefile
123
125
  - lib/gogcom.rb
126
+ - lib/gogcom/func.rb
124
127
  - lib/gogcom/game.rb
125
- - lib/gogcom/gogcom.rb
126
128
  - lib/gogcom/review.rb
127
129
  - lib/gogcom/version.rb
128
130
  - test/helper.rb
131
+ - test/test_func.rb
132
+ - test/test_game.rb
129
133
  - test/test_gogcom.rb
130
134
  homepage: http://rubygems.org/gems/gogcom
131
135
  licenses:
@@ -1,84 +0,0 @@
1
- class Gogcom
2
-
3
- GOG_GAME_BASE_URL = "http://www.gog.com/game/"
4
-
5
- def self.game(name)
6
- name = urlfy_name(name)
7
- page = Nokogiri::HTML(open(GOG_GAME_BASE_URL + name))
8
- data = JSON.parse(page.css('script')[0].text.gsub(/^\s+|\s+$/, "").gsub("var gogData = ", "")[0..-2])
9
-
10
- game = Game.new
11
-
12
- # Game title
13
- game.title = data["gameProductData"]["title"]
14
-
15
- # Game genres
16
- game.genres = []
17
- genres_raw = data["gameProductData"]["genres"]
18
- genres_raw.each do |genre|
19
- game.genres.push(genre["name"])
20
- end
21
-
22
- # Download size
23
- game.download_size = data["gameProductData"]["downloadSize"]
24
-
25
- # Release date
26
- game.release_date = data["gameProductData"]["releaseDate"]
27
-
28
- # Price
29
- game.price = data["gameProductData"]["price"]["symbol"] + data["gameProductData"]["price"]["amount"]
30
-
31
- # Average rating
32
- game.avg_rating = data["gameProductData"]["rating"].to_s.insert(1, ".")
33
-
34
- # Rating count
35
- game.avg_ratings_count = data["gameProductData"]["votesCount"]
36
-
37
- # Platforms
38
- game.platforms = []
39
- platforms_raw = data["gameProductData"]["worksOn"]
40
- platforms_raw.each do |platform|
41
- if(platform[1])
42
- game.platforms.push(platform[0])
43
- end
44
- end
45
-
46
- # Languages
47
- game.languages = data["gameProductData"]["languages"]
48
-
49
- # Developer & Publisher
50
- game.developer = data["gameProductData"]["developer"]["name"]
51
- game.publisher = data["gameProductData"]["publisher"]["name"]
52
-
53
- # Game modes
54
- game.game_modes = []
55
- modes_raw = data["gameProductData"]["modes"]
56
- modes_raw.each do |mode|
57
- game.game_modes.push(mode["title"])
58
- end
59
-
60
- # Reviews
61
- game.reviews = []
62
- reviews_raw = data["reviews"]["pages"][0]
63
- reviews_raw.each do |review|
64
- r = Review.new
65
-
66
- r.title = review["title"]
67
- r.rating = review["rating"].to_s.insert(1, ".")
68
- r.author = review["author"]["name"]
69
- r.body = review["description"]
70
-
71
- game.reviews.push(r)
72
- end
73
-
74
- game
75
- end
76
-
77
- # Converts Game: Name 2 to game_name_2
78
- # @param: game name {string}
79
- # @return: converted game name {string}
80
- def self.urlfy_name(name)
81
- name = name.gsub(/[^0-9A-Za-z\s]/, '').gsub(/\s/, '_').downcase
82
- return name
83
- end
84
- end