emailvision 2.0.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|