bigcartel 0.1.8 → 0.1.9

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/README.mkd CHANGED
@@ -12,16 +12,21 @@ Usage
12
12
  require 'bigcartel'
13
13
  require 'pp'
14
14
 
15
- s = BigCartel.store("tonkapark")
16
-
15
+ s = BigCartel.store("tonkapark")
16
+
17
17
  pp s.description
18
18
 
19
19
  s.products.each do |product|
20
20
  pp product.name
21
- pp product.img.thumb
21
+ pp product.image.thumb
22
22
  end
23
23
 
24
24
 
25
+ s = BigCartel.store("ugmonk")
26
+ #return products by category
27
+ products = s.products_by_category("prints")
28
+
29
+
25
30
 
26
31
  Copyright
27
32
  ---------
@@ -1,3 +1,3 @@
1
1
  module BigCartel
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.9"
3
3
  end
data/lib/bigcartel.rb CHANGED
@@ -30,29 +30,82 @@ module BigCartel
30
30
 
31
31
  class Store < Base
32
32
 
33
- attr_reader :id, :description, :categories, :website, :products_count, :pages, :name, :url, :currency, :country, :artists
33
+ attr_reader :id, :description, :categories, :website, :products_count, :pages, :name, :url, :currency, :country, :artists, :currency_sign, :products
34
34
 
35
35
  def initialize(id, data={})
36
36
  @id = id
37
37
  @description = data['description']
38
38
  @website = data['website']
39
39
  @products_count = data['products_count']
40
- @pages = data['pages'].map{|p| Page.new(data['url'], p)} unless data['pages'].blank?
40
+ @pages = data['pages'].map{|p| Page.add(id, data['url'], p)} unless data['pages'].blank?
41
41
  @name = data['name']
42
42
  @url = data['url']
43
43
  @currency = data['currency']['code']
44
+ @currency_sign = data['currency']['sign']
44
45
  @country = data['country']['name']
45
- @categories = data['categories'].map{|cat| Category.new(data['url'], cat)} unless data['categories'].blank?
46
- @artists = data['artists'].map{|cat| Artist.new(data['url'], cat)} unless data['artists'].blank?
46
+ @categories = data['categories'].blank? ? [] : data['categories'].map{|cat| Category.new(data['url'], cat)}
47
+ @artists = data['artists'].blank? ? [] : data['artists'].map{|cat| Artist.new(data['url'], cat)}
48
+ @products = Product.all(@id, @url)
47
49
  end
48
50
 
49
51
  def self.find(id)
50
52
  Store.new(id, self.fetch(id))
51
53
  end
52
54
 
53
- def products
54
- Product.all(@id, @url)
55
+ def product_find(permalink)
56
+ #self.products.select{|f| f["permalink"] == permalink}
57
+ @products.each do |p|
58
+ if p.permalink == permalink
59
+ return p
60
+ end
61
+ end
62
+ end
63
+
64
+ def page(permalink)
65
+ self.pages.each do |p|
66
+ return p if p.permalink == permalink
67
+ end
55
68
  end
69
+
70
+ def category(permalink)
71
+ self.categories.each do |cat, idx|
72
+ return cat if cat.permalink == permalink
73
+ end
74
+ end
75
+
76
+ def artist(permalink)
77
+ self.artists.each do |a, idx|
78
+ return a if a.permalink == permalink
79
+ end
80
+ end
81
+
82
+ def products_by_category(cat)
83
+ result = []
84
+ if self.categories.size > 0
85
+ self.products.each do |p|
86
+ cats = {}
87
+ if p.categories.size > 0
88
+ cats = p.categories.collect {|c| c.permalink}
89
+ result << p if cats.include?(cat)
90
+ end
91
+ end
92
+ end
93
+ result
94
+ end
95
+
96
+ def products_by_artist(slug)
97
+ result = []
98
+ if self.artists.size > 0
99
+ self.products.each do |p|
100
+ temp = {}
101
+ if p.artists.size > 0
102
+ temp = p.artists.collect {|a| a.permalink}
103
+ result << p if temp.include?(slug)
104
+ end
105
+ end
106
+ end
107
+ result
108
+ end
56
109
 
57
110
  protected
58
111
  def self.fetch(id)
@@ -91,38 +144,62 @@ module BigCartel
91
144
 
92
145
 
93
146
  class Page < Base
94
- attr_reader :name, :permalink, :url
147
+ attr_reader :id, :name, :permalink, :url, :content, :category
95
148
  def initialize(store_url, data={})
149
+ @id = data['id']
96
150
  @name = data['name']
97
151
  @permalink = data['permalink']
98
152
  @url = "#{store_url}/#{data['permalink']}"
