goodwill 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZTdiMmFhNjFlNjYzZWQzOTI1ZmY4YTM0Zjc2ZmQyNTUyZGFiYTUyMQ==
5
- data.tar.gz: !binary |-
6
- YWZlOTA3NDljN2ZmM2I3Y2Q2NzJiZWRhNzBjYjUyZmVlZGQ1MGJhNQ==
2
+ SHA256:
3
+ metadata.gz: e719b975ab0646de6f53fe98886aec39e1854ee99801c825d7ac7301ffa13f40
4
+ data.tar.gz: 7e9bdce4e2ca7c0e7b621b40226073b11fea1f81e8809b13e62efe33fbee6c97
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZGMwNzc0Y2U4NWUxNGZhMjcxZDkyNjc2OTdlNWRhZjdiNDVmNTU2YjIxMDg5
10
- OGJiYzA4M2UxODNkODQ0YzFmN2RhMTVmZWMwOTg2MmMwY2Q3MDIxYjA0ZWRk
11
- MzE5YzVlYWZiZDZhOTQ4MmZiNjE2YjdjYTViMjE4NTJjMDVjN2U=
12
- data.tar.gz: !binary |-
13
- MGUxNmVmMTFmY2M5NjhjOGM1NTI5MWZkNmIxZjI2YWY1YzdhMTFkMGEwMmFk
14
- MWU2ZmFkOTkyMDMwNTUzZTNhMWNjMGVjZTU2YTA0MjAwNGVlMWZmODQzOTY3
15
- YzBmNmY2ZGUzNDViMWQxNjMxNGNlNzA4YTVkNDQ0Njk3ODZiNWQ=
6
+ metadata.gz: b6d88107b867793646fccb768784e7831220614e3e2cd4cd25c33a37d7c7032cfa5cc06475c16b37d17351c851be3d4fb86975dd978b88288e32ca038b8c57c3
7
+ data.tar.gz: 56684c90f1313a7855054ba342d076d752405d9f387d43de2582b86f5f612e901d46167657d42453a2cf7c354b94e8d4e0817311487e4ef76bcdf33f426ab5b6
@@ -1,11 +1,17 @@
1
- Documentation:
2
- Enabled: false
1
+ AllCops:
2
+ NewCops: enable
3
+
4
+ Layout/LineLength:
5
+ Max: 150
3
6
 
4
7
  Metrics/AbcSize:
5
- Enabled: false
8
+ Max: 30
6
9
 
7
- Metrics/LineLength:
10
+ Metrics/BlockLength:
8
11
  Max: 200
9
12
 
10
13
  Metrics/MethodLength:
11
14
  Max: 20
15
+
16
+ Style/Documentation:
17
+ Enabled: false
@@ -0,0 +1 @@
1
+ 2.7.1
@@ -1,10 +1,13 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.2.0
4
- before_install: gem install bundler -v 1.10.3
4
+ - 2.3.0
5
+ - 2.4.0
6
+ - 2.5.0
7
+ before_install: gem install bundler
5
8
  script:
6
9
  - bundle exec rspec
7
- - bundle exec rubocop
10
+ - bundle exec rubocop ./lib
8
11
  deploy:
9
12
  provider: rubygems
10
13
  api_key:
data/Gemfile CHANGED
@@ -1,4 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
5
+ gem 'pry-rescue'
6
+ gem 'pry-stack_explorer'
7
+
3
8
  # Specify your gem's dependencies in goodwill.gemspec
4
9
  gemspec
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
  require 'rubocop/rake_task'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'goodwill'
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  require 'bundler/setup'
3
5
  require 'highline/import'
4
6
  require 'table_print'
@@ -1,5 +1,6 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'goodwill/version'
5
6
 
@@ -14,29 +15,23 @@ Gem::Specification.new do |spec|
14
15
  spec.description = 'Allows you to perform basic auction management, bidding, and searching from ruby.'
