gogcom 0.0.21 → 0.0.22

Sign up to get free protection for your applications and to get access to all the features.
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