agent_cooper 0.0.1
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.
- data/.gitignore +5 -0
- data/Gemfile +4 -0
- data/Rakefile +18 -0
- data/VERSION +3 -0
- data/agent_cooper.gemspec +38 -0
- data/features/finder.feature +64 -0
- data/features/merchandiser.feature +34 -0
- data/features/shopper.feature +75 -0
- data/features/step_definitions/agent_cooper_steps.rb +19 -0
- data/features/step_definitions/finder_steps.rb +3 -0
- data/features/step_definitions/merchandiser_steps.rb +3 -0
- data/features/step_definitions/shopper_steps.rb +3 -0
- data/features/support/env.rb +25 -0
- data/features/support/vcr.rb +9 -0
- data/lib/agent_cooper/finder.rb +20 -0
- data/lib/agent_cooper/merchandiser.rb +24 -0
- data/lib/agent_cooper/request.rb +43 -0
- data/lib/agent_cooper/response.rb +26 -0
- data/lib/agent_cooper/shopper.rb +26 -0
- data/lib/agent_cooper/version.rb +3 -0
- data/lib/agent_cooper.rb +8 -0
- data/spec/agent_cooper/finder_spec.rb +19 -0
- data/spec/agent_cooper/merchandiser_spec.rb +18 -0
- data/spec/agent_cooper/request_spec.rb +38 -0
- data/spec/agent_cooper/response_spec.rb +7 -0
- data/spec/agent_cooper/shopper_spec.rb +18 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/support/ebay.yml.sample +1 -0
- metadata +270 -0
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
require 'cucumber/rake/task'
|
3
|
+
require 'rspec/core/rake_task'
|
4
|
+
|
5
|
+
Bundler::GemHelper.install_tasks
|
6
|
+
|
7
|
+
desc 'Run all specs in spec directory'
|
8
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
9
|
+
t.pattern = "spec/**/*_spec.rb"
|
10
|
+
t.rspec_opts = %w(-fd -c)
|
11
|
+
end
|
12
|
+
|
13
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
14
|
+
t.cucumber_opts = "features --format pretty"
|
15
|
+
end
|
16
|
+
|
17
|
+
task :default => [:spec, :features]
|
18
|
+
|
data/VERSION
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "agent_cooper/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "agent_cooper"
|
7
|
+
s.version = AgentCooper::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Ryan Closner"]
|
10
|
+
s.email = ["ryan.closner@gmail.com"]
|
11
|
+
s.homepage = "https://rubygems.org/gems/agent_cooper"
|
12
|
+
s.summary = %q{A Ruby wrapper to the eBay Web Services API}
|
13
|
+
s.description = %q{A Ruby wrapper to the eBay Web Services API}
|
14
|
+
|
15
|
+
s.rubyforge_project = "agent_cooper"
|
16
|
+
|
17
|
+
{
|
18
|
+
'httparty' => '~> 0.7.7',
|
19
|
+
'nokogiri' => '~> 1.4.4'
|
20
|
+
}.each {|lib, version| s.add_runtime_dependency lib, version }
|
21
|
+
|
22
|
+
|
23
|
+
{
|
24
|
+
'bundler' => '~> 1.0.0',
|
25
|
+
'addressable' => '2.2.4',
|
26
|
+
'cucumber' => '~> 0.10.0',
|
27
|
+
'rake' => '~> 0.8.7',
|
28
|
+
'relish' => '~> 0.3.0.pre',
|
29
|
+
'rspec' => '~> 2.5.0',
|
30
|
+
'vcr' => '~> 1.9.0',
|
31
|
+
'webmock' => '~> 1.6.0'
|
32
|
+
}.each {|lib, version| s.add_development_dependency lib, version }
|
33
|
+
|
34
|
+
s.files = `git ls-files`.split("\n")
|
35
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
36
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
37
|
+
s.require_paths = ["lib"]
|
38
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
Feature: Ebay Finder
|
2
|
+
As an API consumer
|
3
|
+
|
4
|
+
Background:
|
5
|
+
Given a new finder request
|
6
|
+
|
7
|
+
Scenario: getSearchKeywordsRecommendation
|
8
|
+
Given the following parameters:
|
9
|
+
| OPERATION-NAME | keywords |
|
10
|
+
| getSearchKeywordsRecommendation | acordian |
|
11
|
+
When I tape the "finder" request as: "get_search_keywords_recommendation"
|
12
|
+
Then the response code should be "200"
|
13
|
+
And the response should have 1 "keywords" nodes
|
14
|
+
|
15
|
+
Scenario: findItemsByKeywords
|
16
|
+
Given the following parameters:
|
17
|
+
| OPERATION-NAME | keywords |
|
18
|
+
| findItemsByKeywords | harry potter phoenix |
|
19
|
+
When I tape the "finder" request as: "find_items_by_keywords"
|
20
|
+
Then the response code should be "200"
|
21
|
+
And the response should have 100 "item" nodes
|
22
|
+
|
23
|
+
Scenario: findItemsByCategory
|
24
|
+
Given the following parameters:
|
25
|
+
| OPERATION-NAME | categoryId |
|
26
|
+
| findItemsByCategory | 10181 |
|
27
|
+
When I tape the "finder" request as: "find_items_by_category"
|
28
|
+
Then the response code should be "200"
|
29
|
+
And the response should have 100 "item" nodes
|
30
|
+
|
31
|
+
Scenario: findItemsAdvanced
|
32
|
+
Given the following parameters:
|
33
|
+
| OPERATION-NAME | keywords |
|
34
|
+
| findItemsAdvanced | tolkien |
|
35
|
+
When I tape the "finder" request as: "find_items_advanced"
|
36
|
+
Then the response code should be "200"
|
37
|
+
And the response should have 100 "item" nodes
|
38
|
+
|
39
|
+
Scenario: findItemsByProduct
|
40
|
+
Given the following parameters:
|
41
|
+
| OPERATION-NAME | productId.@type | productId |
|
42
|
+
| findItemsByProduct | ReferenceID | 53039031 |
|
43
|
+
When I tape the "finder" request as: "find_items_by_product"
|
44
|
+
Then the response code should be "200"
|
45
|
+
And the response should have 100 "item" nodes
|
46
|
+
|
47
|
+
Scenario: findItemsIneBayStores
|
48
|
+
Given the following parameters:
|
49
|
+
| OPERATION-NAME | keywords |
|
50
|
+
| findItemsIneBayStores | harry potter |
|
51
|
+
When I tape the "finder" request as: "find_items_in_ebay_stores"
|
52
|
+
Then the response code should be "200"
|
53
|
+
And the response should have 100 "item" nodes
|
54
|
+
|
55
|
+
|
56
|
+
Scenario: getHistograms
|
57
|
+
Given the following parameters:
|
58
|
+
| OPERATION-NAME | categoryId |
|
59
|
+
| getHistograms | 11233 |
|
60
|
+
When I tape the "finder" request as: "get_histograms"
|
61
|
+
Then the response code should be "200"
|
62
|
+
And the response should have 6 "childCategoryHistogram" nodes
|
63
|
+
|
64
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
Feature: Ebay Merchandiser
|
2
|
+
As an API consumer
|
3
|
+
|
4
|
+
Background:
|
5
|
+
Given a new merchandiser request
|
6
|
+
|
7
|
+
Scenario: getMostWatchedItems
|
8
|
+
Given the following parameters:
|
9
|
+
| OPERATION-NAME | maxResults |
|
10
|
+
| getMostWatchedItems | 3 |
|
11
|
+
When I tape the "merchandiser" request as: "get_most_watched_items"
|
12
|
+
Then the response code should be "200"
|
13
|
+
|
14
|
+
Scenario: getRelatedCategoryItems
|
15
|
+
Given the following parameters:
|
16
|
+
| OPERATION-NAME | itemId |
|
17
|
+
| getRelatedCategoryItems | 170192529715 |
|
18
|
+
When I tape the "merchandiser" request as: "get_related_category_items"
|
19
|
+
Then the response code should be "200"
|
20
|
+
|
21
|
+
Scenario: getSimilarItems
|
22
|
+
Given the following parameters:
|
23
|
+
| OPERATION-NAME | itemId |
|
24
|
+
| getSimilarItems | 280254552262 |
|
25
|
+
When I tape the "merchandiser" request as: "get_similar_items"
|
26
|
+
Then the response code should be "200"
|
27
|
+
|
28
|
+
Scenario: getTopSellingProducts
|
29
|
+
Given the following parameters:
|
30
|
+
| OPERATION-NAME | maxResults |
|
31
|
+
| getTopSellingProducts | 3 |
|
32
|
+
When I tape the "merchandiser" request as: "get_top_selling_products"
|
33
|
+
Then the response code should be "200"
|
34
|
+
|
@@ -0,0 +1,75 @@
|
|
1
|
+
Feature: Ebay Shopper
|
2
|
+
As an API consumer
|
3
|
+
|
4
|
+
Background:
|
5
|
+
Given a new shopper request
|
6
|
+
|
7
|
+
Scenario: FindProducts
|
8
|
+
Given the following parameters:
|
9
|
+
| CALLNAME | QueryKeywords |
|
10
|
+
| FindProducts | harry potter |
|
11
|
+
When I tape the "shopper" request as: "find_products"
|
12
|
+
Then the response code should be "200"
|
13
|
+
|
14
|
+
Scenario: FindHalfProducts
|
15
|
+
Given the following parameters:
|
16
|
+
| CALLNAME | QueryKeywords |
|
17
|
+
| FindHalfProducts | harry potter |
|
18
|
+
When I tape the "shopper" request as: "find_half_products"
|
19
|
+
Then the response code should be "200"
|
20
|
+
|
21
|
+
Scenario: GetSingleItem
|
22
|
+
Given the following parameters:
|
23
|
+
| CALLNAME | ItemID |
|
24
|
+
| GetSingleItem | 110089122715 |
|
25
|
+
When I tape the "shopper" request as: "get_single_item"
|
26
|
+
Then the response code should be "200"
|
27
|
+
|
28
|
+
Scenario: GetItemStatus
|
29
|
+
Given the following parameters:
|
30
|
+
| CALLNAME | ItemID |
|
31
|
+
| GetItemStatus | 110089122715 |
|
32
|
+
When I tape the "shopper" request as: "get_item_status"
|
33
|
+
Then the response code should be "200"
|
34
|
+
|
35
|
+
Scenario: GetShippingCosts
|
36
|
+
Given the following parameters:
|
37
|
+
| CALLNAME | ItemID | DestinationCountryCode | DestinationPostalCode | QuantitySold |
|
38
|
+
| GetShippingCosts | 110089122715 | US | 98122 | 1 |
|
39
|
+
When I tape the "shopper" request as: "get_shipping_costs"
|
40
|
+
Then the response code should be "200"
|
41
|
+
|
42
|
+
Scenario: GetMultipleItems
|
43
|
+
Given the following parameters:
|
44
|
+
| CALLNAME | ItemID |
|
45
|
+
| GetMultipleItems | 190000456297,280000052600,9600579283 |
|
46
|
+
When I tape the "shopper" request as: "get_multiple_items"
|
47
|
+
Then the response code should be "200"
|
48
|
+
|
49
|
+
Scenario: GetUserProfile
|
50
|
+
Given the following parameters:
|
51
|
+
| CALLNAME | UserID |
|
52
|
+
| GetUserProfile | TESTUSER_magicalbookseller |
|
53
|
+
When I tape the "shopper" request as: "get_user_profile"
|
54
|
+
Then the response code should be "200"
|
55
|
+
|
56
|
+
Scenario: FindPopularSearches
|
57
|
+
Given the following parameters:
|
58
|
+
| CALLNAME | QueryKeywords |
|
59
|
+
| FindPopularSearches | dell |
|
60
|
+
When I tape the "shopper" request as: "find_popular_searches"
|
61
|
+
Then the response code should be "200"
|
62
|
+
|
63
|
+
Scenario: FindPopularItems
|
64
|
+
Given the following parameters:
|
65
|
+
| CALLNAME | QueryKeywords |
|
66
|
+
| FindPopularItems | harry original |
|
67
|
+
When I tape the "shopper" request as: "find_popular_items"
|
68
|
+
Then the response code should be "200"
|
69
|
+
|
70
|
+
Scenario: FindReviewsAndGuides
|
71
|
+
Given the following parameters:
|
72
|
+
| CALLNAME | CategoryID |
|
73
|
+
| FindReviewsAndGuides | 177 |
|
74
|
+
When I tape the "shopper" request as: "find_reviews_and_guides"
|
75
|
+
Then the response code should be "200"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Given /^the following parameters:$/ do |table|
|
2
|
+
table.hashes.each do |h|
|
3
|
+
@request << h
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
When /^I tape the "([^"]*)" request as: "([^"]*)"$/ do |service, operation|
|
8
|
+
VCR.use_cassette("#{service}/#{operation}/#{cassette_name}", :record => :new_episodes) do
|
9
|
+
@response = @request.get
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^the response code should be "([^"]*)"$/ do |code|
|
14
|
+
@response.code.should == code.to_i
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^the response should have (\d+) "([^"]*)" nodes$/ do |count, node|
|
18
|
+
@response.xml.css(node).count.should == count.to_i
|
19
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'digest/md5'
|
4
|
+
require 'agent_cooper'
|
5
|
+
|
6
|
+
|
7
|
+
module AgentCooperMethods
|
8
|
+
def ebay
|
9
|
+
@ebay ||= YAML::load_file(File.dirname(__FILE__) + "/../../spec/support/ebay.yml")
|
10
|
+
end
|
11
|
+
|
12
|
+
def ebay_app_id
|
13
|
+
ebay['app_id']
|
14
|
+
end
|
15
|
+
|
16
|
+
def cassette_name
|
17
|
+
Digest::MD5.hexdigest(@request.parameters.to_json)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
World(AgentCooperMethods)
|
22
|
+
|
23
|
+
Before do
|
24
|
+
Request::APP_ID = ebay_app_id
|
25
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module AgentCooper
|
2
|
+
class Finder < Request
|
3
|
+
|
4
|
+
HOST = 'http://svcs.ebay.com/services/search/FindingService/v1'
|
5
|
+
VERSION = '1.9.0'
|
6
|
+
|
7
|
+
def options
|
8
|
+
{
|
9
|
+
'SECURITY-APPNAME' => APP_ID,
|
10
|
+
'SECURITY-VERSION' => VERSION,
|
11
|
+
'RESPONSE-DATA-FORMAT' => ENCODING,
|
12
|
+
'REST-PAYLOAD' => ''
|
13
|
+
}.merge(parameters)
|
14
|
+
end
|
15
|
+
|
16
|
+
def uri
|
17
|
+
"#{HOST}?#{options.to_params}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module AgentCooper
|
2
|
+
class Merchandiser < Request
|
3
|
+
|
4
|
+
HOST = 'http://svcs.ebay.com/MerchandisingService'
|
5
|
+
SERVICE_NAME = 'MerchandisingService'
|
6
|
+
VERSION = '1.4.0'
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
def options
|
11
|
+
{
|
12
|
+
'SERVICE-NAME' => SERVICE_NAME,
|
13
|
+
'SERVICE-VERSION' => VERSION,
|
14
|
+
'RESPONSE-DATA-FORMAT' => ENCODING,
|
15
|
+
'CONSUMER-ID' => APP_ID,
|
16
|
+
'REST-PAYLOAD' => ''
|
17
|
+
}.merge(parameters)
|
18
|
+
end
|
19
|
+
|
20
|
+
def uri
|
21
|
+
"#{HOST}?#{options.to_params}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
|
3
|
+
class Request
|
4
|
+
ENCODING = 'XML'
|
5
|
+
LOCALE_CODES = {
|
6
|
+
:us => 0,
|
7
|
+
:fr => 71,
|
8
|
+
:es => 186,
|
9
|
+
:gb => 3,
|
10
|
+
:de => 77,
|
11
|
+
:nl => 146,
|
12
|
+
:it => 101,
|
13
|
+
:au => 15,
|
14
|
+
:ca => 2
|
15
|
+
}
|
16
|
+
|
17
|
+
attr_accessor :locale
|
18
|
+
|
19
|
+
def initialize(args={})
|
20
|
+
args.each { |k, v| send("#{k}=", v) }
|
21
|
+
end
|
22
|
+
|
23
|
+
def parameters
|
24
|
+
@parameters ||= {}
|
25
|
+
end
|
26
|
+
|
27
|
+
def reset!
|
28
|
+
@parameters = {}
|
29
|
+
end
|
30
|
+
|
31
|
+
def <<(hash)
|
32
|
+
parameters.merge!(hash)
|
33
|
+
end
|
34
|
+
|
35
|
+
def locale
|
36
|
+
@locale ||= :us
|
37
|
+
end
|
38
|
+
|
39
|
+
def get
|
40
|
+
response = HTTParty.get(uri)
|
41
|
+
Response.new(response)
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
class Response
|
4
|
+
|
5
|
+
def initialize(response)
|
6
|
+
@response = response
|
7
|
+
end
|
8
|
+
|
9
|
+
def body
|
10
|
+
response.body
|
11
|
+
end
|
12
|
+
|
13
|
+
def code
|
14
|
+
response.code
|
15
|
+
end
|
16
|
+
|
17
|
+
def xml
|
18
|
+
@xml ||= Nokogiri::XML(body)
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def response
|
24
|
+
@response
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module AgentCooper
|
2
|
+
class Shopper < Request
|
3
|
+
|
4
|
+
HOST = 'http://open.api.ebay.com/shopping'
|
5
|
+
VERSION = '717'
|
6
|
+
|
7
|
+
protected
|
8
|
+
|
9
|
+
def site_id
|
10
|
+
LOCALE_CODES[locale]
|
11
|
+
end
|
12
|
+
|
13
|
+
def options
|
14
|
+
{
|
15
|
+
'APPID' => APP_ID,
|
16
|
+
'RESPONSEENCODING' => ENCODING,
|
17
|
+
'VERSION' => VERSION,
|
18
|
+
'SITEID' => site_id
|
19
|
+
}.merge(parameters)
|
20
|
+
end
|
21
|
+
|
22
|
+
def uri
|
23
|
+
"#{HOST}?#{options.to_params}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/agent_cooper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module AgentCooper
|
4
|
+
describe Finder do
|
5
|
+
subject { Finder }
|
6
|
+
let(:request) { subject.new }
|
7
|
+
|
8
|
+
before(:all) do
|
9
|
+
Request::APP_ID = 'app_id'
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#get" do
|
13
|
+
it "returns a response object" do
|
14
|
+
request.get.should be_a(Response)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module AgentCooper
|
4
|
+
describe Merchandiser do
|
5
|
+
subject { Merchandiser }
|
6
|
+
let(:request) { subject.new }
|
7
|
+
|
8
|
+
before(:all) do
|
9
|
+
Request::APP_ID = 'app_id'
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#get" do
|
13
|
+
it "returns a response object" do
|
14
|
+
request.get.should be_a(Response)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module AgentCooper
|
4
|
+
describe Request do
|
5
|
+
subject { Request }
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@request = subject.new
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "#parameters" do
|
12
|
+
it "returns a hash" do
|
13
|
+
@request.parameters.should be_a(Hash)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#<<" do
|
18
|
+
it "merges a hash into the existing parameters" do
|
19
|
+
@request << {:foo => "bar"}
|
20
|
+
@request.parameters[:foo].should == "bar"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#locale" do
|
25
|
+
it "defaults to :us" do
|
26
|
+
@request.locale.should == :us
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#reset!" do
|
31
|
+
it "resets the parameters to a blank hash" do
|
32
|
+
@request << {:foo => 'bar'}
|
33
|
+
@request.reset!
|
34
|
+
@request.parameters.should_not have_key(:foo)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module AgentCooper
|
4
|
+
describe Shopper do
|
5
|
+
subject { AgentCooper::Shopper }
|
6
|
+
let(:request) { subject.new }
|
7
|
+
|
8
|
+
before(:all) do
|
9
|
+
Request::APP_ID = 'app_id'
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#get" do
|
13
|
+
it "returns a response object" do
|
14
|
+
request.get.should be_a(Response)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
app_id: YOUR_APP_ID
|
metadata
ADDED
@@ -0,0 +1,270 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: agent_cooper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Ryan Closner
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-05-22 00:00:00 -07:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: httparty
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 13
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 7
|
33
|
+
- 7
|
34
|
+
version: 0.7.7
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: nokogiri
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 15
|
46
|
+
segments:
|
47
|
+
- 1
|
48
|
+
- 4
|
49
|
+
- 4
|
50
|
+
version: 1.4.4
|
51
|
+
type: :runtime
|
52
|
+
version_requirements: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: relish
|
55
|
+
prerelease: false
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 961915996
|
62
|
+
segments:
|
63
|
+
- 0
|
64
|
+
- 3
|
65
|
+
- 0
|
66
|
+
- pre
|
67
|
+
version: 0.3.0.pre
|
68
|
+
type: :development
|
69
|
+
version_requirements: *id003
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rake
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
hash: 49
|
79
|
+
segments:
|
80
|
+
- 0
|
81
|
+
- 8
|
82
|
+
- 7
|
83
|
+
version: 0.8.7
|
84
|
+
type: :development
|
85
|
+
version_requirements: *id004
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: addressable
|
88
|
+
prerelease: false
|
89
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - "="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
hash: 15
|
95
|
+
segments:
|
96
|
+
- 2
|
97
|
+
- 2
|
98
|
+
- 4
|
99
|
+
version: 2.2.4
|
100
|
+
type: :development
|
101
|
+
version_requirements: *id005
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: rspec
|
104
|
+
prerelease: false
|
105
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
hash: 27
|
111
|
+
segments:
|
112
|
+
- 2
|
113
|
+
- 5
|
114
|
+
- 0
|
115
|
+
version: 2.5.0
|
116
|
+
type: :development
|
117
|
+
version_requirements: *id006
|
118
|
+
- !ruby/object:Gem::Dependency
|
119
|
+
name: vcr
|
120
|
+
prerelease: false
|
121
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ~>
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
hash: 51
|
127
|
+
segments:
|
128
|
+
- 1
|
129
|
+
- 9
|
130
|
+
- 0
|
131
|
+
version: 1.9.0
|
132
|
+
type: :development
|
133
|
+
version_requirements: *id007
|
134
|
+
- !ruby/object:Gem::Dependency
|
135
|
+
name: bundler
|
136
|
+
prerelease: false
|
137
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ~>
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
hash: 23
|
143
|
+
segments:
|
144
|
+
- 1
|
145
|
+
- 0
|
146
|
+
- 0
|
147
|
+
version: 1.0.0
|
148
|
+
type: :development
|
149
|
+
version_requirements: *id008
|
150
|
+
- !ruby/object:Gem::Dependency
|
151
|
+
name: cucumber
|
152
|
+
prerelease: false
|
153
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ~>
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
hash: 55
|
159
|
+
segments:
|
160
|
+
- 0
|
161
|
+
- 10
|
162
|
+
- 0
|
163
|
+
version: 0.10.0
|
164
|
+
type: :development
|
165
|
+
version_requirements: *id009
|
166
|
+
- !ruby/object:Gem::Dependency
|
167
|
+
name: webmock
|
168
|
+
prerelease: false
|
169
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ~>
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
hash: 15
|
175
|
+
segments:
|
176
|
+
- 1
|
177
|
+
- 6
|
178
|
+
- 0
|
179
|
+
version: 1.6.0
|
180
|
+
type: :development
|
181
|
+
version_requirements: *id010
|
182
|
+
description: A Ruby wrapper to the eBay Web Services API
|
183
|
+
email:
|
184
|
+
- ryan.closner@gmail.com
|
185
|
+
executables: []
|
186
|
+
|
187
|
+
extensions: []
|
188
|
+
|
189
|
+
extra_rdoc_files: []
|
190
|
+
|
191
|
+
files:
|
192
|
+
- .gitignore
|
193
|
+
- Gemfile
|
194
|
+
- Rakefile
|
195
|
+
- VERSION
|
196
|
+
- agent_cooper.gemspec
|
197
|
+
- features/finder.feature
|
198
|
+
- features/merchandiser.feature
|
199
|
+
- features/shopper.feature
|
200
|
+
- features/step_definitions/agent_cooper_steps.rb
|
201
|
+
- features/step_definitions/finder_steps.rb
|
202
|
+
- features/step_definitions/merchandiser_steps.rb
|
203
|
+
- features/step_definitions/shopper_steps.rb
|
204
|
+
- features/support/env.rb
|
205
|
+
- features/support/vcr.rb
|
206
|
+
- lib/agent_cooper.rb
|
207
|
+
- lib/agent_cooper/finder.rb
|
208
|
+
- lib/agent_cooper/merchandiser.rb
|
209
|
+
- lib/agent_cooper/request.rb
|
210
|
+
- lib/agent_cooper/response.rb
|
211
|
+
- lib/agent_cooper/shopper.rb
|
212
|
+
- lib/agent_cooper/version.rb
|
213
|
+
- spec/agent_cooper/finder_spec.rb
|
214
|
+
- spec/agent_cooper/merchandiser_spec.rb
|
215
|
+
- spec/agent_cooper/request_spec.rb
|
216
|
+
- spec/agent_cooper/response_spec.rb
|
217
|
+
- spec/agent_cooper/shopper_spec.rb
|
218
|
+
- spec/spec_helper.rb
|
219
|
+
- spec/support/ebay.yml.sample
|
220
|
+
has_rdoc: true
|
221
|
+
homepage: https://rubygems.org/gems/agent_cooper
|
222
|
+
licenses: []
|
223
|
+
|
224
|
+
post_install_message:
|
225
|
+
rdoc_options: []
|
226
|
+
|
227
|
+
require_paths:
|
228
|
+
- lib
|
229
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
230
|
+
none: false
|
231
|
+
requirements:
|
232
|
+
- - ">="
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
hash: 3
|
235
|
+
segments:
|
236
|
+
- 0
|
237
|
+
version: "0"
|
238
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
239
|
+
none: false
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
hash: 3
|
244
|
+
segments:
|
245
|
+
- 0
|
246
|
+
version: "0"
|
247
|
+
requirements: []
|
248
|
+
|
249
|
+
rubyforge_project: agent_cooper
|
250
|
+
rubygems_version: 1.6.2
|
251
|
+
signing_key:
|
252
|
+
specification_version: 3
|
253
|
+
summary: A Ruby wrapper to the eBay Web Services API
|
254
|
+
test_files:
|
255
|
+
- features/finder.feature
|
256
|
+
- features/merchandiser.feature
|
257
|
+
- features/shopper.feature
|
258
|
+
- features/step_definitions/agent_cooper_steps.rb
|
259
|
+
- features/step_definitions/finder_steps.rb
|
260
|
+
- features/step_definitions/merchandiser_steps.rb
|
261
|
+
- features/step_definitions/shopper_steps.rb
|
262
|
+
- features/support/env.rb
|
263
|
+
- features/support/vcr.rb
|
264
|
+
- spec/agent_cooper/finder_spec.rb
|
265
|
+
- spec/agent_cooper/merchandiser_spec.rb
|
266
|
+
- spec/agent_cooper/request_spec.rb
|
267
|
+
- spec/agent_cooper/response_spec.rb
|
268
|
+
- spec/agent_cooper/shopper_spec.rb
|
269
|
+
- spec/spec_helper.rb
|
270
|
+
- spec/support/ebay.yml.sample
|