emailvision 1.0.0 → 1.1.0
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 +5 -5
- data/lib/emailvision/api.rb +90 -0
- data/lib/emailvision/exception.rb +4 -0
- data/lib/emailvision/logger.rb +15 -0
- data/lib/emailvision/relation.rb +29 -0
- metadata +28 -2
data/lib/emailvision.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require 'httparty'
|
2
1
|
require 'crack/xml'
|
2
|
+
require 'httparty'
|
3
3
|
|
4
4
|
# Emailvision API wrapper
|
5
5
|
#
|
@@ -9,8 +9,8 @@ require 'crack/xml'
|
|
9
9
|
# resource path="url/createUnsubscribeUrl/" --> url.create_unsubscribe_url.call :params => value1
|
10
10
|
#
|
11
11
|
module Emailvision
|
12
|
-
autoload :Api, 'api'
|
13
|
-
autoload :Exception, 'exception'
|
14
|
-
autoload :Logger, 'logger'
|
15
|
-
autoload :Relation, 'relation'
|
12
|
+
autoload :Api, 'emailvision/api'
|
13
|
+
autoload :Exception, 'emailvision/exception'
|
14
|
+
autoload :Logger, 'emailvision/logger'
|
15
|
+
autoload :Relation, 'emailvision/relation'
|
16
16
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
module Emailvision
|
2
|
+
class Api
|
3
|
+
include HTTParty
|
4
|
+
default_timeout 30
|
5
|
+
format :plain
|
6
|
+
|
7
|
+
attr_accessor :token
|
8
|
+
|
9
|
+
HTTP_VERBS = [:get, :post]
|
10
|
+
|
11
|
+
def initialize(login = nil, password = nil, key = nil, params = {})
|
12
|
+
@login = login || EMV_LOGIN || ENV['EMV_LOGIN']
|
13
|
+
@password = password || EMV_PASSWORD || ENV['EMV_PASSWORD']
|
14
|
+
@key = key || EMV_KEY || ENV['EMV_KEY']
|
15
|
+
|
16
|
+
@default_params = params
|
17
|
+
end
|
18
|
+
|
19
|
+
HTTP_VERBS.each do |http_verb|
|
20
|
+
define_method(http_verb) do
|
21
|
+
Emailvision::Relation.new(self, http_verb)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# http_verb = (get, post, ...)
|
26
|
+
# method = Method to call
|
27
|
+
# params = Extra parameters (optionnal)
|
28
|
+
def call(http_verb, method, params = {})
|
29
|
+
params ||= {}
|
30
|
+
|
31
|
+
# Build uri and parameters
|
32
|
+
uri = endpoint + method
|
33
|
+
params = @default_params.merge params
|
34
|
+
|
35
|
+
# Send request
|
36
|
+
raw_result = self.class.send http_verb, uri, :query => params
|
37
|
+
|
38
|
+
# Parse response
|
39
|
+
http_code = raw_result.header.code
|
40
|
+
parsed_result = Crack::XML.parse raw_result.body
|
41
|
+
|
42
|
+
# Return response or raise an exception if request failed
|
43
|
+
if (http_code == "200") and (parsed_result and parsed_result["response"])
|
44
|
+
parsed_result["response"]["result"] || parsed_result["response"]
|
45
|
+
else
|
46
|
+
raise Emailvision::Exception.new "#{http_code} - #{raw_result.body}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Connection token
|
51
|
+
def token=(value)
|
52
|
+
@token = value
|
53
|
+
@default_params = @default_params.merge({:token => token})
|
54
|
+
end
|
55
|
+
|
56
|
+
# Endpoint base uri
|
57
|
+
def endpoint
|
58
|
+
'https://emvapi.emv3.com/apiccmd/services/rest/'
|
59
|
+
end
|
60
|
+
|
61
|
+
# ----------------- BEGIN Pre-configured methods -----------------
|
62
|
+
|
63
|
+
# Login to Emailvision API
|
64
|
+
# Return :
|
65
|
+
# - True if the connection has been established
|
66
|
+
# - False if the connection cannot be established or has already been established
|
67
|
+
def login
|
68
|
+
return false if connected?
|
69
|
+
self.token = get.connect.open.call :login => @login, :password => @password, :key => @key
|
70
|
+
connected?
|
71
|
+
end
|
72
|
+
|
73
|
+
# Logout to Emailvision API
|
74
|
+
# Return :
|
75
|
+
# - True if the connection has been destroyed
|
76
|
+
# - False if the connection cannot be destroyed or has already been destroyed
|
77
|
+
def logout
|
78
|
+
return false unless connected?
|
79
|
+
get.connect.close.call if connected?
|
80
|
+
self.token = nil
|
81
|
+
connected?
|
82
|
+
end
|
83
|
+
|
84
|
+
# Check whether the connection has been established or not
|
85
|
+
def connected?
|
86
|
+
!token.nil?
|
87
|
+
end
|
88
|
+
# ----------------- END Pre-configured methods -----------------
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Emailvision
|
2
|
+
class Logger < ::Logger
|
3
|
+
|
4
|
+
# Log a message sent to emailvision
|
5
|
+
def send(message)
|
6
|
+
info("[Emailvision] Send -> #{message}")
|
7
|
+
end
|
8
|
+
|
9
|
+
# Log a message received from emailvision
|
10
|
+
def receive(message)
|
11
|
+
info("[Emailvision] Receive -> #{message}")
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Emailvision
|
2
|
+
class Relation
|
3
|
+
|
4
|
+
def initialize(instance, http_verb)
|
5
|
+
@instance = instance
|
6
|
+
@http_verb = http_verb
|
7
|
+
@uri = []
|
8
|
+
@params = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def call(*args)
|
12
|
+
@params.merge! extract_args(args)
|
13
|
+
@instance.call @http_verb, @uri.join('/'), @params
|
14
|
+
end
|
15
|
+
|
16
|
+
def method_missing(method, *args)
|
17
|
+
@uri << method.to_s.camelize(:lower)
|
18
|
+
@params.merge! extract_args(args)
|
19
|
+
self
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def extract_args(args)
|
25
|
+
(args[0] and args[0].kind_of? Hash) ? args[0] : {}
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
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: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,13 +10,39 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
date: 2011-09-26 00:00:00.000000000Z
|
13
|
-
dependencies:
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: httparty
|
16
|
+
requirement: &2164322100 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.8.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2164322100
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: crack
|
27
|
+
requirement: &2164321620 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.1.8
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2164321620
|
14
36
|
description: REST API wrapper interacting with Emailvision
|
15
37
|
email: basgys@gmail.com
|
16
38
|
executables: []
|
17
39
|
extensions: []
|
18
40
|
extra_rdoc_files: []
|
19
41
|
files:
|
42
|
+
- lib/emailvision/api.rb
|
43
|
+
- lib/emailvision/exception.rb
|
44
|
+
- lib/emailvision/logger.rb
|
45
|
+
- lib/emailvision/relation.rb
|
20
46
|
- lib/emailvision.rb
|
21
47
|
homepage: http://github.com/basgys/emailvision
|
22
48
|
licenses: []
|