soullab 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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/soullab.rb +411 -0
  3. metadata +87 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f60d9381f604f5a9cbd18e29c3d26cc9d8f8fc90
4
+ data.tar.gz: 2571e9ce61440545b2b1cd21a6b6334f7ebe4375
5
+ SHA512:
6
+ metadata.gz: bbe22ac7e876c359a0b39eabec622b8936f99eefe8580e6b8c39a362e725ae8739c6ae689664a636b2db5f272965c9d18d63f8e5bb8ce03f27ad5020e1ff2280
7
+ data.tar.gz: 6e2c135e10008946ada5226875ba2138c867f4fa58bdf0ed8caa5e29a6c34fb245f5d015718f5915c7806f08f9670a1a5e62198e49e16bf7e619e5fecc3fe826
data/lib/soullab.rb ADDED
@@ -0,0 +1,411 @@
1
+ require 'restclient'
2
+ require 'json'
3
+ require 'date'
4
+ require 'digest/sha1'
5
+ require 'openssl'
6
+ require 'base64'
7
+
8
+ class Soullab
9
+
10
+ $DEBUG = false
11
+
12
+ $base_url = "http://www.soullab.com.br/SoullabWebService/service/"
13
+
14
+ def initialize(company, keyPath, keyPass, language)
15
+ @company = company
16
+ @keyPath = keyPath
17
+ @keyPass = keyPass
18
+ @language = language
19
+ end
20
+
21
+ def integrarEscola(codigo, nomeEscola, cep, cidade, uf, bairro, rua, numero, complemento, telefone, celular, nomeGestor, emailGestor, login)
22
+
23
+ puts "Generating json..." if $DEBUG
24
+
25
+ escola = {
26
+ endereco: {
27
+ cep: cep,
28
+ cidade: cidade,
29
+ uf: uf,
30
+ bairro: bairro,
31
+ rua: rua,
32
+ numero: numero,
33
+ complemento: complemento
34
+ },
35
+ gestor: {
36
+ nome: nomeGestor,
37
+ email: emailGestor,
38
+ login: login
39
+
40
+ },
41
+ codigo: codigo,
42
+ nomeEscola: nomeEscola,
43
+ telefone: telefone,
44
+ celular: celular,
45
+ nomeContato: nomeGestor,
46
+ emailContato: emailGestor
47
+ }
48
+
49
+ timestamp = DateTime.now.strftime('%Q')
50
+
51
+ mensagem = {
52
+ jsonObject: escola.to_json,
53
+ timestamp: timestamp,
54
+ empresa: @company
55
+ }
56
+
57
+ puts "Json generated." if $DEBUG
58
+ puts "Generating SHA1 hash using base64..." if $DEBUG
59
+
60
+ raw_content = mensagem.to_json
61
+
62
+ puts raw_content
63
+
64
+ assinatura = Digest::SHA1.base64digest raw_content
65
+
66
+ puts "THE HASH IS: #{assinatura}" if $DEBUG
67
+
68
+ puts "SHA1 hash generated." if $DEBUG
69
+ puts "Signing hash..." if $DEBUG
70
+
71
+ keyfile = File.read @keyPath
72
+ private_key = OpenSSL::PKey::RSA.new(keyfile, @keyPass)
73
+
74
+ assinatura = private_key.private_encrypt assinatura
75
+
76
+ puts "Hash signed." if $DEBUG
77
+
78
+ mensagem[:assinatura] = Base64.encode64(assinatura)
79
+
80
+ mensagem[:idioma] = @language
81
+
82
+ puts "JSON: #{mensagem.to_json}" if $DEBUG
83
+
84
+ url = $base_url + "escola/cadastrarEscola"
85
+
86
+ response = RestClient.post(
87
+ url,
88
+ mensagem.to_json,
89
+ :content_type => :json,
90
+ :accept => :json
91
+ )
92
+
93
+ return JSON.parse(response.body)
94
+ end
95
+
96
+ def integrarProfessor(codigoEscola, login, nome, rua, numero, complemento, bairro, cidade, cep, uf, telefone, celular, email)
97
+
98
+ puts "Generating json..." if $DEBUG
99
+
100
+ professor = {
101
+ endereco: {
102
+ cep: cep,
103
+ cidade: cidade,
104
+ uf: uf,
105
+ bairro: bairro,
106
+ rua: rua,
107
+ numero: numero,
108
+ complemento: complemento
109
+ },
110
+ nome: nome,
111
+ email: email,
112
+ login: login,
113
+ codigoEscola: codigoEscola,
114
+ telefone: telefone,
115
+ celular: celular
116
+ }
117
+
118
+ timestamp = DateTime.now.strftime('%Q')
119
+
120
+ mensagem = {
121
+ jsonObject: professor.to_json,
122
+ timestamp: timestamp,
123
+ empresa: @company
124
+ }
125
+
126
+ puts "Json generated." if $DEBUG
127
+ puts "Generating SHA1 hash using base64..." if $DEBUG
128
+
129
+ raw_content = mensagem.to_json
130
+
131
+ puts raw_content
132
+
133
+ assinatura = Digest::SHA1.base64digest raw_content
134
+
135
+ puts "THE HASH IS: #{assinatura}" if $DEBUG
136
+
137
+ puts "SHA1 hash generated." if $DEBUG
138
+ puts "Signing hash..." if $DEBUG
139
+
140
+ keyfile = File.read @keyPath
141
+ private_key = OpenSSL::PKey::RSA.new(keyfile, @keyPass)
142
+
143
+ assinatura = private_key.private_encrypt assinatura
144
+
145
+ puts "Hash signed." if $DEBUG
146
+
147
+ mensagem[:assinatura] = Base64.encode64(assinatura)
148
+
149
+ mensagem[:idioma] = @language
150
+
151
+ puts "JSON: #{mensagem.to_json}" if $DEBUG
152
+
153
+ url = $base_url + "professor/cadastrarProfessor"
154
+
155
+ response = RestClient.post(
156
+ url,
157
+ mensagem.to_json,
158
+ :content_type => :json,
159
+ :accept => :json
160
+ )
161
+
162
+ return JSON.parse(response.body)
163
+ end
164
+
165
+ def integrarTurma(codigoEscola, codigo, anoTurma, periodoAno, professor, dataInicio, dataFim, avisos)
166
+
167
+ puts "Generating json..." if $DEBUG
168
+
169
+ turma = {
170
+ codigoEscola: codigoEscola,
171
+ codigo: codigo,
172
+ anoTurma: anoTurma,
173
+ periodoAno: periodoAno,
174
+ professor: professor,
175
+ dataInicio: dataInicio,
176
+ dataFim: dataFim,
177
+ avisos: avisos
178
+ }
179
+
180
+ timestamp = DateTime.now.strftime('%Q')
181
+
182
+ mensagem = {
183
+ jsonObject: turma.to_json,
184
+ timestamp: timestamp,
185
+ empresa: @company
186
+ }
187
+
188
+ puts "Json generated." if $DEBUG
189
+ puts "Generating SHA1 hash using base64..." if $DEBUG
190
+
191
+ raw_content = mensagem.to_json
192
+
193
+ puts raw_content
194
+
195
+ assinatura = Digest::SHA1.base64digest raw_content
196
+
197
+ puts "THE HASH IS: #{assinatura}" if $DEBUG
198
+
199
+ puts "SHA1 hash generated." if $DEBUG
200
+ puts "Signing hash..." if $DEBUG
201
+
202
+ keyfile = File.read @keyPath
203
+ private_key = OpenSSL::PKey::RSA.new(keyfile, @keyPass)
204
+
205
+ assinatura = private_key.private_encrypt assinatura
206
+
207
+ puts "Hash signed." if $DEBUG
208
+
209
+ mensagem[:assinatura] = Base64.encode64(assinatura)
210
+
211
+ mensagem[:idioma] = @language
212
+
213
+ puts "JSON: #{mensagem.to_json}" if $DEBUG
214
+
215
+ url = $base_url + "turma/cadastrarTurma"
216
+
217
+ response = RestClient.post(
218
+ url,
219
+ mensagem.to_json,
220
+ :content_type => :json,
221
+ :accept => :json
222
+ )
223
+
224
+ return JSON.parse(response.body)
225
+
226
+ end
227
+
228
+ def integrarAluno(codigoEscola, login, nome, rua, numero, complemento, bairro, cidade, cep, uf, telefone, celular, email)
229
+
230
+ puts "Generating json..." if $DEBUG
231
+
232
+ aluno = {
233
+ endereco: {
234
+ cep: cep,
235
+ cidade: cidade,
236
+ uf: uf,
237
+ bairro: bairro,
238
+ rua: rua,
239
+ numero: numero,
240
+ complemento: complemento
241
+ },
242
+ nome: nome,
243
+ email: email,
244
+ login: login,
245
+ codigoEscola: codigoEscola,
246
+ telefone: telefone,
247
+ celular: celular
248
+ }
249
+
250
+ timestamp = DateTime.now.strftime('%Q')
251
+
252
+ mensagem = {
253
+ jsonObject: aluno.to_json,
254
+ timestamp: timestamp,
255
+ empresa: @company
256
+ }
257
+
258
+ puts "Json generated." if $DEBUG
259
+ puts "Generating SHA1 hash using base64..." if $DEBUG
260
+
261
+ raw_content = mensagem.to_json
262
+
263
+ puts raw_content
264
+
265
+ assinatura = Digest::SHA1.base64digest raw_content
266
+
267
+ puts "THE HASH IS: #{assinatura}" if $DEBUG
268
+
269
+ puts "SHA1 hash generated." if $DEBUG
270
+ puts "Signing hash..." if $DEBUG
271
+
272
+ keyfile = File.read @keyPath
273
+ private_key = OpenSSL::PKey::RSA.new(keyfile, @keyPass)
274
+
275
+ assinatura = private_key.private_encrypt assinatura
276
+
277
+ puts "Hash signed." if $DEBUG
278
+
279
+ mensagem[:assinatura] = Base64.encode64(assinatura)
280
+
281
+ mensagem[:idioma] = @language
282
+
283
+ puts "JSON: #{mensagem.to_json}" if $DEBUG
284
+
285
+ url = $base_url + "aluno/cadastrarAluno"
286
+
287
+ response = RestClient.post(
288
+ url,
289
+ mensagem.to_json,
290
+ :content_type => :json,
291
+ :accept => :json
292
+ )
293
+
294
+ return JSON.parse(response.body)
295
+ end
296
+
297
+ def integrarHorarios(codigoEscola, codigoTurma, horarios)
298
+
299
+ puts "Generating json..." if $DEBUG
300
+
301
+ horarios = {
302
+ codigoEscola: codigoEscola,
303
+ codigoTurma: codigoTurma,
304
+ horarios: horarios
305
+ }
306
+
307
+ timestamp = DateTime.now.strftime('%Q')
308
+
309
+ mensagem = {
310
+ jsonObject: horarios.to_json,
311
+ timestamp: timestamp,
312
+ empresa: @company
313
+ }
314
+
315
+ puts "Json generated." if $DEBUG
316
+ puts "Generating SHA1 hash using base64..." if $DEBUG
317
+
318
+ raw_content = mensagem.to_json
319
+
320
+ puts raw_content
321
+
322
+ assinatura = Digest::SHA1.base64digest raw_content
323
+
324
+ puts "THE HASH IS: #{assinatura}" if $DEBUG
325
+
326
+ puts "SHA1 hash generated." if $DEBUG
327
+ puts "Signing hash..." if $DEBUG
328
+
329
+ keyfile = File.read @keyPath
330
+ private_key = OpenSSL::PKey::RSA.new(keyfile, @keyPass)
331
+
332
+ assinatura = private_key.private_encrypt assinatura
333
+
334
+ puts "Hash signed." if $DEBUG
335
+
336
+ mensagem[:assinatura] = Base64.encode64(assinatura)
337
+
338
+ mensagem[:idioma] = @language
339
+
340
+ puts "JSON: #{mensagem.to_json}" if $DEBUG
341
+
342
+ url = $base_url + "horario/cadastrarHorario"
343
+
344
+ response = RestClient.post(
345
+ url,
346
+ mensagem.to_json,
347
+ :content_type => :json,
348
+ :accept => :json
349
+ )
350
+
351
+ return JSON.parse(response.body)
352
+ end
353
+
354
+ def integrarEnturmamento(codigoEscola, codigoTurma, matriculas)
355
+
356
+ puts "Generating json..." if $DEBUG
357
+
358
+ enturmamento = {
359
+ codigoEscola: codigoEscola,
360
+ codigoTurma: codigoTurma,
361
+ matriculas: matriculas
362
+ }
363
+
364
+ timestamp = DateTime.now.strftime('%Q')
365
+
366
+ mensagem = {
367
+ jsonObject: enturmamento.to_json,
368
+ timestamp: timestamp,
369
+ empresa: @company
370
+ }
371
+
372
+ puts "Json generated." if $DEBUG
373
+ puts "Generating SHA1 hash using base64..." if $DEBUG
374
+
375
+ raw_content = mensagem.to_json
376
+
377
+ puts raw_content
378
+
379
+ assinatura = Digest::SHA1.base64digest raw_content
380
+
381
+ puts "THE HASH IS: #{assinatura}" if $DEBUG
382
+
383
+ puts "SHA1 hash generated." if $DEBUG
384
+ puts "Signing hash..." if $DEBUG
385
+
386
+ keyfile = File.read @keyPath
387
+ private_key = OpenSSL::PKey::RSA.new(keyfile, @keyPass)
388
+
389
+ assinatura = private_key.private_encrypt assinatura
390
+
391
+ puts "Hash signed." if $DEBUG
392
+
393
+ mensagem[:assinatura] = Base64.encode64(assinatura)
394
+
395
+ mensagem[:idioma] = @language
396
+
397
+ puts "JSON: #{mensagem.to_json}" if $DEBUG
398
+
399
+ url = $base_url + "enturmamento/cadastrarEnturmamento"
400
+
401
+ response = RestClient.post(
402
+ url,
403
+ mensagem.to_json,
404
+ :content_type => :json,
405
+ :accept => :json
406
+ )
407
+
408
+ return JSON.parse(response.body)
409
+ end
410
+
411
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: soullab
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Augusto Russo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-11-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: restclient
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.11.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.11.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.8.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.8.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: base64
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 3.2.4
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 3.2.4
55
+ description: 'Want to integrate your system with soullab? No problem! This gem provides
56
+ all you need. Know more about soullab at: www.soullab.com.br'
57
+ email: augusto.russo@inovaz.com.br
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/soullab.rb
63
+ homepage: http://www.soullab.com.br
64
+ licenses:
65
+ - MIT
66
+ metadata: {}
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubyforge_project:
83
+ rubygems_version: 2.4.5.1
84
+ signing_key:
85
+ specification_version: 4
86
+ summary: Soullab integration gem
87
+ test_files: []