steam_deals_cli 0.1.0 → 1.0.0

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: 672565995016955d82e68f8925e7820e3cb49903
4
- data.tar.gz: 889e25188ff9b211a95720f5a7133030a6958aae
3
+ metadata.gz: 4420bd56f27f9250c8f8a736819a9f488f762ba0
4
+ data.tar.gz: 7fd0c224d1fdc87787b854dd6b14c3bf67c1f30b
5
5
  SHA512:
6
- metadata.gz: 858deae2e6b61a66f7c20cbdf9f1d0de69a33342ba97416744f6f84feea273e3fb1030fbe9a9034c611e5ddac0e26357185b2995f73498dfccdaf1530a893467
7
- data.tar.gz: d036d1e935b2ff3e4f9ed9e97b2766edda5615afbb86e6a549c49938b9eea3a1e5e56d4f455ceeda78c898600b583a404f957095f0d2e10c7dacca98dfdf3392
6
+ metadata.gz: 8f3821e801cded4b51817ed54a25ca6d21ab1cadfee9249ae0a5439f288d105ad7dbfa6ded2b3950e55e84a2188993541d84e04977c4a4c3bf58a669f5ad5c88
7
+ data.tar.gz: 30eb0f1e817574c5db6c027cc9e5de15db38cede223cbe769c83f19d22490a3763431a4270a3451d758d0166d84183a63489811092e0c25dd7eb17d6388d05e2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- steam_deals_cli (0.1.0)
4
+ steam_deals_cli (0.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -36,11 +36,11 @@ PLATFORMS
36
36
 
37
37
  DEPENDENCIES
38
38
  bundler (~> 1.16)
39
- nokogiri
40
- open_uri_redirections
41
- pry
39
+ nokogiri (~> 1.8, >= 1.8.1)
40
+ open_uri_redirections (~> 0.2.1)
41
+ pry (~> 0.11.3)
42
42
  rake (~> 10.0)
43
- rspec
43
+ rspec (~> 3.7)
44
44
  steam_deals_cli!
45
45
 
46
46
  BUNDLED WITH
data/README.md CHANGED
@@ -1,9 +1,11 @@
1
- <<<<<<< HEAD
2
1
  # SteamDealsCli
3
2
 
4
- 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/steam_deals_cli`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ This Ruby Gem outputs the current deals on Steam organized by the type of deal.
4
+ Weeklong Deals; last all week.
5
+ Weekend Deals; last as long as the weekend.
6
+ Daily Deals; last for only a day.
7
+ Special Promotions; Offered when you own the original game or when a developer is feeling awesome :)
5
8
 
6
- TODO: Delete this and the text above, and describe your gem
7
9
 
8
10
  ## Installation
9
11
 
@@ -23,7 +25,10 @@ Or install it yourself as:
23
25
 
24
26
  ## Usage
25
27
 
26
- TODO: Write usage instructions here
28
+ Type the below and follow the on screen prompts.
29
+ ```ruby
30
+ CLI.new.call
31
+ ```
27
32
 
28
33
  ## Development
29
34
 
data/bin/console CHANGED
@@ -11,4 +11,4 @@ require "steam_deals_cli"
11
11
  # Pry.start
12
12
 
13
13
  require "irb"
14
- IRB.start
14
+ CLI.new.call
data/bin/steam_deals_cli CHANGED
@@ -2,4 +2,4 @@
2
2
 
3
3
  require_relative '../lib/steam_deals_cli'
4
4
 
5
- SteamDealsCli::CLI.new.call
5
+ CLI.new.call
@@ -0,0 +1,7 @@
1
+ require 'pry'
2
+ require 'nokogiri'
3
+ require 'open-uri'
4
+
5
+ require_relative '../lib/steam_deals_cli/cli'
6
+ require_relative '../lib/steam_deals_cli/deals_scraper'
7
+ require_relative '../lib/steam_deals_cli/steam_deals'
@@ -1,11 +1,4 @@
1
- require "steam_deals_cli/version"
2
- require "steam_deals_cli/steam_deals"
3
- require "steam_deals_cli/cli"
4
-
5
- require 'pry'
6
- require 'nokogiri'
7
- require 'open-uri'
8
-
1
+ require_relative '../config/environment'
9
2
 
10
3
  module SteamDealsCli
11
4
  # Your code goes here...
@@ -1,34 +1,36 @@
1
- require_relative './deals_scraper.rb'
2
- require_relative './steam_deals.rb'
3
-
4
- class SteamDealsCli::CLI
1
+ class CLI
5
2
 
6
3
  def call
7
- SteamDealsCli::Deals_Scraper.new.make_deals
4
+ Deals_Scraper.new.make_deals
8
5
  puts "Welcome to Steam's current sales!"
9
6
  start
10
7
  end
11
8
 
12
9
  def start
13
10
  puts "-----------------------------------------"
14
- puts "\nWhich would you like to see? There are currently #{SteamDealsCli::Deals_Scraper.new.current_deals_count} products on sale."
15
- puts "How would you like to see them sorted? Would you like to view the Weeklong Deals, Special Promotoions, Daily Deals, or Weekend Deals "
11
+ puts "\nWhich would you like to see? There are currently #{Deals_Scraper.new.current_deals_count} products on sale."
12
+ puts "\nHow would you like to see them sorted? Would you like to view the Weeklong Deals, Special Promotoions, Daily Deals, or Weekend Deals "
16
13
  information
17
14
  end
18
15
 
19
16
  def information
17
+ puts ""
20
18
  puts "Ex. For Weeklong Deals, type '1'"
21
19
  puts "If you'd like to exit, type '5'"
22
20
  input = gets.to_i
23
21
 
24
22
  if input == 1
25
- print_discount(SteamDealsCli::Steam_Deals.weeklong_deals)
23
+ print_discounts(Steam_Deals.weeklong_deals)
24
+ more_info(Steam_Deals.weeklong_deals)
26
25
  elsif input == 2
27
- print_discount(SteamDealsCli::Steam_Deals.special_promos)
26
+ print_discounts(Steam_Deals.special_promos)
27
+ more_info(Steam_Deals.special_promos)
28
28
  elsif input == 3
29
- print_discount(SteamDealsCli::Steam_Deals.daily_deals)
29
+ print_discounts(Steam_Deals.daily_deals)
30
+ more_info(Steam_Deals.daily_deals)
30
31
  elsif input == 4
31
- print_discount(SteamDealsCli::Steam_Deals.weekend_deals)
32
+ print_discounts(Steam_Deals.weekend_deals)
33
+ more_info(Steam_Deals.weekend_deals)
32
34
  elsif input == 5
33
35
  puts "Thanks! If you'd like to see more deals com'on back!"
34
36
  else
@@ -37,15 +39,50 @@ class SteamDealsCli::CLI
37
39
  end
38
40
  end
39
41
 
40
- def print_discount(games)
41
- games.each do |game|
42
+ def print_discounts(games)
43
+ games.each_with_index do |game, index|
42
44
  puts "----------------------------"
43
45
  puts ""
46
+ puts "#{index+1}."
44
47
  puts "Game: #{game.name}"
45
- puts "Discounted Price: #{game.discounted_price}"
48
+ puts "Discounted Price: #{game.discounted_price}"
46
49
  puts "% Off: #{game.price_discount}"
47
50
  puts ""
48
51
  end
49
52
  end
50
53
 
54
+ def more_info(list)
55
+ puts "Would you like to see more info on any of the games on the list?"
56
+ puts "Yes to continue and No to end the program."
57
+ info_request = gets.chomp
58
+ if info_request.downcase == "yes"
59
+ puts ""
60
+ puts "Which would you like to know more about?"
61
+ input = gets.to_i
62
+ puts ""
63
+ puts "#{list[input-1].name}"
64
+ Steam_Deals.additional_info(list[input-1])
65
+ added_info(list[input-1])
66
+ more_info(list)
67
+ elsif info_request.downcase == "no"
68
+ puts "Thanks! If you'd like to see more deals com'on back!"
69
+ elsif info_request.downcase == "eggs"
70
+ puts "Easter"
71
+ else
72
+ puts "#{info_request} is invalid. Please try again."
73
+ more_info(list)
74
+ end
75
+ end
76
+
77
+ def added_info(game)
78
+ puts "----------------------------"
79
+ puts "Game: #{game.name}"
80
+ puts "Developer: #{game.developer}"
81
+ puts "Publisher: #{game.publisher}"
82
+ puts "Discounted Price: #{game.discounted_price}"
83
+ puts "% Off: #{game.price_discount}"
84
+ puts "Original Price: #{game.original_price}"
85
+ puts "Game URL: #{game.widget}"
86
+ puts "----------------------------"
87
+ end
51
88
  end
@@ -1,11 +1,7 @@
1
- require 'open-uri'
2
- require 'nokogiri'
3
- require_relative './steam_deals.rb'
4
-
5
- class SteamDealsCli::Deals_Scraper
1
+ class Deals_Scraper
6
2
 
7
3
  def get_page
8
- Nokogiri::HTML(open("https://steamdb.info/sales/?min_discount=0&min_rating=0"))
4
+ Nokogiri::HTML(open("https://steamdb.info/sales"))
9
5
  end
10
6
 
11
7
  def current_deals_count
@@ -18,8 +14,7 @@ class SteamDealsCli::Deals_Scraper
18
14
 
19
15
  def make_deals
20
16
  scrape_deals.each do |deal|
21
- SteamDealsCli::Steam_Deals.deals_from_page(deal)
17
+ Steam_Deals.deals_from_page(deal)
22
18
  end
23
19
  end
24
-
25
20
  end
@@ -1,30 +1,37 @@
1
- require 'open-uri'
2
- require 'nokogiri'
3
- require_relative './deals_scraper.rb'
1
+ class Steam_Deals
4
2
 
5
- class SteamDealsCli::Steam_Deals
6
-
7
- attr_accessor :name, :price_discount , :category, :discounted_price
8
-
9
- @@all = []
3
+ attr_accessor :name, :price_discount , :category, :discounted_price, :url, :publisher, :developer, :widget, :id_num, :original_price
4
+ @@all = []
10
5
 
11
6
  def self.deals_from_page(deal)
12
7
  self.new(
13
8
  deal.css("a.b").text,
14
9
  deal.css("td").children[11].text,
15
10
  deal.css("td").children[12].text,
16
- deal.css(".category").text
11
+ deal.css(".category").text,
12
+ deal.css("a.b").attribute("href").value
17
13
  )
18
14
  end
19
-
20
- def initialize(name, price_discount, discounted_price, category)
15
+ #deal.css("a.b").attribute("href").value => "/app/3230"
16
+ def initialize(name, price_discount, discounted_price, category, url)
21
17
  @name = name
22
18
  @price_discount = price_discount
23
19
  @discounted_price = discounted_price
24
20
  @category = category
21
+ @id_num = url
22
+ @url = Steam_Deals.url_creation(url)
23
+ @widget =Steam_Deals.widget_creation(id_num)
25
24
  @@all << self
26
25
  end
27
26
 
27
+ def self.url_creation(url)
28
+ app_url = "https://steamdb.info#{url}"
29
+ end
30
+
31
+ def self.widget_creation(id_num)
32
+ widget = "http://store.steampowered.com#{id_num}"
33
+ end
34
+
28
35
  def self.all
29
36
  @@all
30
37
  end
@@ -45,7 +52,16 @@ class SteamDealsCli::Steam_Deals
45
52
  self.all.select{|game| game.category == "Daily Deal"}
46
53
  end
47
54
 
55
+ def self.additional_info(game)
56
+ details = Nokogiri::HTML(open(game.url))
57
+ game.developer = details.css("tbody tr td").children[8].text
58
+ game.publisher = details .css("tbody tr td").children[11].text
59
+ widget = Nokogiri::HTML(open(game.widget))
60
+ game.original_price = widget.css("div.discount_original_price").first.text
61
+ end
48
62
  end
63
+ #Developer: .css("tbody tr td").children[8] => Heart Machine
64
+ #Publisher: .css("tbody tr td").children[11] => Heart Machine
49
65
 
50
66
  #name: deal.css("a.b").text => Earth 2160
51
67
  #category: deal.css(".category").text => Weeklong Deal
@@ -1,3 +1,3 @@
1
1
  module SteamDealsCli
2
- VERSION = "0.1.0"
2
+ VERSION = "1.0.0"
3
3
  end
data/spec.md CHANGED
@@ -3,4 +3,4 @@
3
3
  Specs:
4
4
  - [x] Have a CLI for interfacing with the application
5
5
  - [x] Pull data from an external source
6
- - [ ] Implement both list and detail views
6
+ - [x] Implement both list and detail views
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: steam_deals_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - hmelo1
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-15 00:00:00.000000000 Z
11
+ date: 2018-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -117,6 +117,7 @@ files:
117
117
  - bin/console
118
118
  - bin/setup
119
119
  - bin/steam_deals_cli
120
+ - config/environment.rb
120
121
  - lib/steam_deals_cli.rb
121
122
  - lib/steam_deals_cli/cli.rb
122
123
  - lib/steam_deals_cli/deals_scraper.rb
@@ -124,6 +125,7 @@ files:
124
125
  - lib/steam_deals_cli/version.rb
125
126
  - planning_notes.txt
126
127
  - spec.md
128
+ - steam_deals_cli-0.1.0.gem
127
129
  - steam_deals_cli.gemspec
128
130
  homepage: https://github.com/hmelo1/steam_deals_cli.git
129
131
  licenses: