Module: Quickmail

Defined in:
lib/quickmail.rb,
lib/quickmail/order.rb,
lib/quickmail/version.rb,
lib/quickmail/tracking.rb,
lib/quickmail/authentication.rb

Defined Under Namespace

Classes: ApiRequestError, Authentication, AuthenticationError, ConfigurationError, Order, QuickmailError, Tracking

Constant Summary collapse

API_BASE =
Quickmail.test_mode ? "https://quickmailonline.com.au/api/test"  : "https://quickmailonline.com.au/api/"
VERSION =
"0.4.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.access_tokenObject



31
32
33
34
35
# File 'lib/quickmail.rb', line 31

def access_token
  defined? @access_token and @access_token or raise(
    ConfigurationError, "Quickmail access token not configured"
  )
end

.api_versionObject



37
38
39
40
41
# File 'lib/quickmail.rb', line 37

def api_version
  defined? @api_version and @api_version or raise(
    ConfigurationError, "Quickmail api version not configured"
  )
end

.test_modeObject



43
44
45
# File 'lib/quickmail.rb', line 43

def test_mode
  @test_mode
end

Class Method Details

.datetime_format(datetime) ⇒ Object



84
85
86
# File 'lib/quickmail.rb', line 84

def datetime_format(datetime)
  datetime.strftime("%Y-%m-%d %T")
end

.request(method, resource, params = {}) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/quickmail.rb', line 49

def request(method, resource, params = {})
  ss_access_token = Quickmail.access_token
  ss_api_version = Quickmail.api_version

  defined? method or raise(
    ArgumentError, "Request method has not been specified"
  )
  defined? resource or raise(
    ArgumentError, "Request resource has not been specified"
  )
  if method == :get
    headers = {accept: :json, content_type: :json, access_token: ss_access_token}.merge({params: params})
    payload = nil
  else
    headers = {accept: :json, content_type: :json, access_token: ss_access_token}
    payload = params
  end
  RestClient::Request.new({
                            method: method,
                            url: API_BASE + ss_api_version + '/' + resource,
                            payload: payload ? payload.to_json : nil,
                            headers: headers
                          }).execute do |response, request, result|
    if response.code != 200
      raise ApiRequestError.new(
        response_code: response.code,
        response_headers: response.headers,
        response_body: response.to_str
      )
    end
    str_response = response.to_str
    str_response.blank? ? '' : JSON.parse(str_response)
  end
end