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

VERSION =
"0.13.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.access_tokenObject



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

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

.api_baseObject



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

def api_base
  Quickmail.test_mode ? "https://quickmailonline.com.au/api/test/" : "https://quickmailonline.com.au/api/"
end

.api_versionObject



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

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

.test_modeObject



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

def test_mode
  @test_mode.nil? ? false : @test_mode
end

Class Method Details

.datetime_format(datetime) ⇒ Object



89
90
91
# File 'lib/quickmail.rb', line 89

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

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



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
83
84
85
86
87
# File 'lib/quickmail.rb', line 52

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

  params.except!(:access_token)

  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, Authorization: "Bearer #{ss_access_token}"}.merge({params: params})
    payload = nil
  else
    headers = {accept: :json, content_type: :json, Authorization: "Bearer #{ss_access_token}"}
    payload = params
  end
  RestClient::Request.new({
                            method: method,
                            url: Quickmail.api_base + ss_api_version + '/' + resource,
                            payload: payload.to_json,
                            headers: headers
                          }).execute do |response, request, result|
    if response.code != 201 || 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