goodwill 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 190cf786963c8ff0d226d63e1879d14ae3d64ef6
4
+ data.tar.gz: 28a25bbe378736a2fee73f65791a5c3434792fba
5
+ SHA512:
6
+ metadata.gz: 8b585d7a018dc553ac3c5b7a1e1082cb4dfcc22fd38ae40b7712db01c94fe14454b93d6f8e2af7e6efe619361e4f3d9b22d441737dac7eeedf96f7382c16ffb5
7
+ data.tar.gz: 6f49d93d634bb9de097f6193f21ba2b98fa62785dff89dacdebe1cd862872130330b2c22ad260e1a79f4d340bb64406ca85589158bbe08fd3934fe35544ba119
data/.env ADDED
@@ -0,0 +1,2 @@
1
+ RACK_ENV=development
2
+ PORT=3000
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /*.swp/
4
+ /*.swo/
5
+ /Gemfile.lock
6
+ /_yardoc/
7
+ /coverage/
8
+ /doc/
9
+ /pkg/
10
+ /spec/reports/
11
+ /tmp/
12
+ /local/
13
+ *.swp
14
+ *.swo
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.0
4
+ before_install: gem install bundler -v 1.10.3
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in goodwill.gemspec
4
+ gemspec
data/Gemfile.old ADDED
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'highline'
4
+ gem 'mechanize'
5
+ gem 'pry'
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Brandon Burnett
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,38 @@
1
+ [![Code Climate](https://codeclimate.com/github/dudemcbacon/goodwill/badges/gpa.svg)](https://codeclimate.com/github/dudemcbacon/goodwill)
2
+
3
+ # Goodwill
4
+
5
+ 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/goodwill`. To experiment with that code, run `bin/console` for an interactive prompt.
6
+
7
+ TODO: Delete this and the text above, and describe your gem
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ ```ruby
14
+ gem 'goodwill'
15
+ ```
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ Or install it yourself as:
22
+
23
+ $ gem install goodwill
24
+
25
+ ## Usage
26
+
27
+ TODO: Write usage instructions here
28
+
29
+ ## Development
30
+
31
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
32
+
33
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
34
+
35
+ ## Contributing
36
+
37
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/goodwill.
38
+
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "goodwill"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/goodwill ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ require 'bundler/setup'
3
+ require 'highline/import'
4
+ require 'table_print'
5
+ require 'thor'
6
+ require 'pry'
7
+
8
+ require 'goodwill'
9
+
10
+ # Exit cleanly from an early interrupt
11
+ Signal.trap('INT') { exit 1 }
12
+
13
+ require 'goodwill/cli'
14
+
15
+ Goodwill::CLI.start(ARGV, debug: true)
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
data/goodwill.gemspec ADDED
@@ -0,0 +1,38 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'goodwill/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'goodwill'
8
+ spec.version = Goodwill::VERSION
9
+ spec.authors = ['Brandon Burnett']
10
+ spec.email = ['gentoolicious@gmail.com']
11
+ spec.license = 'MIT'
12
+
13
+ spec.summary = 'Basic auction management for ShopGoodwil.com'
14
+ spec.description = 'Allows you to perform basic auction management, bidding, and searching from ruby.'
15
+ spec.homepage = 'https://github.com/dudemcbacon/goodwill'
16
+
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
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ spec.bindir = 'exe'
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ['lib']
29
+
30
+ spec.add_development_dependency 'rake', '~> 10.0'
31
+ spec.add_development_dependency 'rspec', '~> 3.3'
32
+ spec.add_development_dependency 'rubocop', '~> 0.34'
33
+ spec.add_development_dependency 'pry', '~> 0.10'
34
+ spec.add_dependency 'highline', '~> 1.7'
35
+ spec.add_dependency 'mechanize', '~> 2.7'
36
+ spec.add_dependency 'table_print', '~> 1.5'
37
+ spec.add_dependency 'thor', '~> 0.19'
38
+ end
data/lib/goodwill.rb ADDED
@@ -0,0 +1,5 @@
1
+ require 'goodwill/auction'
2
+ require 'goodwill/biddingauction'
3
+ require 'goodwill/account'
4
+ require 'goodwill/cli'
5
+ module Goodwill; end
@@ -0,0 +1,72 @@
1
+ require 'goodwill/auction'
2
+ require 'goodwill/mechanize'
3
+ require 'goodwill/urlpaths'
4
+
5
+ require 'mechanize'
6
+
7
+ module Goodwill
8
+ class Account
9
+ include Goodwill::Mechanize
10
+ include URLPaths
11
+
12
+ IN_PROG = 'https://www.shopgoodwill.com/buyers/myShop/AuctionsInProgress.asp'
13
+ PER_PAGE = 25
14
+
15
+ attr_reader :username, :password
16
+
17
+ def initialize(username, password = '')
18
+ @username = username
19
+ @password = password
20
+ Goodwill::Mechanize.username = @username
21
+ Goodwill::Mechanize.password = @password
22
+ end
23
+
24
+ def in_progress
25
+ in_progress_page = mechanize.get(IN_PROG)
26
+ in_progress_page.search('table.mySG tbody tr').map do |row|
27
+ Goodwill::BiddingAuction.new(itemid_from_open_order_row(row), mechanize)
28
+ end
29
+ end
30
+
31
+ def search(itemTitle)
32
+ search_page = mechanize.get(SEARCH_URL + itemTitle)
33
+ pages(total_items(search_page)).times.map do |i|
34
+ search_page = search_page.link_with(text: 'Next').click unless i == 0
35
+ search_page.search('table.productresults tbody > tr').map do |row|
36
+ Goodwill::Auction.new(itemid_from_search_row(row))
37
+ end
38
+ end.flatten
39
+ end
40
+
41
+ def bid(itemid, bid)
42
+ mechanize.get(ITEM_SEARCH_URL + itemid.to_s) do |page|
43
+ form = page.form_with(action: 'https://www.shopgoodwill.com/reviewBidrcs.asp')
44
+ form.maxbid = bid.to_f
45
+ confirmation_page = form.submit
46
+ confirmation_form = confirmation_page.form_with(action: 'https://www.shopgoodwill.com/reviewBidrcs.asp?state=2&puconf=Y')
47
+ confirmation_form.buyerLogin = @username
48
+ confirmation_form.buyerPasswd = @password
49
+ butt = confirmation_form.submit
50
+ butt.search('tr')[1].text.split.last.tr('$', '') == bid ? true : false
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ def pages(items)
57
+ (items / 25.to_f).ceil
58
+ end
59
+
60
+ def total_items(page)
61
+ page.search('div h1').text.split.first.to_i
62
+ end
63
+
64
+ def itemid_from_open_order_row(row)
65
+ row.search('a').attr('href').value.split('=')[1]
66
+ end
67
+
68
+ def itemid_from_search_row(row)
69
+ row.search('th:nth-child(1)').text
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,37 @@
1
+ require 'mechanize'
2
+
3
+ require 'goodwill/csspaths'
4
+ require 'goodwill/urlpaths'
5
+ require 'goodwill/mechanize'
6
+
7
+ module Goodwill
8
+ class Auction
9
+ include Goodwill::Mechanize
10
+ include CSSPaths
11
+ include URLPaths
12
+
13
+ attr_reader :bids
14
+ attr_reader :current
15
+ attr_reader :end
16
+ attr_reader :href
17
+ attr_reader :item
18
+ attr_reader :itemid
19
+ attr_reader :seller
20
+
21
+ def initialize(itemid = nil)
22
+ @href = ITEM_SEARCH_URL + itemid.to_s
23
+ @itemid = itemid
24
+ item_page = mechanize.get(@href)
25
+ @bids = item_page.search(BIDS_PATH).text[/\d+/]
26
+ @current = item_page.search(CURRENT_PRICE_PATH).text
27
+ @end = item_page.search(END_TIME_PATH).text
28
+ @item = item_page.search(ITEM_TITLE_PATH).text
29
+ @seller = item_page.search(SELLER_PATH).text
30
+ @bidding = false
31
+ end
32
+
33
+ def ==(another_auction)
34
+ self.itemid == another_auction.itemid
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,45 @@
1
+ require 'goodwill/urlpaths'
2
+
3
+ module Goodwill
4
+ class BiddingAuction < Auction
5
+ include URLPaths
6
+
7
+ attr_reader :bidding
8
+ attr_reader :winning
9
+ attr_reader :max
10
+
11
+ # TODO: why do i need this?
12
+ attr_reader :bids
13
+ attr_reader :current
14
+ attr_reader :end
15
+ attr_reader :href
16
+ attr_reader :item
17
+ attr_reader :itemid
18
+ attr_reader :seller
19
+
20
+ def initialize(itemid, mechanize)
21
+ super(itemid)
22
+ order_page = mechanize.get(OPEN_ORDERS_URL)
23
+ if order_page.link_with(text: regqt(itemid.to_s))
24
+ @bidding = true
25
+ 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
28
+ else
29
+ @bidding = false
30
+ @winning = false
31
+ @max = '$0.00'
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ def regqt(itemid)
38
+ /#{Regexp.quote(itemid.to_s)}/
39
+ end
40
+
41
+ def happy?(src)
42
+ src.include?('happy')
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,35 @@
1
+ require 'thor'
2
+
3
+ module Goodwill
4
+ class CLI < Thor
5
+ class_option :verbose, type: :boolean
6
+ class_option :username
7
+ class_option :password
8
+
9
+ def initialize(*args)
10
+ super
11
+ return unless args[2][:current_command].name == 'help'
12
+
13
+ username = options[:username] || ask('Username:')
14
+ password = options[:password] || ask('Password:') { |q| q.echo = false }
15
+ @account = Goodwill::Account.new(username, password)
16
+ end
17
+
18
+ desc 'auctions', "List all auctions you're currently bidding on"
19
+ def auctions
20
+ say "Your current auctions:\n"
21
+ tp @account.in_progress
22
+ end
23
+
24
+ desc 'search SEARCH', 'Search for auctions matching SEARCH'
25
+ def search(search)
26
+ say 'Your search results:'
27
+ tp @account.search(search)
28
+ end
29
+
30
+ desc 'bid ITEMID MAXBID', 'Bid MAXBID on ITEMID'
31
+ def bid(itemid, maxbid)
32
+ @accounts.bid(itemid, maxbid)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,12 @@
1
+ module Goodwill
2
+ module CSSPaths
3
+ # Auction Page
4
+ # 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 > tbody > tr:nth-child(6) > td'
8
+ 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
+ end
12
+ end
@@ -0,0 +1,23 @@
1
+ require 'logger'
2
+
3
+ module Goodwill
4
+ module Logging
5
+ def logger
6
+ Logging.logger
7
+ end
8
+
9
+ class << self
10
+ def level
11
+ @level ||= Logger::WARN
12
+ end
13
+
14
+ attr_writer :level
15
+
16
+ def logger
17
+ @logger ||= Logger.new(STDOUT)
18
+ @logger.level = level
19
+ @logger
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,49 @@
1
+ require 'mechanize'
2
+ require 'pry'
3
+
4
+ require 'goodwill/urlpaths'
5
+
6
+ module Goodwill
7
+ module Mechanize
8
+ def mechanize
9
+ Mechanize.mechanize
10
+ end
11
+
12
+ class << self
13
+ include URLPaths
14
+
15
+ def username
16
+ @username ||= nil
17
+ end
18
+
19
+ attr_writer :username
20
+
21
+ def password
22
+ @password ||= nil
23
+ end
24
+
25
+ attr_writer :password
26
+
27
+ def logged_in?
28
+ @logged_in ||= false
29
+ end
30
+
31
+ def mechanize
32
+ @mechanize ||= ::Mechanize.new
33
+ login
34
+ @mechanize
35
+ end
36
+
37
+ def login
38
+ return true if logged_in?
39
+ @mechanize.get(LOGIN_URL) do |page|
40
+ my_page = page.form_with(action: 'dologin.asp') do |f|
41
+ f.buyerid = @username
42
+ f.buyerpasswd = @password
43
+ end.click_button
44
+ @logged_in = my_page.links.map(&:to_s).include? 'My shopgoodwill'
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,8 @@
1
+ module Goodwill
2
+ 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
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ module Goodwill
2
+ VERSION = '0.1.0'
3
+ end
metadata ADDED
@@ -0,0 +1,181 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: goodwill
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Brandon Burnett
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-10-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '10.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '10.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.34'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.34'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.10'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: highline
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.7'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.7'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mechanize
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.7'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.7'
97
+ - !ruby/object:Gem::Dependency
98
+ name: table_print
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.5'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.5'
111
+ - !ruby/object:Gem::Dependency
112
+ name: thor
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.19'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.19'
125
+ description: Allows you to perform basic auction management, bidding, and searching
126
+ from ruby.
127
+ email:
128
+ - gentoolicious@gmail.com
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - ".env"
134
+ - ".gitignore"
135
+ - ".rspec"
136
+ - ".travis.yml"
137
+ - Gemfile
138
+ - Gemfile.old
139
+ - LICENSE.txt
140
+ - README.md
141
+ - Rakefile
142
+ - bin/console
143
+ - bin/goodwill
144
+ - bin/setup
145
+ - goodwill.gemspec
146
+ - lib/goodwill.rb
147
+ - lib/goodwill/account.rb
148
+ - lib/goodwill/auction.rb
149
+ - lib/goodwill/biddingauction.rb
150
+ - lib/goodwill/cli.rb
151
+ - lib/goodwill/csspaths.rb
152
+ - lib/goodwill/logger.rb
153
+ - lib/goodwill/mechanize.rb
154
+ - lib/goodwill/urlpaths.rb
155
+ - lib/goodwill/version.rb
156
+ homepage: https://github.com/dudemcbacon/goodwill
157
+ licenses:
158
+ - MIT
159
+ metadata:
160
+ allowed_push_host: https://rubygems.org
161
+ post_install_message:
162
+ rdoc_options: []
163
+ require_paths:
164
+ - lib
165
+ required_ruby_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
+ required_rubygems_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ requirements: []
176
+ rubyforge_project:
177
+ rubygems_version: 2.4.5
178
+ signing_key:
179
+ specification_version: 4
180
+ summary: Basic auction management for ShopGoodwil.com
181
+ test_files: []