smshuman 0.1.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.
Files changed (3) hide show
  1. data/README.rdoc +42 -0
  2. data/lib/smshuman.rb +146 -0
  3. metadata +66 -0
data/README.rdoc ADDED
@@ -0,0 +1,42 @@
1
+ = sms_human
2
+
3
+ Integração ao Human Gateway.
4
+
5
+ == Forma de usar
6
+
7
+ == Enviar multiplos SMS
8
+ Sms.multiple(account,code,filename,callbackOption='0',type='C')
9
+ * account = Nome da conta (letras minúsculas)
10
+ * code = Senha de acesso para integração que deve ser fornecido no momento de criação da conta.
11
+ * filename = Arquivo em formato CSV de acordo com algum dos layouts descritos abaixo nesse documento.
12
+ * Retorno de status por callback.
13
+ Os valores possíveis para esse parâmetro são:
14
+ 0 – inativo (padrão)
15
+ 1 – envia somente o status final da mensagem
16
+ 2 – envia os status intermediários e o status final da mensagem
17
+ Atenção: Só funciona se o campo "id" de cada SMS for preenchido
18
+ * type = Tipo de formatação do arquivo ou lista gerada, de acordo com os tipos abaixo (O Padrão é : C).
19
+ A to;msg Sem "id" não é possível consultar o status da mensagem;
20
+ Sem "from", será utilizado o remetente padrão da conta;
21
+ B to;msg;from Sem "id" não é possível consultar o status da mensagem;
22
+ C to;msg;id Sem "from", será utilizado o remetente padrão da conta;
23
+ D to;msg;id;from
24
+ E to;msg;id;from;schedule
25
+
26
+ ==Enviar Sms individual
27
+ Sms.individual(from,to,msg,account,code,id=nil,schedule=nil)
28
+ * from = Informações do remetente
29
+ * to = Destinatario da mensagem
30
+ * msg = Corpo da mensagem. Junto com "from" deve ter no máximo 142 caracteres.
31
+ * account = Nome da conta (letras minúsculas)
32
+ * code = Senha de acesso para integração que deve ser fornecido no momento de criação da conta.
33
+ * id = Código que o usuário pode fornecer para evitar
34
+ duplicação e para poder consultar o status da
35
+ mensagem. Caso não seja fornecido, não será
36
+ possível a verificação de status. (máx. 20 caracteres)
37
+ * schedule=Data e hora em que o torpedo deve ser enviado à operadora (Padrão=Now).
38
+
39
+
40
+ == Copyright
41
+
42
+ Copyright (c) 2009 guilhermeap. See LICENSE for details.
data/lib/smshuman.rb ADDED
@@ -0,0 +1,146 @@
1
+ require 'rest_client'
2
+
3
+ module Sms
4
+
5
+ def self.multiplo(account,code,filename,callbackOption='0',type='C')
6
+ begin
7
+ a = RestClient.post 'http://system.human.com.br/GatewayIntegration/msgSms.do',
8
+ :content_type => 'multipart/form-data',
9
+ :dispatch => 'sendMultiple',
10
+ :account => account,
11
+ :code => code,
12
+ :type => type,
13
+ :callbackOption => callbackOption,
14
+ :list => File.read(filename)
15
+
16
+ if RAILS_ENV
17
+ log = Log.new
18
+ log.message(msg(a))
19
+ else
20
+ puts msg(a)
21
+ end
22
+ rescue Exception => e
23
+ raise e
24
+ end
25
+
26
+ return status(a)
27
+ end
28
+
29
+ def self.individual(from,to,msg,account,code,id=nil,schedule=nil)
30
+ begin
31
+ a = RestClient.post 'http://system.human.com.br/GatewayIntegration/msgSms.do',
32
+ :content_type => 'multipart/form-data',
33
+ :dispatch => 'send',
34
+ :account => account,
35
+ :code => code,
36
+ :msg => msg,
37
+ :from => from,
38
+ :to => to
39
+
40
+
41
+ if RAILS_ENV
42
+ log = Log.new
43
+ log.message(msg(a))
44
+ else
45
+ puts msg(a)
46
+ end
47
+ rescue Exception => e
48
+ raise e
49
+ end
50
+ return status(a)
51
+ end
52
+
53
+
54
+ #Retorno em Mensagem
55
+ def self.msg(retorno)
56
+ if retorno.include? "000"
57
+ mensagem=("#{retorno} -Mensagem Enviada")
58
+ elsif retorno.include? "010"
59
+ mensagem="#{retorno} - Erro em Sua Chamada"
60
+ elsif retorno.include? "200"
61
+ mensagem=("#{retorno} - Todas as mensagens foram enviadas")
62
+ elsif retorno.include? "011"
63
+ mensagem="#{retorno} - Erro em Sua Chamada"
64
+ elsif retorno.include? "012"
65
+ mensagem="#{retorno} - Erro em Sua Chamada"
66
+ elsif retorno.include? "013"
67
+ mensagem="#{retorno} - Erro em Sua Chamada"
68
+ elsif retorno.include? "014"
69
+ mensagem="#{retorno} - Erro em Sua Chamada"
70
+ elsif retorno.include? "015"
71
+ mensagem="#{retorno} - Erro em Sua Chamada"
72
+ elsif retorno.include? "016"
73
+ mensagem="#{retorno} - Erro em Sua Chamada"
74
+ elsif retorno.include? "017"
75
+ mensagem="#{retorno} - Erro em Sua Chamada"
76
+ elsif retorno.include? "080"
77
+ mensagem="#{retorno} - Mensagem já enviada com o mesmo ID"
78
+ elsif retorno.include? "900"
79
+ mensagem="#{retorno} - Erro de Autenticação"
80
+ end
81
+ return mensagem
82
+ end
83
+
84
+ #status do retorno
85
+
86
+ def self.status(retorno)
87
+ if retorno.include? "000"
88
+ resultado=true
89
+ elsif retorno.include? "200"
90
+ resultado=true
91
+ elsif retorno.include? "010"
92
+ resultado=false
93
+ elsif retorno.include? "011"
94
+ resultado=false
95
+ elsif retorno.include? "012"
96
+ resultado=false
97
+ elsif retorno.include? "013"
98
+ resultado=false
99
+ elsif retorno.include? "014"
100
+ resultado=false
101
+ elsif retorno.include? "015"
102
+ resultado=false
103
+ elsif retorno.include? "016"
104
+ resultado=false
105
+ elsif retorno.include? "017"
106
+ resultado=false
107
+ elsif retorno.include? "080"
108
+ resultado=false
109
+ elsif retorno.include? "900"
110
+ resultado=false
111
+ end
112
+ return resultado
113
+ end
114
+
115
+
116
+
117
+ end
118
+
119
+ private
120
+
121
+ class RecipesLogFormatter
122
+ def call(severity, time, program_name, message)
123
+ datetime = time.strftime("%b %d %H:%M:%S")
124
+ process = "rails[#{$PID}]"
125
+ hostname = Socket.gethostname.split('.')[0]
126
+ message = (String === message ?
127
+ message : message.inspect).gsub(/\n/, '').strip
128
+ "#{datetime} #{hostname} #{process}: #{message}\n"
129
+ end
130
+ end
131
+
132
+
133
+ class Log
134
+ def message(m)
135
+ log_sms = File.open("#{RAILS_ROOT}/log/sms.log", 'a')
136
+ log_sms.sync=true
137
+ log=Logger.new(log_sms)
138
+ log.formatter=RecipesLogFormatter.new
139
+ log.level=Logger::INFO
140
+ log.info m
141
+ end
142
+
143
+
144
+
145
+
146
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: smshuman
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - "Jeov\xC3\xA1 Guilherme de Carvalho Filho"
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-08 00:00:00 -03:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rest-client
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ description:
26
+ email: jguilhermeap@gmail.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - README.rdoc
33
+ files:
34
+ - README.rdoc
35
+ - lib/smshuman.rb
36
+ has_rdoc: true
37
+ homepage: http://www.naofiquedefora.com/
38
+ licenses: []
39
+
40
+ post_install_message:
41
+ rdoc_options:
42
+ - --line-numbers
43
+ - --inline-source
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: "0"
51
+ version:
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ version:
58
+ requirements: []
59
+
60
+ rubyforge_project:
61
+ rubygems_version: 1.3.5
62
+ signing_key:
63
+ specification_version: 3
64
+ summary: "Integra\xC3\xA7\xC3\xA3o ao Human GatewayIntegra\xC3\xA7\xC3\xA3o ao Human Gateway"
65
+ test_files: []
66
+