Class: Dawanda::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/dawanda/request.rb

Overview

Request

A basic wrapper around GET requests to the Dawanda JSON API

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resource_path, parameters = {}) ⇒ Request

Create a new request for the resource with optional parameters



23
24
25
26
# File 'lib/dawanda/request.rb', line 23

def initialize(resource_path, parameters = {})
  @resource_path = resource_path
  @parameters    = parameters
end

Class Method Details

.base_urlObject

The base URL for API requests



10
11
12
# File 'lib/dawanda/request.rb', line 10

def self.base_url
  url = "http://#{Dawanda.country}.#{Dawanda.domain}/api/v1"
end

.get(resource_path, parameters = {}) ⇒ Object

Perform a GET request for the resource with optional parameters - returns A Response object with the payload data



17
18
19
20
# File 'lib/dawanda/request.rb', line 17

def self.get(resource_path, parameters = {})
  request = Request.new(resource_path, parameters)
  Response.new(request.get)
end

Instance Method Details

#endpoint_uriObject

:nodoc:



48
49
50
# File 'lib/dawanda/request.rb', line 48

def endpoint_uri # :nodoc:
  URI.parse("#{self.class.base_url}#{@resource_path}")
end

#getObject

Perform a GET request against the API endpoint and return the raw response data



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/dawanda/request.rb', line 30

def get
  request = Net::HTTP::Get.new endpoint_uri.path
  request.basic_auth Dawanda.http_basic[:user], Dawanda.http_basic[:password] if Dawanda.http_basic
  request.set_form_data parameters
  response = Net::HTTP.new(endpoint_uri.host, endpoint_uri.port).start {|http| http.request(request) }
  
  case response
  when Net::HTTPSuccess, Net::HTTPRedirection
    return response.body
  else 
    raise response.body
  end
end

#parametersObject

:nodoc:



44
45
46
# File 'lib/dawanda/request.rb', line 44

def parameters # :nodoc:
  @parameters.merge(:api_key => Dawanda.api_key, :format => 'json')
end