15
16
  spec.homepage = 'https://github.com/dudemcbacon/goodwill'
16
17
 
17
- # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
- # delete this section to allow pushing this gem to any host.
19
- if spec.respond_to?(:metadata)
20
- spec.metadata['allowed_push_host'] = 'https://rubygems.org'
21
- else
22
- fail 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
23
- end
24
-
25
18
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
19
  spec.bindir = 'exe'
27
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
21
  spec.require_paths = ['lib']
29
22
 
23
+ spec.add_development_dependency 'gem-release'
24
+ spec.add_development_dependency 'pry'
25
+ spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'rspec'
27
+ spec.add_development_dependency 'rubocop'
30
28
  spec.add_development_dependency 'simplecov'
31
- spec.add_development_dependency 'rake', '~> 10.0'
32
- spec.add_development_dependency 'rspec', '~> 3.3'
33
- spec.add_development_dependency 'rubocop', '~> 0.34'
34
- spec.add_development_dependency 'pry', '~> 0.10'
35
- spec.add_development_dependency 'travis', '~> 1.6'
36
- spec.add_development_dependency 'gem-release', '~> 0.7'
37
- spec.add_dependency 'parallel', '~> 1.6'
38
- spec.add_dependency 'highline', '~> 1.7'
39
- spec.add_dependency 'mechanize', '~> 2.7'
40
- spec.add_dependency 'table_print', '~> 1.5'
41
- spec.add_dependency 'thor', '~> 0.19'
29
+ spec.add_development_dependency 'travis'
30
+ spec.add_development_dependency 'vcr'
31
+ spec.add_development_dependency 'webmock'
32
+ spec.add_dependency 'highline'
33
+ spec.add_dependency 'mechanize'
34
+ spec.add_dependency 'parallel'
35
+ spec.add_dependency 'table_print'
36
+ spec.add_dependency 'thor'
42
37
  end
@@ -1,5 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'goodwill/auction'
2
4
  require 'goodwill/biddingauction'
3
5
  require 'goodwill/account'
4
6
  require 'goodwill/cli'
5
- module Goodwill; end
7
+
8
+ module Goodwill
9
+ class BidError < StandardError; end
10
+ end
@@ -1,7 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'goodwill/auction'
2
4
  require 'goodwill/mechanize'
3
5
  require 'goodwill/urlpaths'
6
+ require 'goodwill/csspaths'
4
7
 
8
+ require 'json'
5
9
  require 'mechanize'
6
10
  require 'parallel'
7
11
 
@@ -12,8 +16,8 @@ module Goodwill
12
16
  class Account
13
17
  include Goodwill::Mechanize
14
18
  include URLPaths
19
+ include CSSPaths
15
20
 
16
- IN_PROG = 'https://www.shopgoodwill.com/buyers/myShop/AuctionsInProgress.asp'
17
21
  PER_PAGE = 25
18
22
 
19
23
  attr_reader :username, :password, :threads
@@ -27,51 +31,76 @@ module Goodwill
27
31
  end
28
32
 
29
33
  def in_progress
30
- in_progress_page = mechanize.get(IN_PROG)
31
- Parallel.map(in_progress_page.search('table.mySG tbody tr'), in_threads: @threads) do |row|
34
+ in_progress_page = mechanize.get(OPEN_ORDERS_URL)
35
+ Parallel.map(in_progress_page.search(IN_PROGRESS_ROWS), in_threads: @threads) do |row|
32
36
  Goodwill::BiddingAuction.new(itemid_from_open_order_row(row), mechanize)
33
37
  end
34
38
  end
35
39
 
36
40
  def search(item_title)
37
41
  search_page = mechanize.get(SEARCH_URL + item_title)
