shopstyle 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/lib/shopstyle.rb +51 -0
- data/shopstyle.gemspec +20 -0
- metadata +85 -0
data/lib/shopstyle.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
class ShopStyleError < StandardError
|
2
|
+
attr_accessor :data
|
3
|
+
end
|
4
|
+
|
5
|
+
module ShopStyleHelper
|
6
|
+
require 'cgi'
|
7
|
+
def query_from_params params
|
8
|
+
params.map { |key, value| "%s=%s" % [escape(key),escape(value)] }.join('&')
|
9
|
+
end
|
10
|
+
|
11
|
+
def escape value
|
12
|
+
CGI::escape(value.to_s)
|
13
|
+
end
|
14
|
+
|
15
|
+
def url_for host, method, params
|
16
|
+
"http://#{host}/action/#{method}?#{query_from_params(params)}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class ShopStyle
|
21
|
+
include ShopStyleHelper
|
22
|
+
require 'yajl'
|
23
|
+
require 'patron'
|
24
|
+
|
25
|
+
HOST = 'api.shopstyle.com'
|
26
|
+
DEFAULT_FORMAT = 'json'
|
27
|
+
def initialize api_key
|
28
|
+
@api_key = api_key
|
29
|
+
@session = Patron::Session.new
|
30
|
+
end
|
31
|
+
|
32
|
+
def request method, params = {}
|
33
|
+
params[:pid] = @api_key
|
34
|
+
params[:format] ||= DEFAULT_FORMAT
|
35
|
+
tries = 0
|
36
|
+
begin
|
37
|
+
raw_response = @session.get(url_for(HOST, method, params))
|
38
|
+
p raw_response
|
39
|
+
rescue Patron::HostResolutionError, Patron::ConnectionFailed
|
40
|
+
retry if tries < 5
|
41
|
+
tries += 1
|
42
|
+
end
|
43
|
+
|
44
|
+
case params[:format]
|
45
|
+
when 'json'
|
46
|
+
Yajl::Parser.parse(raw_response.body)
|
47
|
+
else
|
48
|
+
raise ShopStyleError.new('Unknown format %s', params[:format])
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/shopstyle.gemspec
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
spec = Gem::Specification.new do |s|
|
2
|
+
s.name = 'shopstyle'
|
3
|
+
s.version = '0.1'
|
4
|
+
s.date = '2010-06-23'
|
5
|
+
s.summary = "A simple clent for the ShopStyle API"
|
6
|
+
s.description = "A Ruby implementation of the ShopStyle API"
|
7
|
+
|
8
|
+
s.homepage = "http://github.com/jessefarmer/shopstyle"
|
9
|
+
|
10
|
+
s.authors = ["Jesse Farmer"]
|
11
|
+
s.email = "jesse@bumbalabs.com"
|
12
|
+
|
13
|
+
s.add_dependency('yajl-ruby')
|
14
|
+
s.add_dependency('patron')
|
15
|
+
|
16
|
+
s.has_rdoc = false
|
17
|
+
|
18
|
+
s.files = ["shopstyle.gemspec",
|
19
|
+
"lib/shopstyle.rb"]
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: shopstyle
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
version: "0.1"
|
9
|
+
platform: ruby
|
10
|
+
authors:
|
11
|
+
- Jesse Farmer
|
12
|
+
autorequire:
|
13
|
+
bindir: bin
|
14
|
+
cert_chain: []
|
15
|
+
|
16
|
+
date: 2010-06-23 00:00:00 -07:00
|
17
|
+
default_executable:
|
18
|
+
dependencies:
|
19
|
+
- !ruby/object:Gem::Dependency
|
20
|
+
name: yajl-ruby
|
21
|
+
prerelease: false
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
segments:
|
27
|
+
- 0
|
28
|
+
version: "0"
|
29
|
+
type: :runtime
|
30
|
+
version_requirements: *id001
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: patron
|
33
|
+
prerelease: false
|
34
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
segments:
|
39
|
+
- 0
|
40
|
+
version: "0"
|
41
|
+
type: :runtime
|
42
|
+
version_requirements: *id002
|
43
|
+
description: A Ruby implementation of the ShopStyle API
|
44
|
+
email: jesse@bumbalabs.com
|
45
|
+
executables: []
|
46
|
+
|
47
|
+
extensions: []
|
48
|
+
|
49
|
+
extra_rdoc_files: []
|
50
|
+
|
51
|
+
files:
|
52
|
+
- shopstyle.gemspec
|
53
|
+
- lib/shopstyle.rb
|
54
|
+
has_rdoc: true
|
55
|
+
homepage: http://github.com/jessefarmer/shopstyle
|
56
|
+
licenses: []
|
57
|
+
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
segments:
|
68
|
+
- 0
|
69
|
+
version: "0"
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
version: "0"
|
77
|
+
requirements: []
|
78
|
+
|
79
|
+
rubyforge_project:
|
80
|
+
rubygems_version: 1.3.6
|
81
|
+
signing_key:
|
82
|
+
specification_version: 3
|
83
|
+
summary: A simple clent for the ShopStyle API
|
84
|
+
test_files: []
|
85
|
+
|