lib/voucherify.rb in voucherify-0.8.2 vs lib/voucherify.rb in voucherify-1.0.0

- old
+ new

@@ -1,181 +1,11 @@ -require "voucherify/version" -require "net/http" -require "uri" -require "rest-client" -require "json" +require 'voucherify/version' +require 'voucherify/client' +require 'voucherify/service/customers' +require 'voucherify/service/distributions' +require 'voucherify/service/redemptions' +require 'voucherify/service/validations' +require 'voucherify/service/vouchers' +require 'voucherify/utils' -class Voucherify - def initialize(options) - @backend_url = "https://api.voucherify.io/v1" - @options = options - @headers = { - "X-App-Id" => @options["applicationId"], - "X-App-Token" => @options["clientSecretKey"], - "X-Voucherify-Channel" => "Ruby-SDK", - :accept => :json - } - end - - def get(code) - url = @backend_url + "/vouchers/" + URI.encode(code) - response = RestClient.get(url, @headers) - JSON.parse(response.body) - end - - # List vouchers. Query parameters: - # - code_query - # - limit (default 10) - # - skip (default 0) - # - category - # - campaign - # - customer - # Sample query: { limit: 100, skip: 200, category: "Loyalty" } - def list(query) - url = @backend_url + "/vouchers/" - response = RestClient.get(url, @headers.merge({ :params => query })) - JSON.parse(response.body) - end - - def redemption(code) - url = @backend_url + "/vouchers/" + URI.encode(code) + "/redemption" - response = RestClient.get(url, @headers) - JSON.parse(response.body) - end - - # List redemptions. Sample query (1000 successful redemptions from April 2016): - # { - # limit: 1000, - # page: 0, - # start_date: "2016-04-01T00:00:00", - # end_date: "2016-04-30T23:59:59", - # result: "Success" - # } - def redemptions(query) - url = @backend_url + "/redemptions/" - response = RestClient.get(url, @headers.merge({ :params => query })) - JSON.parse(response.body) - end - - # Sample context: - # { - # tracking_id: "john@lemon.com", - # customer: { - # id: "cust_07sVjVsr71Ewot9lVZSrIVLH", - # source_id: "john@lemon.com", - # name: "John Lemon" - # }, - # order: { - # amount: 1000 - # } - # } - def validate(code, context = {}) - url = @backend_url + "/vouchers/" + URI.encode(code) + "/validate" - - response = RestClient.post(url, context.to_json, @headers.merge({ :content_type => :json })) - JSON.parse(response.body) - end - - def redeem(code, tracking_id = nil) - payload = {} - - if code.is_a? Hash - payload = code - code = payload["voucher"] || payload[:voucher] - payload.delete "voucher" - payload.delete :voucher - end - - url = @backend_url + "/vouchers/" + URI.encode(code) + "/redemption" - url += ("?tracking_id=" + URI.encode(tracking_id)) if tracking_id - - response = RestClient.post(url, payload.to_json, @headers.merge({ :content_type => :json })) - JSON.parse(response.body) - end - - def publish(campaign_name) - url = @backend_url + "/vouchers/publish" - payload = {} - - if campaign_name.is_a? String - url += "?campaign=" + URI.encode(campaign_name) - elsif campaign_name.is_a? Hash - payload = campaign_name - end - - response = RestClient.post(url, payload.to_json, @headers.merge({ :content_type => :json })) - JSON.parse(response.body) - end - - # `code` is optional - will be generated if absent. - # Sample `options` object: - # { - # category: "New Customers", - # type: "DISCOUNT_VOUCHER", - # discount: { - # percent_off: 10.0, - # type: "PERCENT" - # }, - # start_date: "2016-01-01T00:00:00Z", - # expiration_date: "2016-12-31T23:59:59Z", - # redemption: { - # quantity: 100 - # } - # } - def create(code, options = {}) - url = @backend_url + "/vouchers/" - url += URI.encode(code) if code - response = RestClient.post(url, options.to_json, @headers.merge({ :content_type => :json })) - JSON.parse(response.body) - end - - def update(voucher_update) - url = @backend_url + "/vouchers/" + URI.encode(voucher_update["code"]) - response = RestClient.put(url, voucher_update.to_json, @headers.merge({ :content_type => :json })) - JSON.parse(response.body) - end - - def enable(code) - url = @backend_url + "/vouchers/" + URI.encode(code) + "/enable" - response = RestClient.post(url, nil, @headers.merge({ :content_type => :json })) - nil - end - - def disable(code) - url = @backend_url + "/vouchers/" + URI.encode(code) + "/disable" - response = RestClient.post(url, nil, @headers.merge({ :content_type => :json })) - nil - end - - def rollback(redemption_id, tracking_id=nil, reason=nil) - url = @backend_url + "/redemptions/" + URI.encode(redemption_id) + "/rollback" - if tracking_id || reason - url += "?" + URI.encode_www_form(:tracking_id => tracking_id, :reason => reason) - end - response = RestClient.post(url, nil, @headers.merge({ :content_type => :json })) - JSON.parse(response.body) - end - - def create_customer(customer) - url = @backend_url + "/customers/" - response = RestClient.post(url, customer.to_json, @headers.merge({ :content_type => :json })) - JSON.parse(response.body) - end - - def get_customer(customer_id) - url = @backend_url + "/customers/" + customer_id - response = RestClient.get(url, @headers) - JSON.parse(response.body) - end - - def update_customer(customer) - url = @backend_url + "/customers/" + (customer["id"] || customer[:id]) - response = RestClient.put(url, customer.to_json, @headers.merge({ :content_type => :json })) - JSON.parse(response.body) - end - - def delete_customer(customer_id) - url = @backend_url + "/customers/" + customer_id - response = RestClient.delete(url, @headers) - nil - end -end +module Voucherify +end \ No newline at end of file