zenvia-rb 0.0.11 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e3ab5173226fc04888992fcca4b1e6d1574397e4
4
- data.tar.gz: b58eac4d7450a00d96e9697537c64f29959ca70f
3
+ metadata.gz: ec6c97be083c4b8465171a3451f5b7f44c838843
4
+ data.tar.gz: 565b1aa8d3f4297eeff2a31d7947169d45866443
5
5
  SHA512:
6
- metadata.gz: 7a3dc3703550712a289e349f13fd2121285c4fa37c30b008487d8cb1a3abbcde2fdc48f6f71c9c2d6f392cd782d157b3a787d7a1e96e826409cd7054e633472c
7
- data.tar.gz: fd3d735994f2ed28159afba88f475c9f2c87d75c65be6ee1d97296eb61fe04d88616c25966a189f707a58236999c2e277649b6211dc3c48ffa9fbeb442f29984
6
+ metadata.gz: 85cebd704334b96716482e0aeaa5f2487b21a78a4f8f2573b3de5b8dc7c305e94ef41e5adaee5e0d149f8d8e3ac14924d781dfc095dde02836af60627132c73e
7
+ data.tar.gz: 1e94b925c75f59a863bf8e9572b64649918d2b95f0c3eece6040ed73b048591b269f4202258acdf1dcba91713fb50b52fe0dd007e51d867a31865eb8119d4f52
data/README.md CHANGED
@@ -1,61 +1,107 @@
1
1
  # Zenvia
2
2
 
