class RuWoCo

Constants

API_ENDPOINT
HTTP_GET
HTTP_POST

Attributes

api_url[RW]
consumer_key[RW]
consumer_secret[RW]
is_ssl[RW]

Public Class Methods

new(consumer_key, consumer_secret, store_url, is_ssl = true) click to toggle source
# File lib/ruwoco.rb, line 16
def initialize(consumer_key, consumer_secret, store_url, is_ssl = true)
    if consumer_key && consumer_secret && store_url
        @consumer_key = consumer_key
        @consumer_secret = consumer_secret
        @api_url = store_url + API_ENDPOINT
        @is_ssl = is_ssl
    elsif !consumer_key
        raise "Consumer key missing"
    elsif !consumer_secret
        raise "Consumer secret missing"
    else
        raise "Store URL missing"
    end
end

Public Instance Methods

generate_oauth_signature(endpoint, params, method) click to toggle source
# File lib/ruwoco.rb, line 147
def generate_oauth_signature(endpoint, params, method)
    base_request_uri = CGI::escape(@api_url + endpoint)

    query_params = []
    params.each { |key, value| query_params.push(CGI::escape(key) + "%3D" + CGI::escape(value)) }

    query_string = "%26".join(query_params)

    string_to_sign = method + "&" + base_request_uri + '&' + query_string

    return Base64.strict_encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), @consumer_secret, string_to_sign))
end
get_coupon(coupon_id) click to toggle source
# File lib/ruwoco.rb, line 59
def get_coupon(coupon_id)
   return make_api_call("coupons/#{coupon_id}")
end
get_coupon_by_code(coupon_code) click to toggle source
# File lib/ruwoco.rb, line 67
def get_coupon_by_code(coupon_code)
    return make_api_call("coupons/code/#{coupon_code}") 
end
get_coupons(params = {}) click to toggle source
# File lib/ruwoco.rb, line 55
def get_coupons(params = {})
    return make_api_call("coupons", params)
end
get_coupons_count() click to toggle source
# File lib/ruwoco.rb, line 63
def get_coupons_count()
    return make_api_call("coupons/count")
end
get_customer(customer_id) click to toggle source
# File lib/ruwoco.rb, line 75
def get_customer(customer_id)
    return make_api_call("customers/#{customer_id}")
end
get_customer_by_email(email) click to toggle source
# File lib/ruwoco.rb, line 79
def get_customer_by_email(email)
    return make_api_call("customers/email/#{email}")
end
get_customer_orders(customer_id) click to toggle source
# File lib/ruwoco.rb, line 87
def get_customer_orders(customer_id)
    return make_api_call("customers/#{customer_id}/orders")
end
get_customers(params = {}) click to toggle source
# File lib/ruwoco.rb, line 71
def get_customers(params = {})
    return make_api_call("customers", params)
end
get_customers_count() click to toggle source
# File lib/ruwoco.rb, line 83
def get_customers_count()
    return make_api_call("customers/count")
end
get_index() click to toggle source
# File lib/ruwoco.rb, line 31
def get_index()
   return make_api_call() 
end
get_order(order_id) click to toggle source
# File lib/ruwoco.rb, line 39
def get_order(order_id)
    return make_api_call("orders/#{order_id}")
end
get_order_notes(order_id) click to toggle source
# File lib/ruwoco.rb, line 47
def get_order_notes(order_id)
    return make_api_call("orders/#{order_id}/notes")
end
get_orders(params = {}) click to toggle source
# File lib/ruwoco.rb, line 35
def get_orders(params = {})
    return make_api_call("orders", params)
end
get_orders_count() click to toggle source
# File lib/ruwoco.rb, line 43
def get_orders_count()
    return make_api_call("orders/count")
end
get_product(product_id) click to toggle source
# File lib/ruwoco.rb, line 95
def get_product(product_id)
    return make_api_call("products/#{product_id}")
end
get_products() click to toggle source
# File lib/ruwoco.rb, line 91
def get_products()
    return make_api_call("products")
end
get_products_count() click to toggle source
# File lib/ruwoco.rb, line 99
def get_products_count()
    return make_api_call("products/count")
end
get_reports(params = {}) click to toggle source
# File lib/ruwoco.rb, line 103
def get_reports(params = {})
    return make_api_call("reports")
end
get_sales_report(params = {}) click to toggle source
# File lib/ruwoco.rb, line 107
def get_sales_report(params = {})
    return make_api_call("reports/sales", params)
end
get_top_sellers_report(params = {}) click to toggle source
# File lib/ruwoco.rb, line 111
def get_top_sellers_report(params = {})
    return make_api_call("reports/sales/top_sellers", params)
end
make_api_call(endpoint, params = {}, method='GET') click to toggle source
# File lib/ruwoco.rb, line 115
def make_api_call(endpoint, params = {}, method='GET')
    if (!@is_ssl)
        params[:oauth_consumer_key] = @consumer_key
        params[:oauth_nonce] = Digest::SHA1.hexdigest(Time.new.to_i)
        params[:oauth_signature_method] = 'HMAC-256'
        params[:oauth_timestamp] = Time.new.to_i
        params[:oauth_signature] = generate_oauth_signature(endpoint, params, method)
    end

    if (method == HTTP_GET)
        query = URI.encode_www_form(params)
        uri = URI(@api_url + endpoint + '?' + query)
        http = Net::HTTP.new(uri.host, uri.port)
        http.use_ssl = true
        req = Net::HTTP::Get.new(uri.request_uri)
        req.basic_auth(@consumer_key, @consumer_secret)
        res = http.start { |test| test.request(req) }
    elsif (method == HTTP_POST)
        url = URI.parse(@api_url + endpoint)
        req = Net::HTTP::Post.new(url.path)
        req.basic_auth(@consumer_key, @consumer_secret)
        req.body = params.to_json
        sock = Net::HTTP.new(url.host, url.port)
        sock.use_ssl = true
        res = sock.start { |test| test.request(req) }
    else
        raise "Unsupported HTTP operation requested"    
    end

    return res.body.to_json()
end
update_order(order_id, params = {}) click to toggle source
# File lib/ruwoco.rb, line 51
def update_order(order_id, params = {})
    return make_api_call("orders/#{order_id}", params, 'POST')
end