buscape_api 0.5
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/.DS_Store +0 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +32 -0
- data/Rakefile +8 -0
- data/Readme.rdoc +51 -0
- data/buscape_api.gemspec +20 -0
- data/lib/buscape_api.rb +14 -0
- data/lib/buscape_api/base.rb +63 -0
- data/spec/lib/buscape_api/base_spec.rb +9 -0
- data/spec/spec_helper.rb +21 -0
- metadata +68 -0
data/.DS_Store
ADDED
Binary file
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
addressable (2.2.8)
|
5
|
+
ansi (1.4.3)
|
6
|
+
crack (0.3.1)
|
7
|
+
httparty (0.8.3)
|
8
|
+
multi_json (~> 1.0)
|
9
|
+
multi_xml
|
10
|
+
minitest (3.2.0)
|
11
|
+
multi_json (1.3.6)
|
12
|
+
multi_xml (0.5.1)
|
13
|
+
rake (0.9.2.2)
|
14
|
+
require_all (1.2.1)
|
15
|
+
turn (0.9.6)
|
16
|
+
ansi
|
17
|
+
vcr (2.2.2)
|
18
|
+
webmock (1.8.7)
|
19
|
+
addressable (>= 2.2.7)
|
20
|
+
crack (>= 0.1.7)
|
21
|
+
|
22
|
+
PLATFORMS
|
23
|
+
ruby
|
24
|
+
|
25
|
+
DEPENDENCIES
|
26
|
+
httparty
|
27
|
+
minitest
|
28
|
+
rake
|
29
|
+
require_all
|
30
|
+
turn
|
31
|
+
vcr
|
32
|
+
webmock
|
data/Rakefile
ADDED
data/Readme.rdoc
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
= Buscape API
|
2
|
+
|
3
|
+
== Instalation
|
4
|
+
|
5
|
+
gem install buscape_api
|
6
|
+
|
7
|
+
== Usage
|
8
|
+
|
9
|
+
First require the gem:
|
10
|
+
|
11
|
+
require 'buscape_api'
|
12
|
+
|
13
|
+
Then instantiate the Buscape class
|
14
|
+
|
15
|
+
buscape = Buscape.new(:app_id => 'your_app_key')
|
16
|
+
|
17
|
+
The Buscape class takes also two optional parameters which are *:sandbox*(should be true) and *:country_code*(check about it's usage at http://developer.buscape.com/api/)
|
18
|
+
|
19
|
+
An example using all the parameters is:
|
20
|
+
|
21
|
+
buscape = Buscape.new(:app_id => 'your_app_key', :country_code => 'BR', :sandbox => true)
|
22
|
+
|
23
|
+
Now you have the following methods to be used with your object:
|
24
|
+
|
25
|
+
* categories
|
26
|
+
* products
|
27
|
+
* offers
|
28
|
+
* top_products
|
29
|
+
* user_ratings
|
30
|
+
* product_details
|
31
|
+
* seller_details
|
32
|
+
|
33
|
+
After that, use the where method passing the parameters(follow http://developer.buscape.com/api/ parameters usage).
|
34
|
+
|
35
|
+
===Example:
|
36
|
+
|
37
|
+
require 'buscape_api'
|
38
|
+
|
39
|
+
buscape = Buscape.new(:app_id => '12345', :sandbox => true)
|
40
|
+
|
41
|
+
buscape.products.where(:categoryId => 77) # Returns all products of category 77 in array/hash style.
|
42
|
+
|
43
|
+
buscape.top_products.where(:keyword => 'Celular') # Returns all top products that is a Celular
|
44
|
+
|
45
|
+
== Contributing
|
46
|
+
|
47
|
+
Feel free to submit any ideas, issues or pull requests. If you have the time, write some tests/docs(should be simple) for it.
|
48
|
+
|
49
|
+
=== Contributors
|
50
|
+
|
51
|
+
None yet.
|
data/buscape_api.gemspec
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = "buscape_api"
|
5
|
+
s.version = "0.5"
|
6
|
+
s.email = ["t@art-is-t.me"]
|
7
|
+
s.authors = ["Thiago Fernandes Massa"]
|
8
|
+
s.homepage = "http://github.com/thiagofm/buscape_api"
|
9
|
+
s.summary = %q{Buscape API wrapper}
|
10
|
+
s.description = %q{A Buscape API wrapper}
|
11
|
+
|
12
|
+
s.rubyforge_project = "buscape_api"
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
s.add_dependency("httparty", ">= 0.8.3")
|
20
|
+
end
|
data/lib/buscape_api.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "require_all"
|
2
|
+
|
3
|
+
# Loading and requiring all api files
|
4
|
+
require_all 'lib/buscape_api'
|
5
|
+
|
6
|
+
class Buscape
|
7
|
+
def initialize(options = {})
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def method_missing(method, *args)
|
12
|
+
Base.new(@options).send(method, args.first)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
|
3
|
+
class Base
|
4
|
+
include HTTParty
|
5
|
+
|
6
|
+
def initialize(options = {})
|
7
|
+
raise "No :app_id set" unless options.include? :app_id
|
8
|
+
options[:format] = 'json' # JSON is more lightweight than xml
|
9
|
+
@options = options
|
10
|
+
@services = [
|
11
|
+
{ :method => :categories, :service => :findCategoryList },
|
12
|
+
{ :method => :products, :service => :findProductList },
|
13
|
+
{ :method => :offers, :service => :findOffersList, :item => :offer },
|
14
|
+
{ :method => :top_products, :service => :topProducts },
|
15
|
+
{ :method => :user_ratings, :service => :viewUserRatings },
|
16
|
+
{ :method => :product_details, :service => :viewProductDetailst },
|
17
|
+
{ :method => :seller_details, :service => :viewSellerDetails }
|
18
|
+
]
|
19
|
+
@methods = @services.map { |service| service[:method] }
|
20
|
+
@url = base_url
|
21
|
+
end
|
22
|
+
|
23
|
+
def base_url
|
24
|
+
@options[:sandbox] ? "http://sandbox.buscape.com" : "http://bws.buscape.com"
|
25
|
+
end
|
26
|
+
|
27
|
+
def select_service(method)
|
28
|
+
@services.each do |s|
|
29
|
+
@service = s[:service] if s.values.include? method
|
30
|
+
end
|
31
|
+
@url << '/service/' << @service.to_s
|
32
|
+
end
|
33
|
+
|
34
|
+
def set_app_id
|
35
|
+
@url << '/' << @options[:app_id]
|
36
|
+
end
|
37
|
+
|
38
|
+
def select_country
|
39
|
+
@url << '/' << @options[:country_code]
|
40
|
+
end
|
41
|
+
|
42
|
+
def parameterize(options)
|
43
|
+
parameters = String.new
|
44
|
+
|
45
|
+
options.keys.each_with_index do |parameter,index|
|
46
|
+
index == 0 ? @url << "/?#{parameter}=#{options[parameter]}" : @url << "&#{parameter}=#{options[parameter]}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def method_missing(method, *args)
|
51
|
+
if @methods.include? method
|
52
|
+
select_service method
|
53
|
+
set_app_id
|
54
|
+
select_country if @options.include? :country_code
|
55
|
+
self
|
56
|
+
elsif method == :where
|
57
|
+
parameterize args.first
|
58
|
+
response = self.class.get(@url)['Result']
|
59
|
+
else
|
60
|
+
raise NoMethodError
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# require dependancies
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'webmock/minitest'
|
4
|
+
require 'vcr'
|
5
|
+
require 'turn'
|
6
|
+
require 'ap'
|
7
|
+
require 'require_all'
|
8
|
+
|
9
|
+
# require lib
|
10
|
+
require_all 'lib/'
|
11
|
+
|
12
|
+
Turn.config do |c|
|
13
|
+
c.format = :outline
|
14
|
+
c.trace = true
|
15
|
+
c.natural = true
|
16
|
+
end
|
17
|
+
|
18
|
+
VCR.config do |c|
|
19
|
+
c.cassette_library_dir = 'spec/fixtures/buscape_api'
|
20
|
+
c.hook_into :webmock
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: buscape_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.5'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Thiago Fernandes Massa
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-07-09 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: httparty
|
16
|
+
requirement: &2157367040 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.8.3
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2157367040
|
25
|
+
description: A Buscape API wrapper
|
26
|
+
email:
|
27
|
+
- t@art-is-t.me
|
28
|
+
executables: []
|
29
|
+
extensions: []
|
30
|
+
extra_rdoc_files: []
|
31
|
+
files:
|
32
|
+
- .DS_Store
|
33
|
+
- Gemfile
|
34
|
+
- Gemfile.lock
|
35
|
+
- Rakefile
|
36
|
+
- Readme.rdoc
|
37
|
+
- buscape_api.gemspec
|
38
|
+
- lib/buscape_api.rb
|
39
|
+
- lib/buscape_api/base.rb
|
40
|
+
- spec/lib/buscape_api/base_spec.rb
|
41
|
+
- spec/spec_helper.rb
|
42
|
+
homepage: http://github.com/thiagofm/buscape_api
|
43
|
+
licenses: []
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
require_paths:
|
47
|
+
- lib
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ! '>='
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
requirements: []
|
61
|
+
rubyforge_project: buscape_api
|
62
|
+
rubygems_version: 1.8.15
|
63
|
+
signing_key:
|
64
|
+
specification_version: 3
|
65
|
+
summary: Buscape API wrapper
|
66
|
+
test_files:
|
67
|
+
- spec/lib/buscape_api/base_spec.rb
|
68
|
+
- spec/spec_helper.rb
|