38
- pages(total_items(search_page)).times.map do |i|
39
- search_page = search_page.link_with(text: 'Next').click unless i == 0
40
- Parallel.map(search_page.search('table.productresults tbody > tr'), in_threads: @threads) do |row|
42
+ Array.new(pages(total_items(search_page))) do |i|
43
+ search_page = search_page.link_with(text: '>').click unless i.zero?
44
+ Parallel.map(search_page.search(SEARCH_ROWS), in_threads: @threads) do |row|
41
45
  Goodwill::Auction.new(itemid_from_search_row(row))
42
46
  end
43
47
  end.flatten
44
48
  end
45
49
 
46
50
  def bid(itemid, bid)
47
- mechanize.get(ITEM_SEARCH_URL + itemid.to_s) do |page|
48
- form = page.form_with(action: 'https://www.shopgoodwill.com/reviewBidrcs.asp')
49
- form.maxbid = bid.to_f
50
- confirmation_page = form.submit
51
- confirmation_form = confirmation_page.form_with(action: 'https://www.shopgoodwill.com/reviewBidrcs.asp?state=2&puconf=Y')
52
- confirmation_form.buyerLogin = @username
53
- confirmation_form.buyerPasswd = @password
54
- butt = confirmation_form.submit
55
- butt.search('tr')[1].text.split.last.tr('$', '') == bid ? true : false
51
+ item = mechanize.get(ITEM_SEARCH_URL + itemid.to_s)
52
+ href = item.search(SELLER_ID_LINK).attribute('href').value
53
+ seller_id = href.split('/').last
54
+
55
+ params = {
56
+ itemId: itemid,
57
+ bidAmount: bid,
58
+ quantity: 1,
59
+ sellerId: seller_id
60
+ }
61
+
62
+ # bidresult
63
+ # 1 - success (check message for 'Bid Received!')
64
+ # 1 - outbid (check message for 'You have already been outbid.')
65
+ # -5 - bid less than minimum
66
+ mechanize.get(BID_URL, params) do |page|
67
+ res = JSON.parse(page.body)
68
+ if res['BidResult'] == 1
69
+ return true if res['BidResultMessage'].include?('Bid Received')
70
+
71
+ return false if res['BidResultMessage'].include?('You have already been outbid.')
72
+
73
+ raise Goodwill::BidError, res['BidResultMessage']
74
+ elsif res['BidResult'] == -5
75
+ raise Goodwill::BidError, res['BidResultMessage']
76
+ end
56
77
  end
57
78
  end
58
79
 
59
80
  private
60
81
 
61
- def pages(items)
62
- (items / 25.to_f).ceil
63
- end
64
-
65
- def total_items(page)
66
- page.search('div h1').text.split.first.to_i
82
+ def buyer_token
83
+ mechanize.cookies.select { |c| c.name == 'AuthenticatedBuyerToken' }.first.value
67
84
  end
68
85
 
69
86
  def itemid_from_open_order_row(row)
70
- row.search('a').attr('href').value.split('=')[1]
87
+ row.search('a').text
71
88
  end
72
89
 
73
90
  def itemid_from_search_row(row)
74
- row.search('th:nth-child(1)').text
91
+ row.search('a').first.attributes['href'].value.split('/').last
92
+ end
93
+
94
+ def pages(items)
95
+ (items / 40.to_f).ceil
96
+ end
97
+
98
+ def request_token
99
+ mechanize.cookies.select { |c| c.name == '__RequestVerificationToken' }.first.value
100
+ end
101
+
102
+ def total_items(page)
103
+ page.search('//*[@id="search-results"]/div/div[1]/nav[1]/p').first.text.split(' of ')[1].split(' ').first.to_i
75
104
  end
76
105
  end
77
106
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mechanize'
2
4
 
3
5
  require 'goodwill/csspaths'
@@ -13,6 +15,8 @@ module Goodwill
13
15
  include CSSPaths
14
16
  include URLPaths
15
17
 
18
+ attr_reader :item_page
19
+
16
20
  attr_reader :bids
17
21
  attr_reader :current
18
22
  attr_reader :end
