emailvision 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|