zzet/ecwid_gateway

View on GitHub
lib/ecwid_gateway/client.rb

Summary

Maintainability
A
30 mins
Test Coverage
require "weary/client"
require "json"

module EcwidGateway
  class Client < Weary::Client

    required :store_id
    domain EcwidGateway.options[:api_domain]

    def initialize(attrs = {})
      attrs = EcwidGateway.options.merge(attrs)
      Config::VALID_OPTIONS_KEYS.each do |key|
        instance_variable_set("@#{key}".to_sym, attrs[key])
      end
    end

    #Product_API

    get :categories_request, '/api/v1/:store_id/categories' do |resource|
      resource.required :store_id, :parent
    end

    get :products_request, '/api/v1/:store_id/products' do |resource|
      resource.required :store_id, :category
    end

    get :product_request, '/api/v1/:store_id/product' do |resource|
      resource.required :store_id, :id
    end

    get :random_products_request, '/api/v1/:store_id/random_products' do |resource|
      resource.required :store_id, :count
    end

    get :profile_request, '/api/v1/:store_id/profile' do |resource|
      resource.required :store_id
    end

    get :batch_request, '/api/v1/:store_id/batch' do |resource|
      # TODO: Implement
    end

    # Order_API

    get :orders_request, 'api/v1/:store_id/orders' do |resource|
      resource.required :store_id, :secure_auth_key
      resource.optional :date, :from_date, :to_date,
                        :from_update_date, :to_update_date,
                        :order, :from_order, :to_order,
                        :customer_id, :customer_email,
                        :statuses,
                        :limit,
                        :offset
    end

    post :orders_request, 'api/v1/:store_id/orders' do |resource|
      # TODO: Implement
      resource.required :store_id, :secure_auth_key
      resource.optional :date, :from_date, :to_date,
                        :from_update_date, :to_update_date,
                        :order, :from_order, :to_order,
                        :customer_id, :customer_email,
                        :statuses,
                        :limit,
                        :offset
    end

    def get_categories(category = 0)
      request = categories_request({:store_id => @store_id, :parent => category}).perform
      MultiJson.load(request.body)
    end

    def get_products(category)
      request = products_request({:store_id => @store_id, :category => category}).perform
      MultiJson.load(request.body)
    end

    def get_product(product)
      request = product_request({:store_id => @store_id, :id => product}).perform
      MultiJson.load(request.body)
    end

    def get_random_products(count)
      request = random_products_request({:store_id => @store_id, :count => count}).perform
      MultiJson.load(request.body)
    end

    def get_profile
      request = profile_request({:store_id => @store_id}).perform
      MultiJson.load(request.body)
    end

  end
end