@@ -21,22 +25,25 @@ module Goodwill
21
25
  attr_reader :itemid
22
26
  attr_reader :seller
23
27
  attr_reader :shipping
28
+ attr_reader :type
24
29
 
25
- def initialize(itemid, zipcode = '97222', state = 'OR', country = 'United States')
30
+ def initialize(itemid, zipcode = '97222', state = 'OR', country = 'US')
26
31
  @itemid = itemid
27
32
  @zipcode = zipcode
28
33
  @state = state
29
34
  @country = country
30
35
 
31
36
  @href = ITEM_SEARCH_URL + itemid.to_s
32
- item_page = mechanize.get(@href)
37
+ @item_page = mechanize.get(@href)
38
+
39
+ @type = parse_type
33
40
  @bids = item_page.search(BIDS_PATH).text[/\d+/].to_i
34
41
  @current = item_page.search(CURRENT_PRICE_PATH).text.tr('$', '').to_f
35
- @end = DateTime.strptime(item_page.search(END_TIME_PATH).text, '%m/%d/%Y %l:%M:%S %p %Z')
42
+ @end = parse_end_time
36
43
  @item = item_page.search(ITEM_TITLE_PATH).text
37
44
  @seller = item_page.search(SELLER_PATH).text
38
45
  @bidding = false
39
- @shipping = calculate_shipping(@itemid, @zipcode, @state, @country)
46
+ @shipping = calculate_shipping(@itemid, @zipcode, @country)
40
47
  end
41
48
 
42
49
  def ==(other)
@@ -46,21 +53,37 @@ module Goodwill
46
53
  def to_hash
47
54
  hash = {}
48
55
  instance_variables.each do |var|
49
- if var == :@end
50
- hash[var.to_s.delete('@')] = instance_variable_get(var).to_s
51
- else
52
- hash[var.to_s.delete('@')] = instance_variable_get(var)
53
- end
56
+ next if var == :@item_page
57
+
58
+ hash[var.to_s.delete('@')] = if var == :@end
59
+ instance_variable_get(var).to_s
60
+ else
61
+ instance_variable_get(var)
62
+ end
54
63
  end
55
64
  hash
56
65
  end
57
66
 
58
67
  private
59
68
 
60
- def calculate_shipping(itemid, zipcode, state, country)
61
- params = "?itemid=#{itemid}&zip=#{zipcode}&state=#{state}&country=#{country}"
69
+ def calculate_shipping(itemid, zipcode, country)
70
+ params = "?ZipCode=#{zipcode}&Country=#{country}&ItemId=#{itemid}&Quantity=1&_=#{DateTime.now.strftime('%s')}"
62
71
  page = mechanize.get(SHIPPING_URL + params)
63
- page.search(SHIPPING_PATH).text.tr('$', '').to_f
72
+ page.search(SHIPPING_PATH).text.split(': ').last.tr('$', '').to_f
73
+ end
74
+
75
+ def parse_end_time
76
+ search_path = type == :auction ? END_TIME_PATH : BIN_END_TIME_PATH
77
+ time = item_page.search(search_path).text.split(': ')[1]
78
+ return nil if time.nil?
79
+
80
+ DateTime.strptime(time, '%m/%d/%Y %l:%M:%S %p %Z')
81
+ rescue Date::Error
82
+ nil
83
+ end
84
+
85
+ def parse_type
86
+ item_page.search(BUY_IT_NOW_PATH).empty? ? :auction : :buyitnow
64
87
  end
65
88
  end
66
89
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'goodwill/urlpaths'
2
4
 
3
5
  module Goodwill
@@ -16,6 +18,7 @@ module Goodwill
16
18
  attr_reader :item
17
19
  attr_reader :itemid
18
20
  attr_reader :seller
21
+ attr_reader :shipping
19
22
 
20
23
  def initialize(itemid, mechanize)
21
24
  super(itemid)
