smshuman 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
+