goodwill 0.3.0 → 0.4.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,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'