@@ -23,8 +26,8 @@ module Goodwill
23
26
  if order_page.link_with(text: regqt(itemid.to_s))
24
27
  @bidding = true
25
28
  row = order_page.link_with(text: regqt(itemid.to_s)).node.parent.parent
26
- @winning = happy?(row.search('img').attr('src').value)
27
- @max = row.search('td:nth-child(5)').text
29
+ @winning = !row.search('td:nth-child(5) > i').empty?
30
+ @max = row.search('td:nth-child(5)').text.tr("\r\n", '').tr(' ', '').tr('$', '')
28
31
  else
29
32
  @bidding = false
30
33
  @winning = false
@@ -37,9 +40,5 @@ module Goodwill
37
40
  def regqt(itemid)
38
41
  /#{Regexp.quote(itemid.to_s)}/
39
42
  end
40
-
41
- def happy?(src)
42
- src.include?('happy')
43
- end
44
43
  end
45
44
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thor'
2
4
 
3
5
  module Goodwill
@@ -1,13 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Goodwill
2
4
  module CSSPaths
3
5
  # Auction Page
4
6
  # http://www.shopgoodwill.com/viewItem.asp?itemID=<itemID>
5
- BIDS_PATH = '#more_images'
6
- CURRENT_PRICE_PATH = 'body > span > div.itemdetail > div:nth-child(2) > div:nth-child(3) > div > table > tr:nth-child(2) > th'
7
- END_TIME_PATH = 'body > span > div.itemdetail > div:nth-child(2) > div:nth-child(2) > div > table > tr:nth-child(5) > td'
7
+ BIDS_PATH = 'body > section > div.container > div:nth-child(3) > div:nth-child(2) > ul.product-data > li:nth-child(3) > span.num-bids'
8
+ BIN_END_TIME_PATH = '/html/body/section/div[2]/div[3]/div[2]/ul[2]/li[7]'
9
+ BUY_IT_NOW_PATH = '/html/body/section/div[2]/div[3]/div[2]/div[2]/div[1]/div/div/div/button'
10
+ CURRENT_PRICE_PATH = 'body > section > div.container > div:nth-child(3) > div:nth-child(2) > ul.product-data > li:nth-child(4) > span'
11
+ END_TIME_PATH = '/html/body/section/div[2]/div[3]/div[2]/ul[2]/li[10]'
12
+ IN_PROGRESS_ROWS = '#my-auctions-table > tbody > tr'
8
13
  ITEMID_PATH = 'body > span > div.itemdetail > div:nth-child(2) > div:nth-child(2) > div > table > tbody > tr:nth-child(3) > td'
9
- ITEM_TITLE_PATH = '#title > span'
10
- SELLER_PATH = 'body > span > div.itemdetail > div:nth-child(2) > div:nth-child(2) > div > table > tr:nth-child(7) > td > b'
11
- SHIPPING_PATH = 'body > center > table > tr:nth-child(8) > td:nth-child(2)'
14
+ ITEM_TITLE_PATH = 'body > section > div.container > div:nth-child(3) > div:nth-child(2) > h1'
15
+ SEARCH_ROWS = '#search-results > div > section > ul.products > li'
16
+ SELLER_ID_LINK = '/html/body/section/div[2]/div[4]/div/section/div/ul/li[4]/a'
17
+ SELLER_PATH = 'body > section > div.container > div:nth-child(3) > div:nth-child(2) > ul.product-data > li:nth-child(8) > a'
18
+ SHIPPING_PATH = 'body > p:nth-child(7) > b'
12
19
  end
13
20
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'logger'
2
4
 
3
5
  module Goodwill
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mechanize'
2
4
 
3
5
  require 'goodwill/urlpaths'
@@ -35,12 +37,13 @@ module Goodwill
35
37
 
36
38
  def login
37
39
  return true if logged_in?
40
+
38
41
  @mechanize.get(LOGIN_URL) do |page|
