Class: Dugway::Store
Instance Method Summary collapse
- #account ⇒ Object
- #artist(permalink) ⇒ Object
- #artist_products(permalink) ⇒ Object
- #artists ⇒ Object
- #categories ⇒ Object
- #category(permalink) ⇒ Object
- #category_products(permalink) ⇒ Object
- #country ⇒ Object
- #currency ⇒ Object
- #custom_pages ⇒ Object
-
#initialize(subdomain) ⇒ Store
constructor
A new instance of Store.
- #locale ⇒ Object
- #next_product(permalink) ⇒ Object
- #page(permalink) ⇒ Object
- #pages ⇒ Object
- #previous_product(permalink) ⇒ Object
- #product(permalink) ⇒ Object
- #product_and_option(option_id) ⇒ Object
- #products ⇒ Object
- #search_products(search_terms) ⇒ Object
- #theme_pages ⇒ Object
Constructor Details
#initialize(subdomain) ⇒ Store
Returns a new instance of Store.
11 12 13 |
# File 'lib/dugway/store.rb', line 11 def initialize(subdomain) self.class.base_uri "https://api.bigcartel.com/#{ subdomain }" end |
Instance Method Details
#account ⇒ Object
15 16 17 |
# File 'lib/dugway/store.rb', line 15 def account @account ||= get('/store.json') end |
#artist(permalink) ⇒ Object
65 66 67 |
# File 'lib/dugway/store.rb', line 65 def artist(permalink) lookup(permalink, artists) end |
#artist_products(permalink) ⇒ Object
69 70 71 |
# File 'lib/dugway/store.rb', line 69 def artist_products(permalink) lookup_products(permalink, 'artists') end |
#artists ⇒ Object
61 62 63 |
# File 'lib/dugway/store.rb', line 61 def artists account.has_key?('artists') ? account['artists'] : [] end |
#categories ⇒ Object
49 50 51 |
# File 'lib/dugway/store.rb', line 49 def categories account.has_key?('categories') ? account['categories'] : [] end |
#category(permalink) ⇒ Object
53 54 55 |
# File 'lib/dugway/store.rb', line 53 def category(permalink) lookup(permalink, categories) end |
#category_products(permalink) ⇒ Object
57 58 59 |
# File 'lib/dugway/store.rb', line 57 def category_products(permalink) lookup_products(permalink, 'categories') end |
#country ⇒ Object
118 119 120 |
# File 'lib/dugway/store.rb', line 118 def country account['country'] end |
#currency ⇒ Object
122 123 124 |
# File 'lib/dugway/store.rb', line 122 def currency account['currency'] end |
#custom_pages ⇒ Object
30 31 32 33 34 35 |
# File 'lib/dugway/store.rb', line 30 def custom_pages @custom_pages ||= begin custom_pages = account.has_key?('pages') ? account['pages'] : [] custom_pages = custom_pages.map { |page| get("/page/#{ page['permalink'] }.json") } end end |
#locale ⇒ Object
126 127 128 |
# File 'lib/dugway/store.rb', line 126 def locale currency['locale'] end |
#next_product(permalink) ⇒ Object
104 105 106 107 108 109 110 111 112 |
# File 'lib/dugway/store.rb', line 104 def next_product(permalink) products.each_with_index do |product, index| if product['permalink'] == permalink && (index + 1) < products.size && next_product = products[index + 1] return next_product end end nil end |
#page(permalink) ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/dugway/store.rb', line 41 def page(permalink) if permalink != 'checkout' lookup(permalink, pages) else { 'name' => 'Checkout', 'permalink' => 'checkout', 'url' => '/checkout', 'category' => 'other' } end end |
#pages ⇒ Object
37 38 39 |
# File 'lib/dugway/store.rb', line 37 def pages @pages ||= theme_pages + custom_pages end |
#previous_product(permalink) ⇒ Object
94 95 96 97 98 99 100 101 102 |
# File 'lib/dugway/store.rb', line 94 def previous_product(permalink) products.each_with_index do |product, index| if product['permalink'] == permalink && index > 0 && previous_product = products[index - 1] return previous_product end end nil end |
#product(permalink) ⇒ Object
78 79 80 |
# File 'lib/dugway/store.rb', line 78 def product(permalink) lookup(permalink, products) end |
#product_and_option(option_id) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/dugway/store.rb', line 82 def product_and_option(option_id) products.each do |product| product['options'].each do |option| if option['id'] == option_id return product, option end end end nil end |
#products ⇒ Object
73 74 75 76 |
# File 'lib/dugway/store.rb', line 73 def products @products ||= get('/products.json') Marshal.load(Marshal.dump(@products)) # Hack to avoid data munging elsewhere? end |
#search_products(search_terms) ⇒ Object
114 115 116 |
# File 'lib/dugway/store.rb', line 114 def search_products(search_terms) products.select { |p| p['name'].downcase.include?(search_terms.downcase) || p['description'].downcase.include?(search_terms.downcase) } end |
#theme_pages ⇒ Object
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/dugway/store.rb', line 19 def theme_pages [ { 'name' => 'Home', 'permalink' => 'home', 'url' => '/', 'category' => 'theme' }, { 'name' => 'Products', 'permalink' => 'products', 'url' => '/products', 'category' => 'theme' }, { 'name' => 'Product', 'permalink' => 'product', 'url' => '/product', 'category' => 'theme' }, { 'name' => 'Cart', 'permalink' => 'cart', 'url' => '/cart', 'category' => 'theme' }, { 'name' => 'Contact', 'permalink' => 'contact', 'url' => '/contact', 'category' => 'theme' }, { 'name' => 'Maintenance', 'permalink' => 'maintenance', 'url' => '/maintenance', 'category' => 'theme' } ] end |