class BookableCloud::ApiClient

Public Class Methods

new(config) click to toggle source

class Response

attr_reader :json, :success

def initialize(success: true, json: nil)
  @success = success
  @json = json
end

end

# File lib/bookable_cloud/api_client.rb, line 17
def initialize(config)
  @config = config
end

Public Instance Methods

base_url() click to toggle source
# File lib/bookable_cloud/api_client.rb, line 25
def base_url
  tenant_url.to_s + "/admin"
end
get_asset(asset) click to toggle source
# File lib/bookable_cloud/api_client.rb, line 50
def get_asset(asset)
  json = get_json "/themes/#{@config["theme_id"]}/assets.json", params: { key: asset }

  json["asset"]
end
get_theme() click to toggle source
# File lib/bookable_cloud/api_client.rb, line 29
def get_theme
  uri = URI.parse(base_url + "/themes/#{@config["theme_id"]}.json")

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = Net::HTTP::Get.new(uri.request_uri)
  request["Authorization"] = "Bearer #{@config["access_token"]}"


  http.request(request)
end
list_assets() click to toggle source
# File lib/bookable_cloud/api_client.rb, line 42
def list_assets
  json = get_json "/themes/#{@config["theme_id"]}/assets.json"

  if assets = json["assets"]
    assets.collect { |asset| asset["key"] }
  end
end
tenant_url() click to toggle source
# File lib/bookable_cloud/api_client.rb, line 21
def tenant_url
  @config["tenant_url"]
end
update_asset(key, body) click to toggle source
# File lib/bookable_cloud/api_client.rb, line 56
def update_asset(key, body)
  json = put_json "/themes/#{@config["theme_id"]}/assets.json", params: {
    "asset[key]" => key,
    "asset[value]" => body
  }
end

Private Instance Methods

get_json(url, params: nil) click to toggle source
# File lib/bookable_cloud/api_client.rb, line 65
def get_json(url, params: nil)
  uri = URI.parse(base_url + url)
  uri.query = URI.encode_www_form(params) if params

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = Net::HTTP::Get.new(uri.request_uri)
  request["Authorization"] = "Bearer #{@config["access_token"]}"

  response = http.request(request)

  JSON.parse(response.body)
end
put_json(url, params: nil) click to toggle source
# File lib/bookable_cloud/api_client.rb, line 80
def put_json(url, params: nil)
  uri = URI.parse(base_url + url)

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = Net::HTTP::Put.new(uri.request_uri)
  request.set_form_data(params) if params
  request["Authorization"] = "Bearer #{@config["access_token"]}"

  response = http.request(request)

  # p response.body
  JSON.parse(response.body)
end