39
- my_page = page.form_with(action: 'dologin.asp') do |f|
40
- f.buyerid = @username
41
- f.buyerpasswd = @password
42
+ my_page = page.form_with(action: '/SignIn') do |f|
43
+ f.Username = @username
44
+ f.Password = @password
42
45
  end.click_button
43
- @logged_in = my_page.links.map(&:to_s).include? 'My shopgoodwill'
46
+ @logged_in = my_page.links.map(&:to_s).include? 'My Shopgoodwill '
44
47
  end
45
48
  end
46
49
  end
@@ -1,9 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Goodwill
2
4
  module URLPaths
3
- ITEM_SEARCH_URL = 'http://www.shopgoodwill.com/viewItem.asp?itemID='
4
- LOGIN_URL = 'https://www.shopgoodwill.com/buyers/'
5
- OPEN_ORDERS_URL = 'https://www.shopgoodwill.com/buyers/myShop/AuctionsInProgress.asp'
6
- SEARCH_URL = 'http://www.shopgoodwill.com/search/SearchKey.asp?catid=0&sellerID=all&closed=no&minPrice=&maxPrice=&sortBy=itemEndTime&SortOrder=a&showthumbs=on&itemTitle='
7
- SHIPPING_URL = 'https://www.shopgoodwill.com/itemShipChargeAction.asp'
5
+ BID_URL = 'https://www.shopgoodwill.com/Bid/PlaceBid'
6
+ ITEM_SEARCH_URL = 'https://www.shopgoodwill.com/viewItem.asp?itemID='
7
+ LOGIN_URL = 'https://www.shopgoodwill.com/SignIn'
8
+ OPEN_ORDERS_URL = 'https://www.shopgoodwill.com/MyShopgoodwill/AuctionsInProgress'
9
+ SEARCH_URL = 'https://www.shopgoodwill.com/Listings?sg=&c=&s=&lp=0&hp=999999&sbn=false&spo=false&snpo=false&socs=false&sd=false&sca=false&cadb=7&scs=false&sis=false&col=0&p=1&ps=40&desc=false&ss=0&UseBuyerPrefs=true&st='
10
+ SHIPPING_URL = 'https://www.shopgoodwill.com/CalculateShipping'
8
11
  end
9
12
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Goodwill
2
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0'
3
5
  end
metadata CHANGED
@@ -1,183 +1,211 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: goodwill
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Burnett
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-17 00:00:00.000000000 Z
11
+ date: 2020-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: simplecov
14
+ name: gem-release
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
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: pry
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - ! '>='
31
+ - - ">="
18
32
  - !ruby/object:Gem::Version
19
33
  version: '0'
20
34
  type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - ! '>='
38
+ - - ">="
25
39
  - !ruby/object:Gem::Version
26
40
  version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ~>
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '10.0'
47
+ version: '0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - ~>
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: '10.0'
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ~>
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '3.3'
61
+ version: '0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - ~>
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: '3.3'
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rubocop
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - ~>
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: '0.34'
75
+ version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - ~>
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: '0.34'
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
- name: pry
84
+ name: simplecov
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ~>
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: '0.10'
89
+ version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ~>
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: '0.10'
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: travis
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ~>
101
+ - - ">="
88
102
  - !ruby/object:Gem::Version
89
- version: '1.6'
103
+ version: '0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ~>
108
+ - - ">="
95
109
  - !ruby/object:Gem::Version
96
- version: '1.6'
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
- name: gem-release
112
+ name: vcr
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - ~>
115
+ - - ">="
102
116
  - !ruby/object:Gem::Version
103
- version: '0.7'
117
+ version: '0'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - ~>
122
+ - - ">="
109
123
  - !ruby/object:Gem::Version
110
- version: '0.7'
124
+ version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
- name: parallel
126
+ name: webmock
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ~>
129
+ - - ">="
116
130
  - !ruby/object:Gem::Version
