steam_deals_cli 0.1.0 → 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.
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: