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 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,4 @@
1
+ module Emailvision
2
+ class Exception < ::Exception
3
+ end
4
+ 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.0.0
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: []