117
- version: '1.6'
118
- type: :runtime
131
+ version: '0'
132
+ type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ~>
136
+ - - ">="
123
137
  - !ruby/object:Gem::Version
124
- version: '1.6'
138
+ version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: highline
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - ~>
143
+ - - ">="
130
144
  - !ruby/object:Gem::Version
131
- version: '1.7'
145
+ version: '0'
132
146
  type: :runtime
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - ~>
150
+ - - ">="
137
151
  - !ruby/object:Gem::Version
138
- version: '1.7'
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: mechanize
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - ~>
157
+ - - ">="
144
158
  - !ruby/object:Gem::Version
145
- version: '2.7'
159
+ version: '0'
146
160
  type: :runtime
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - ~>
164
+ - - ">="
151
165
  - !ruby/object:Gem::Version
152
- version: '2.7'
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: parallel
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: table_print
155
183
  requirement: !ruby/object:Gem::Requirement
156
184
  requirements:
157
- - - ~>
185
+ - - ">="
158
186
  - !ruby/object:Gem::Version
159
- version: '1.5'
187
+ version: '0'
160
188
  type: :runtime
161
189
  prerelease: false
162
190
  version_requirements: !ruby/object:Gem::Requirement
163
191
  requirements:
164
- - - ~>
192
+ - - ">="
165
193
  - !ruby/object:Gem::Version
166
- version: '1.5'
194
+ version: '0'
167
195
  - !ruby/object:Gem::Dependency
168
196
  name: thor
169
197
  requirement: !ruby/object:Gem::Requirement
170
198
  requirements:
171
- - - ~>
199
+ - - ">="
172
200
  - !ruby/object:Gem::Version
173
- version: '0.19'
201
+ version: '0'
174
202
  type: :runtime
175
203
  prerelease: false
176
204
  version_requirements: !ruby/object:Gem::Requirement
177
205
  requirements:
178
- - - ~>
206
+ - - ">="
179
207
  - !ruby/object:Gem::Version
180
- version: '0.19'
208
+ version: '0'
181
209
  description: Allows you to perform basic auction management, bidding, and searching
182
210
  from ruby.
183
211
  email:
@@ -186,13 +214,13 @@ executables: []
186
214
  extensions: []
187
215
  extra_rdoc_files: []
188
216
  files:
189
- - .env
190
- - .gitignore
191
- - .rspec
192
- - .rubocop.yml
193
- - .travis.yml
217
+ - ".env"
218
+ - ".gitignore"
219
+ - ".rspec"
220
+ - ".rubocop.yml"
221
+ - ".ruby-version"
222
+ - ".travis.yml"
194
223
  - Gemfile
195
- - Gemfile.old
196
224
  - LICENSE.txt
197
225
  - README.md
198
226
  - Rakefile
@@ -213,25 +241,24 @@ files:
213
241
  homepage: https://github.com/dudemcbacon/goodwill
214
242
  licenses:
215
243
  - MIT
216
- metadata:
217
- allowed_push_host: https://rubygems.org
244
+ metadata: {}
218
245
  post_install_message:
219
246
  rdoc_options: []
220
247
  require_paths:
221
248
  - lib
222
249
  required_ruby_version: !ruby/object:Gem::Requirement
223
250
  requirements:
224
- - - ! '>='
251
+ - - ">="
225
252
  - !ruby/object:Gem::Version
226
253
  version: '0'
227
254
  required_rubygems_version: !ruby/object:Gem::Requirement
228
255
  requirements:
229
- - - ! '>='
256
+ - - ">="
230
257
  - !ruby/object:Gem::Version
231
258
  version: '0'
232
259
  requirements: []
233
260
  rubyforge_project:
234
- rubygems_version: 2.4.5
261
+ rubygems_version: 2.7.7
235
262
  signing_key:
236
263
  specification_version: 4
237
264
  summary: Basic auction management for ShopGoodwil.com
@@ -1,5 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem 'highline'
4
- gem 'mechanize'
5
- gem 'pry'