class Magnews::Contact
Public Class Methods
create!(values, options={})
click to toggle source
# 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={})
click to toggle source
# 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_all()
click to toggle source
# 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()
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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
Private Class Methods
query_users()
click to toggle source
# File lib/magnews/contact.rb, line 70 def query_users query = "SELECT * FROM CONTACTS WHERE iddatabase=#{Magnews.iddatabase}" response = RestClient.get(URI.escape(url_for("contacts/query?query=#{query}")), auth_header) response = JSON.parse response response.each(&:deep_symbolize_keys!) end