Class: Magnews::Contact

Inherits:
OpenStruct
  • Object
show all
Extended by:
HeaderHelper, LoggerHelper, UrlHelper
Defined in:
lib/magnews/contact.rb

Class Method Summary collapse

Methods included from HeaderHelper

auth_header, common_headers

Methods included from UrlHelper

url_for

Methods included from LoggerHelper

logger

Class Method Details

.create!(values, options = {}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/magnews/contact.rb', line 8

def create!(values, options={})
  normalize_values!(values)
  payload = { options: options.reverse_merge({ iddatabase: Magnews.iddatabase }), values: values }.to_json
  RestClient.post(url_for("contacts/subscribe"), payload, common_headers) do |response, request, result, &block|
    logger.info { response.body }

    if (200..207).include? response.code
      respond_to_200(response)
    elsif Magnews::EXCEPTIONS_MAP[response.code].present?
      raise Magnews::EXCEPTIONS_MAP[response.code].new(response, response.code)
    else
      response.return!(request, result, &block)
    end
  end
end

.delete!(email, options = {}) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/magnews/contact.rb', line 24

def delete!(email, options={})
  payload = { options: options.reverse_merge({ iddatabase: Magnews.iddatabase }), values: { email: email } }.to_json
  RestClient.post(url_for("contacts/unsubscribe"), payload, common_headers) do |response, request, result, &block|
    logger.info { response.body }
    if (200..207).include? response.code
      respond_to_200(response)
    elsif Magnews::EXCEPTIONS_MAP[response.code].present?
      raise Magnews::EXCEPTIONS_MAP[response.code].new(response, response.code)
    else
      response.return!(request, result, &block)
    end
  end
end

.list_allObject



38
39
40
41
42
43
# File 'lib/magnews/contact.rb', line 38

def list_all
  response = query_users
  return {} if response.empty?
  response.reject! { |r| r[:status] != "subscribed" }
  response.each_with_object({}) { |r, obj| obj[r[:fields][:email]] = r[:idcontact] }
end

.list_unsubscribedObject



45
46
47
48
49
50
# File 'lib/magnews/contact.rb', line 45

def list_unsubscribed
  response = query_users
  return {} if response.empty?
  response.reject! { |r| r[:status] != "unsubscribed" }
  response.each_with_object({}) { |r, obj| obj[r[:fields][:email]] = r[:idcontact] }
end

.normalize_values!(values) ⇒ Object



62
63
64
65
66
# File 'lib/magnews/contact.rb', line 62

def normalize_values!(values)
  values.each do |key, value|
    values[key] = value.join(",") if value.is_a? Array
  end
end

.respond_to_200(response) ⇒ Object



52
53
54
55
56
57
58
59
60
# File 'lib/magnews/contact.rb', line 52

def respond_to_200(response)
  body = JSON.parse(response.body).deep_symbolize_keys!
  if body[:ok]
    return true
  else
    response.code = 422
    raise  Magnews::EXCEPTIONS_MAP[response.code].new(response, response.code)
  end
end