Class: Magnews::Contact
Class Method Summary
collapse
auth_header, common_headers
Methods included from UrlHelper
url_for
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, ) 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, ) 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_all ⇒ Object
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_unsubscribed ⇒ Object
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
|