153
+ @content = data['content']
154
+ @category = data['category']
99
155
  end
156
+
157
+ def self.add(id, store_url, page)
158
+ Page.new(store_url, self.fetch(id, page['permalink']))
159
+ end
160
+
161
+ protected
162
+ def self.fetch(id, page)
163
+ get("/#{id}/page/#{page}.js", :headers => {'Accept' => 'application/json'})
164
+ end
100
165
  end
101
166
 
102
167
  class Product < Base
103
- attr_reader :name, :permalink, :url, :description, :artists, :on_sale, :status, :categories, :price, :position, :url, :id, :tax, :images, :shipping, :options,:default_price
168
+ attr_reader :name, :permalink, :url, :full_url, :description, :artists, :on_sale, :status, :categories, :price, :position, :url, :id, :tax, :images, :shipping, :options,:default_price,:image, :image_count
104
169
  def initialize(store_url, data={})
105
170
  @name = data['name']
106
171
  @description = data['description']
107
- @artists = data['artists'].map{|cat| Artist.new(data['url'], cat)} unless data['artists'].blank?
172
+ @artists = data['artists'].blank? ? [] : data['artists'].map{|cat| Artist.new(data['url'], cat)}
108
173
  @on_sale= data['on_sale']
109
174
  @status = data['status']
110
- @categories = data['categories'].map{|cat| Category.new(data['url'], cat)} unless data['categories'].blank?
175
+ @categories = data['categories'].blank? ? [] : data['categories'].map{|cat| Category.new(data['url'], cat)}
111
176
  @price = data['price']
112
177
  @default_price = data['default_price']
113
178
  @position = data['position']
114
- @url = "#{store_url}#{data['url']}"
179
+ @full_url = "#{store_url}#{data['url']}"
180
+ @url = "#{data['url']}"
115
181
  @id = data['id']
116
182
  @tax = data['tax']
117
183
  @permalink = data['permalink']
118
184
  @images = data['images'].blank? ? [] : data['images'].map{|img| Image.new(img)}
185
+ @image_count = data['images'].blank? ? 0 : data['images'].size
119
186
  @shipping = data['shipping'].map{|ship| Shipping.new(ship)} unless data['shipping'].blank?
120
187
  @options = data['options'].map{|opt| ProductOption.new(opt)} unless data['options'].blank?
188
+ @image = Image.new(data['images'][0]) unless data['images'].blank?
189
+ end
190
+
191
+ def has_default_option
192
+ names = {}
193
+ if self.options.size <= 1
194
+ names = self.options.collect {|x| x.name }
195
+ end
196
+ return names.include?("Default")
197
+ end
198
+
199
+ def option
200
+ self.options.first
121
201
  end
122
202
 
123
- def img
124
- self.images.first
125
- end
126
203
 
127
204
  def self.all(id, store_url)
128
205
  self.fetch(id).map{|p| Product.new(store_url, p)}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bigcartel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-07-22 00:00:00.000000000 -05:00
13
- default_executable:
12
+ date: 2011-07-26 00:00:00.000000000Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rspec
17
- requirement: &10848552 !ruby/object:Gem::Requirement
16
+ requirement: &9857376 !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ~>
@@ -22,10 +21,10 @@ dependencies:
22
21
  version: '2.3'
23
22
  type: :development
24
23
  prerelease: false
25
- version_requirements: *10848552
24
+ version_requirements: *9857376
26
25
  - !ruby/object:Gem::Dependency
27
26
  name: httparty
28
- requirement: &10848240 !ruby/object:Gem::Requirement
27
+ requirement: &9857076 !ruby/object:Gem::Requirement
29
28
  none: false
30
29
  requirements:
31
30
  - - ~>
@@ -33,7 +32,7 @@ dependencies:
33
32
  version: 0.7.3
34
33
  type: :runtime
35
34
  prerelease: false
36
- version_requirements: *10848240
35
+ version_requirements: *9857076
37
36
  description: A Ruby wrapper for the Big Cartel External REST API
38
37
  email:
39
38
  - matt@tonkapark.com
@@ -50,7 +49,6 @@ files:
50
49
  - lib/bigcartel/version.rb
51
50
  - spec/bigcartel_spec.rb
52
51
  - spec/helper.rb
53
- has_rdoc: true
54
52
  homepage: ''
55
53
  licenses: []
56
54
  post_install_message:
@@ -71,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
69
  version: '0'
72
70
  requirements: []
73
71
  rubyforge_project: bigcartel
74
- rubygems_version: 1.5.2
72
+ rubygems_version: 1.7.2
75
73
  signing_key:
76
74
  specification_version: 3
77
75
  summary: Ruby wrapper for the Big Cartel API