3
- ## Installation
3
+ Esta biblioteca -**não oficial**- segue as diretivas da [documentação API REST da Zenvia](http://docs.zenviasms.apiary.io/#introduction/autenticacao).
4
4
 
5
- Add this line to your application's Gemfile:
5
+ ## Instalação
6
+
7
+ Adicione esta linha ao seu Gemfile
6
8
 
7
9
  ```ruby
8
- gem 'zenvia-rb', '~> 0.0.11'
10
+ gem 'zenvia-rb', '~> 0.1.0'
9
11
  ```
10
12
 
11
- And then execute:
13
+ E depois execute:
12
14
 
13
15
  $ bundle
14
16
 
15
- Or install it yourself as:
17
+ Ou instale através do "gem install":
16
18
 
17
19
  $ gem install zenvia-rb
18
20
 
19
- HTTParty is the only dependency for this gem.
21
+ A única dependência desta Gem é o HTTParty.
20
22
 
21
- ## Usage
23
+ ## Uso
22
24
 
23
- In your script
25
+ Para usar esta biblioteca, [você vai precisar informar alguns dados](http://docs.zenviasms.apiary.io/#introduction/autenticacao), que são obtidos através da própria Zenvia.
24
26
 
25
27
  ```ruby
26
28
  require 'zenvia'
29
+
27
30
 
28
31
  Zenvia.configure {|config|
29
- config.account = account_given_by_zenvia
30
- config.code = code_given_by_zenvia
31
- config.from = user_or_enterprise_name # optional
32
+ config.account = 'SUA-CONTA'
33
+ config.code = 'SEU-CODIGO'
34
+ config.from = 'NOME-DA-EMPRESA-OU-PESSOA' # opcional
32
35
  }
36
+ ```
37
+ *Se você pretende usar esta Gem com Rails, insira o snippet acima em config/initializers.*
33
38
 
34
- # from = personal or enterprise name. config.from is used as default.
35
- # if you do not want to identify the sender, use from = ''
36
- # number = area code + number / there's no need to put 55 before them
37
- # AND format the number (i.e. remove parentheses, dashes...)
38
- # message = body of the message
39
+ Feito isso, [para enviar uma mensagem](http://docs.zenviasms.apiary.io/#reference/servicos-da-api/envio-de-um-unico-sms/testar-envio-de-um-unico-sms), será preciso apenas chamar a função "send_message":
39
40
 
40
- Zenvia.send_message(number, message, from = config.from)
41
+ ```ruby
42
+ options = {from: config.from, id: 'SEU-ID', schedule: '2017-07-18T02:01:23'}
43
+ Zenvia.send_message(number, message, options)
44
+
45
+ # no hash 'options', você ainda pode inserir o aggregateId. Todos esses valores são opcionais
46
+
47
+ # Exemplo de resposta:
48
+ {"sendSmsResponse"=>{"statusCode"=>"00", "statusDescription"=>"Ok", "detailCode"=>"000", "detailDescription"=>"Message Sent"}}
49
+ ```
41
50
 
42
- # alternatively, you can set number parameter equal to an array of numbers
43
- # and send the same message to them
44
- numbers = ['DDNNNNNNNNN', 'DDNNNNNNNNM']
45
- Zenvia.send_message(numbers, message, from = config.from)
51
+ Se preferir, você pode definir um array de números e enviar a **mesma** mensagem a eles:
46
52
 
47
- ```
53
+ ```ruby
48
54
 
49
- That's all ;)
55
+ numbers = ['DDNNNNNNNNN', 'DDNNNNNNNNM']
56
+ Zenvia.send_message(numbers, message)
57
+
58
+
59
+ # Exemplo de resposta
60
+
61
+ [
62
+ {"sendSmsResponse"=>{"statusCode"=>"00", "statusDescription"=>"Ok", "detailCode"=>"000", "detailDescription"=>"Message Sent"}},
63
+ {"sendSmsResponse"=>{"statusCode"=>"00", "statusDescription"=>"Ok", "detailCode"=>"000", "detailDescription"=>"Message Sent"}}
64
+ ]
65
+ ```
50
66
 
51
- ## Development
67
+ Ou usar a função nativa do Zenvia, [de enviar múltiplos SMSs](http://docs.zenviasms.apiary.io/#reference/servicos-da-api/envio-de-varios-smss-simultaneamente/testar-envio-de-varios-smss-simultaneamente):
52
68
 
53
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
69
+ ```ruby
70
+ list = [
71
+ {
72
+ from: "remetente",
73
+ to: "555192551015",
74
+ msg: "uma mensagem",
75
+ callbackOption: "NONE"
76
+ },
77
+ {
78
+ from: "remetente",
79
+ to: "555199668010",
80
+ schedule: "2014-07-18T02:01:23",
81
+ msg: "outra mensagem",
82
+ callbackOption: "NONE",
83
+ id: "004"
84
+ }
85
+ ]
86
+
87
+
88
+ Zenvia.send_multiple_messages list
89
+ ```
54
90
 
55
- ## Contributing
91
+ Caso tenha definido o ID no envio de uma mensagem, poderá buscar seu status chamando a função "lookup":
56
92
 
57
- Bug reports and pull requests are welcome on GitHub at https://github.com/jefersonhuan/zenvia-rb
93
+ ```ruby
94
+ id = 'SEU-ID'
95
+
96
+ Zenvia.lookup(id)
97
+
98
+
99
+ # Exemplo de resposta
100
+
101
+ {"sendSmsResponse": {"statusCode": "00", "statusDescription": "Ok", "detailCode": "000", "detailDescription": "Message Sent" }}
102
+ ```
58
103
 
104
+ Isso é tudo, pessoal!
59
105
 
60
106
  ## License
61
107
 
@@ -14,7 +14,15 @@ module Zenvia
14
14
  end
15
15
 
16
16
  # alias for Zenvia::SMS.send_message(*args)
17
- def self.send_message(number, message, from = nil)
18
- SMS.send_message number, message, from
17
+ def self.send_message(number, message, options = {})
18
+ SMS.send_message number, message, options
19
+ end
20
+
21
+ def self.send_multiple_messages(list = [])
22
+ SMS.send_multiple_messages list
23
+ end
24
+
25
+ def self.lookup(id)
26
+ SMS.lookup id
19
27
  end
20
28
  end
@@ -4,54 +4,126 @@ require 'timeout'
4
4
 
5
5
  module Zenvia
6
6
  class SMS
7
- attr_writer :from, :number, :message
7
+
8
+ def self.lookup(id)
9
+ begin
10
+ res = self.get_status id
11
+ JSON.parse res.body
12
+ rescue => e
13
+ puts "Error!\n#{e}"
14
+ end
15
+ end
8
16
 
9
17
  # function to send the message
10
- def self.send_message(number, message, from = nil)
18
+ def self.send_message(number, message, options = {})
11
19
  begin
12
- @from = from.nil? ? Zenvia.config.from : from
20
+ @responses = []
21
+ @from = options[:from].nil? ? Zenvia.config.from : options[:from]
13
22
  @message = message
14
- # create numbers array and push onto it number(s) from parameters
23
+ @options = options
15
24
  numbers = number.is_a?(Array) ? number : number.split
25
+
16
26
  numbers.each do |nb|
17
27
  @number = nb
18
- response = self.send_sms
19
- response = JSON.parse(response.body)
20
- puts "Response for #{nb}: #{response['sendSmsResponse']['detailDescription']}"
28
+ response = self.send_one_request
29
+ @responses.push JSON.parse(response.body)
30
+ end
31
+
32
+ treat_response
33
+ rescue => e
34
+ puts "Error!\n#{e}"
35
+ end
36
+ end
37
+
38
+ def self.send_multiple_messages(list = [], aggregate_id = nil)
39
+ begin
40
+ @list = list
41
+ @aggregate_id = aggregate_id
42
+ validate_list!
43
+
44
+ if @errors[:errors].empty?
45
+ response = self.send_multiple_requests
46
+ JSON.parse response.body
47
+ else
48
+ @errors
21
49
  end
22
50
  rescue => e
23
- puts 'Error!'
24
- raise e
51
+ puts "Error!\n#{e}"
25
52
  end
26
53
  end
27
54
 
28
55
  private
29
- def self.send_sms
30
- # convert number to string (if isn't yet) and insert the country code (standard: BR, 55)
31
- # if not found
32
- @number = @number.to_s unless @number.is_a? String
33
- patterns = ['(', ')', ' ', '-']
34
- patterns.each {|p| @number = @number.gsub(p, '')}
35
- @number.insert(0, '55') unless /^55/.match(@number)
36
- puts "THE NUMBER: #{@number}"
37
- # retrieve auth value set in Config class
38
- @auth = Zenvia.config.auth
39
- endpoint = 'https://api-rest.zenvia360.com.br/services/send-sms'
40
- HTTParty.post(endpoint,
41
- body: {
42
- sendSmsRequest: {
43
- from: @from,
44
- to: @number,
45
- msg: @message,
46
- callbackOption: 'NONE'
56
+ def self.send_one_request
57
+ @number = treat_number @number
58
+ endpoint = 'https://api-rest.zenvia360.com.br/services/send-sms'
59
+ HTTParty.post(endpoint,
60
+ body: {
61
+ sendSmsRequest: {
62
+ from: @from,
63
+ to: @number,
64
+ msg: @message,
65
+ id: @options[:id],
66
+ schedule: @options[:schedule],
67
+ aggregateId: @options[:aggregate_id],
68
+ callbackOption: 'NONE'
69
+ }
70
+ }.to_json,
71
+ headers: self.headers
72
+ )
73
+ end
74
+
75
+ def self.send_multiple_requests
76
+ endpoint = 'https://api-rest.zenvia360.com.br/services/send-sms-multiple'
77
+ HTTParty.post(endpoint,
78
+ body: {
79
+ sendSmsMultiRequest: {
80
+ aggregateId: @aggregate_id,
81
+ sendSmsRequestList: @list
47
82
  }
48
- }.to_json,
49
- headers: {
83
+ }.to_json,
84
+ headers: self.headers
85
+ )
86
+ end
87
+
88
+ def self.get_status(id)
89
+ endpoint = "https://api-rest.zenvia360.com.br/services/get-sms-status/#{id}"
90
+ HTTParty.get(endpoint, headers: {
91
+ 'Authorization' => "Basic #{Zenvia.config.auth}"
92
+ }
93
+ )
94
+ end
95
+
96
+ def self.treat_number(number)
97
+ number = number.to_s unless number.is_a? String
98
+ patterns = ['(', ')', ' ', '-']
99
+ patterns.each {|p| number = number.gsub(p, '')}
100
+ number.insert(0, '55') unless /^55/.match(number)
101
+ number
102
+ end
103
+
104
+ def self.validate_list!
105
+ @errors = {errors: []}
106
+
107
+ @list.each do |data|
108
+ @list[@list.index(data)][:to] = treat_number data[:to]
109
+
110
+ @errors[:errors].push to: 'required' unless data.include?(:to)
111
+ @errors[:errors].push msg: 'required' unless data.include?(:msg)
112
+
113
+ break if @errors[:errors].any?
114
+ end
115
+ end
116
+
117
+ def self.treat_response
118
+ @responses.count == 1 ? @responses.first : @responses
119
+ end
120
+
121
+ def self.headers
122
+ {
50
123
  'Content-Type' => 'application/json',
51
- 'Authorization' => "Basic #{@auth}",
124
+ 'Authorization' => "Basic #{Zenvia.config.auth}",
52
125
  'Accept' => 'application/json'
53
126
  }
54
- )
55
- end
127
+ end
56
128
  end
57
129
  end
@@ -1,3 +1,3 @@
1
1
  module Zenvia
2
- VERSION = "0.0.11"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zenvia-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeferson Huan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-18 00:00:00.000000000 Z
11
+ date: 2017-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler