class KeyCDN::Client

Constants

ENDPOINT
METHOD_MAP

Public Class Methods

new(api_key) click to toggle source
# File lib/keycdn.rb, line 18
def initialize(api_key)
    @api_key = api_key
end

Public Instance Methods

del(url, params = {}) click to toggle source
# File lib/keycdn.rb, line 34
def del(url, params = {})
    call url, :delete, params
end
get(url, params = {}) click to toggle source
# File lib/keycdn.rb, line 22
def get(url, params = {})
    call url, :get, params
end
post(url, params = {}) click to toggle source
# File lib/keycdn.rb, line 26
def post(url, params = {})
    call url, :post, params
end
put(url, params = {}) click to toggle source
# File lib/keycdn.rb, line 30
def put(url, params = {})
    call url, :put, params
end

Private Instance Methods

call(url, method, params = {}) click to toggle source
# File lib/keycdn.rb, line 40
def call(url, method, params = {})
    raise ArgumentError, "URL could not be empty" if url.nil? || url.empty?

    url = ENDPOINT + url
    uri = URI(url)

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

    case method
    when :get
        full_url = encode_path_params(url, params)
        request_header = METHOD_MAP[method].new(full_url)
    else
        request_header = METHOD_MAP[method].new(uri.path)
        request_header.set_form_data(params)
    end

    request_header.basic_auth @api_key, ''
    response = request.start {|http| http.request(request_header) }

    parse_response(response)
end
encode_path_params(path, params) click to toggle source
# File lib/keycdn.rb, line 64
def encode_path_params(path, params)
    encoded = URI.encode_www_form(params)
    [path, encoded].join("?")
end
parse_response(response) click to toggle source
# File lib/keycdn.rb, line 69
def parse_response(response)
    body = response.body
    json = JSON.parse(body, :symbolize_names => false)
    json
end