agent_cooper 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ *.yml
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in agent_cooper.gemspec
4
+ gemspec
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,3 @@
1
+ module AgentCooper
2
+ VERSION = "0.0.1"
3
+ end
@@ -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,3 @@
1
+ Given /^a new finder request$/ do
2
+ @request = AgentCooper::Finder.new
3
+ end
@@ -0,0 +1,3 @@
1
+ Given /^a new merchandiser request$/ do
2
+ @request = AgentCooper::Merchandiser.new
3
+ end
@@ -0,0 +1,3 @@
1
+ Given /^a new shopper request$/ do
2
+ @request = AgentCooper::Shopper.new
3
+ 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,9 @@
1
+ require 'vcr'
2
+
3
+ VCR.config do |c|
4
+ c.cassette_library_dir = File.dirname(__FILE__) + '/../../spec/fixtures/cassettes'
5
+ c.default_cassette_options = {
6
+ :record => :none,
7
+ :match_requests_on => [:host] }
8
+ c.stub_with :webmock
9
+ 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
@@ -0,0 +1,3 @@
1
+ module AgentCooper
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,8 @@
1
+ require 'agent_cooper/request'
2
+ require 'agent_cooper/response'
3
+ require 'agent_cooper/finder'
4
+ require 'agent_cooper/shopper'
5
+ require 'agent_cooper/merchandiser'
6
+
7
+ module AgentCooper
8
+ end
@@ -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,7 @@
1
+ require 'spec_helper'
2
+
3
+ module AgentCooper
4
+ describe Response do
5
+ subject { AgentCooper::Response }
6
+ end
7
+ 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
@@ -0,0 +1,5 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'rspec'
4
+
5
+ require File.expand_path('../../lib/agent_cooper', __FILE__)
@@ -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