evoline 0.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f51cc2fd2d42c48ac19a17533b09b3b7bd20ca4e
4
+ data.tar.gz: c2e48ca3c9394a382d000e4706464539caeda93c
5
+ SHA512:
6
+ metadata.gz: a127569d43361dbb743efef64948b7dbf2d364fddd4f1f46b41e7c2bae10efc9820479d20ef4890cefd6bc675e11697c8c9dd94bd32ee2d602b593ade177829b
7
+ data.tar.gz: b0be27e8279e39cb009948572ec374c6dd1c80f0ff2c8534aaaf21be1ada58ee15add5ed2adeda81007dc352e1910aca560bb3c133d1a682dee6ff0cc49e3767
@@ -0,0 +1,22 @@
1
+ require 'net/http'
2
+
3
+ require_relative 'evoline/utils'
4
+ require_relative 'evoline/sms'
5
+ require_relative 'evoline/api_request'
6
+
7
+ module Evoline
8
+ ENDPOINT = 'https://api.evoline.com.br'
9
+
10
+ class AuthenticationException < StandardError
11
+ end
12
+
13
+ class << self
14
+ attr_accessor :api_token
15
+ end
16
+
17
+ private
18
+
19
+ def self.build_uri(path)
20
+ URI.parse("#{ENDPOINT}/#{path}")
21
+ end
22
+ end
@@ -0,0 +1,31 @@
1
+ module Evoline
2
+ class APIRequest
3
+ HTTP_VERB_MAP = {
4
+ :get => Net::HTTP::Get,
5
+ :post => Net::HTTP::Post,
6
+ :put => Net::HTTP::Put,
7
+ :delete => Net::HTTP::Delete
8
+ }
9
+
10
+ def self.request(method, path, params = {})
11
+ Evoline::Utils.auth_from_env if Evoline.api_token.nil?
12
+ raise Evoline::AuthenticationException, 'Token da API não configurado. Utilize Evoline.api_token = ... para configurar.' if Evoline.api_token.nil?
13
+ self.send_request(method, path, params)
14
+ end
15
+
16
+ private
17
+
18
+ def self.send_request(method, path, params)
19
+ uri = Evoline.build_uri(path)
20
+
21
+ Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
22
+ request = HTTP_VERB_MAP[method].new uri
23
+ request['access-token'] = Evoline.api_token
24
+
25
+ request.set_form_data(params) if params
26
+
27
+ http.request(request)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,35 @@
1
+ module Evoline
2
+ class SMS
3
+ PATH_MAP = {
4
+ :send => 'sms',
5
+ :get => 'sms/:id',
6
+ :report => 'sms/relatorio'
7
+ }
8
+
9
+ def self.send(number, message, wait_answer = false)
10
+ params = build_send_params(number, message, wait_answer)
11
+
12
+ APIRequest.request(:post, PATH_MAP[:send], params)
13
+ end
14
+
15
+ def self.get(id)
16
+ path = PATH_MAP[:get].sub(':id', id.to_s)
17
+
18
+ APIRequest.request(:get, path)
19
+ end
20
+
21
+ def self.report
22
+ APIRequest.request(:get, PATH_MAP[:report])
23
+ end
24
+
25
+ private
26
+
27
+ def self.build_send_params(number, message, wait_answer = false)
28
+ {
29
+ numero_destino: number,
30
+ mensagem: message,
31
+ resposta_usuario: wait_answer
32
+ }
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,8 @@
1
+ module Evoline
2
+ class Utils
3
+ def self.auth_from_env
4
+ api_token = ENV['EVOLINE_API_TOKEN']
5
+ Evoline.api_token = api_token if api_token
6
+ end
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: evoline
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Lucas Moulin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-09-29 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A gem to communicate with Evoline's Api
14
+ email: aride.moulin@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/evoline.rb
20
+ - lib/evoline/api_request.rb
21
+ - lib/evoline/sms.rb
22
+ - lib/evoline/utils.rb
23
+ homepage: http://rubygems.org/gems/evoline
24
+ licenses:
25
+ - MIT
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 2.5.1
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: Evoline Api
47
+ test_files: []