emailvision 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/emailvision.rb +1 -0
- data/lib/emailvision/api.rb +27 -10
- data/lib/emailvision/tools.rb +63 -0
- metadata +6 -5
data/lib/emailvision.rb
CHANGED
data/lib/emailvision/api.rb
CHANGED
@@ -3,6 +3,7 @@ module Emailvision
|
|
3
3
|
include HTTParty
|
4
4
|
default_timeout 30
|
5
5
|
format :xml
|
6
|
+
headers 'Content-Type' => 'text/xml'
|
6
7
|
|
7
8
|
# HTTP verbs allowed to trigger a call-chain
|
8
9
|
HTTP_VERBS = [:get, :post].freeze
|
@@ -61,25 +62,41 @@ module Emailvision
|
|
61
62
|
# Perform the API call
|
62
63
|
# http_verb = (get, post, ...)
|
63
64
|
# method = Method to call
|
64
|
-
#
|
65
|
-
def call(http_verb, method,
|
65
|
+
# parameters = Parameters to send (optionnal)
|
66
|
+
def call(http_verb, method, parameters = {})
|
66
67
|
params ||= {}
|
67
68
|
|
68
|
-
# Check presence of these essential attributes
|
69
|
+
# == Check presence of these essential attributes ==
|
69
70
|
unless server_name and endpoint
|
70
71
|
raise Emailvision::Exception.new "Cannot make an API call without a server name and an endpoint !"
|
71
72
|
end
|
72
73
|
|
73
|
-
# Build uri
|
74
|
+
# == Build uri ==
|
74
75
|
uri = base_uri + method
|
75
|
-
|
76
|
-
|
76
|
+
if parameters[:uri]
|
77
|
+
uri += token ? "/#{token}/" : '/'
|
78
|
+
uri += (parameters[:uri].respond_to?(:join) ? parameters[:uri] : [parameters[:uri]]).join '/'
|
79
|
+
parameters.delete :uri
|
80
|
+
elsif parameters[:body]
|
81
|
+
uri += token ? "/#{token}/" : '/'
|
82
|
+
else
|
83
|
+
parameters[:token] = token
|
84
|
+
end
|
85
|
+
|
86
|
+
# == Build body ==
|
87
|
+
# 1. Extract body from parameters
|
88
|
+
body = parameters[:body] || {}
|
89
|
+
parameters.delete :body
|
90
|
+
# 2. Camelize all keys
|
91
|
+
body = Emailvision::Tools.r_camelize body
|
92
|
+
# 3. Convert to xml
|
93
|
+
body_xml = Emailvision::Tools.to_xml_as_is body
|
77
94
|
|
78
|
-
# Send request
|
79
|
-
logger.send "#{uri} with
|
80
|
-
response = self.class.send http_verb, uri, :query =>
|
95
|
+
# == Send request ==
|
96
|
+
logger.send "#{uri} with query : #{parameters} and body : #{body}"
|
97
|
+
response = self.class.send http_verb, uri, :query => parameters, :body => body_xml, :timeout => 30
|
81
98
|
|
82
|
-
# Parse response
|
99
|
+
# == Parse response ==
|
83
100
|
http_code = response.header.code
|
84
101
|
content = Crack::XML.parse response.body
|
85
102
|
logger.receive content.inspect
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Emailvision
|
2
|
+
class Tools
|
3
|
+
|
4
|
+
def self.r_camelize(obj)
|
5
|
+
if obj.is_a?(Hash)
|
6
|
+
new_obj = {}
|
7
|
+
obj.each do |key, value|
|
8
|
+
new_obj[key.to_s.camelize(:lower).to_sym] = r_camelize value
|
9
|
+
end
|
10
|
+
new_obj
|
11
|
+
elsif obj.is_a?(Array)
|
12
|
+
new_obj = []
|
13
|
+
obj.each_with_index do |item, index|
|
14
|
+
new_obj[index] = r_camelize item
|
15
|
+
end
|
16
|
+
new_obj
|
17
|
+
else
|
18
|
+
obj
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.to_xml_as_is(obj)
|
23
|
+
obj_xml = ""
|
24
|
+
xml = Builder::XmlMarkup.new(:target=> obj_xml)
|
25
|
+
xml.instruct! :xml, :version=> "1.0"
|
26
|
+
|
27
|
+
tag_obj xml, obj
|
28
|
+
|
29
|
+
obj_xml
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def self.tag_obj(xml, obj)
|
35
|
+
if obj.is_a? Hash
|
36
|
+
obj.each do |key, value|
|
37
|
+
if value.is_a?(Hash)
|
38
|
+
eval <<-EOS
|
39
|
+
xml.#{key} do
|
40
|
+
tag_obj xml, value
|
41
|
+
end
|
42
|
+
EOS
|
43
|
+
elsif value.is_a?(Array)
|
44
|
+
value.each do |item|
|
45
|
+
eval <<-EOS
|
46
|
+
xml.#{key} do
|
47
|
+
tag_obj xml, item
|
48
|
+
end
|
49
|
+
EOS
|
50
|
+
end
|
51
|
+
else
|
52
|
+
eval <<-EOS
|
53
|
+
xml.#{key} '#{value}'
|
54
|
+
EOS
|
55
|
+
end
|
56
|
+
end
|
57
|
+
else
|
58
|
+
obj
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emailvision
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-09-26 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
16
|
-
requirement: &
|
16
|
+
requirement: &2155649020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.8.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2155649020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: crack
|
27
|
-
requirement: &
|
27
|
+
requirement: &2155648280 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: 0.3.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2155648280
|
36
36
|
description: REST API wrapper interacting with Emailvision
|
37
37
|
email: basgys@gmail.com
|
38
38
|
executables: []
|
@@ -44,6 +44,7 @@ files:
|
|
44
44
|
- lib/emailvision/logger.rb
|
45
45
|
- lib/emailvision/railtie.rb
|
46
46
|
- lib/emailvision/relation.rb
|
47
|
+
- lib/emailvision/tools.rb
|
47
48
|
- lib/emailvision.rb
|
48
49
|
- lib/generators/install.rb
|
49
50
|
- lib/generators/templates/emailvision.yml
|