iesde 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/Gemfile +4 -0
- data/LICENSE +23 -0
- data/README.md +242 -0
- data/Rakefile +5 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/iesde.gemspec +28 -0
- data/lib/iesde.rb +39 -0
- data/lib/iesde/clients/cadastro.rb +32 -0
- data/lib/iesde/clients/inativa_acesso.rb +21 -0
- data/lib/iesde/clients/lista_curso.rb +22 -0
- data/lib/iesde/clients/logout.rb +34 -0
- data/lib/iesde/clients/obtem_aulas.rb +21 -0
- data/lib/iesde/clients/obtem_matriculas.rb +23 -0
- data/lib/iesde/config.rb +5 -0
- data/lib/iesde/error/validation_error.rb +6 -0
- data/lib/iesde/error/ws_error.rb +9 -0
- data/lib/iesde/model/aluno.rb +21 -0
- data/lib/iesde/model/aula.rb +21 -0
- data/lib/iesde/model/curso.rb +113 -0
- data/lib/iesde/model/matricula.rb +46 -0
- data/lib/iesde/version.rb +3 -0
- data/lib/iesde/wsdl_client.rb +79 -0
- metadata +140 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1c838a05aa5322e830e239c6cddd036971c4f8e7
|
4
|
+
data.tar.gz: 6db88f708d18409085c435d4910cd31864e22692
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c88f21a60a06b95872d681d70488a513e7f83f789bc3fbfa34cee4586a4dc1003694fc2cef279c7626c4e721cd87e93c7391d73965d4fb26f46159d685b4103a
|
7
|
+
data.tar.gz: 3acd2c40509fcdabcd5a508d1d4e766bcce1ccedb1858ceb69e302347d9af33a08d1b091b811a58dc2b62030e99901bd8d40fe946663d468595139a48db31424
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
LICENSE
|
2
|
+
|
3
|
+
The MIT License
|
4
|
+
|
5
|
+
Copyright (c) 2016 Fortes Tecnologia.
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
+
of this software and associated documentation files (the "Software"), to deal
|
9
|
+
in the Software without restriction, including without limitation the rights
|
10
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11
|
+
copies of the Software, and to permit persons to whom the Software is
|
12
|
+
furnished to do so, subject to the following conditions:
|
13
|
+
|
14
|
+
The above copyright notice and this permission notice shall be included in
|
15
|
+
all copies or substantial portions of the Software.
|
16
|
+
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,242 @@
|
|
1
|
+
# Iesde
|
2
|
+
|
3
|
+
Interface para acesso ao WebService do [Iesde][siteiesde] para sistemas Rails. Não se trata de uma ferramenta oficial pois foi desenvolvida por necessidade dos nossos desenvolvedores. Sintam-se livres para contribuir.
|
4
|
+
|
5
|
+
## Índice
|
6
|
+
\- [Iesde](#iesde)
|
7
|
+
- [Versão](#vers%C3%A3o)
|
8
|
+
- [Instalação](#instala%C3%A7%C3%A3o)
|
9
|
+
- [Uso](#uso)
|
10
|
+
- [Listagem de Cursos](#listagem-de-cursos)
|
11
|
+
- [Busca de curso por Id](#busca-de-curso-por-id)
|
12
|
+
- [Listagem de Aulas](#listagem-de-aulas)
|
13
|
+
- [Listagem de Matrículas](#listagem-de-matr%C3%ADculas)
|
14
|
+
- [Matricular Aluno](#matricular-aluno)
|
15
|
+
- [Inativação de Aluno](#inativa%C3%A7%C3%A3o-de-aluno)
|
16
|
+
- [Logout](#logout)
|
17
|
+
- [Default Configs](#default-configs)
|
18
|
+
- [Relacionamentos](#relacionamentos)
|
19
|
+
|
20
|
+
## Versão
|
21
|
+
1.0.0 - Seguindo a documentação v14 do WebService
|
22
|
+
|
23
|
+
## Instalação
|
24
|
+
|
25
|
+
```sh
|
26
|
+
gem install iesde -v 1.0.0
|
27
|
+
```
|
28
|
+
|
29
|
+
Ou no seu Gemfile
|
30
|
+
```ruby
|
31
|
+
gem 'iesde', '~> 1.0.0'
|
32
|
+
```
|
33
|
+
|
34
|
+
## Uso
|
35
|
+
|
36
|
+
> Todas as buscas no WebService exigem os parâmetros **login** e **senha**.
|
37
|
+
> Caso você possua apenas um usuário de acesso ao WebService, você pode configurar esses parâmetros em um initializer.
|
38
|
+
> Veja na seção [Default Configs](#default-configs).
|
39
|
+
|
40
|
+
### Listagem de Cursos
|
41
|
+
|
42
|
+
Retorna um array de ```Iesde::Model::Curso```
|
43
|
+
```ruby
|
44
|
+
parametros = {
|
45
|
+
login: "0123456789",
|
46
|
+
senha: "9d7d5741ab23397aa15937fcd4121a32",
|
47
|
+
busca: "",
|
48
|
+
tipo: "C",
|
49
|
+
site: "",
|
50
|
+
idCurso: ""
|
51
|
+
}
|
52
|
+
cursos = Iesde::Model::Curso.buscar(parametros)
|
53
|
+
=> [#<Iesde::Model::Curso>, #<Iesde::Model::Curso>, #<Iesde::Model::Curso>, ...]
|
54
|
+
```
|
55
|
+
### Busca de curso por Id
|
56
|
+
Esta busca realiza uma varredura em todos os cursos e pacotes em busca do **id** passado como parâmetro.
|
57
|
+
|
58
|
+
Retorna um ```Iesde::Model::Curso```
|
59
|
+
```ruby
|
60
|
+
curso = Iesde::Model::Curso.find id: 1000, login: "0123456789", senha: "9d7d5741ab23397aa15937fcd4121a32"
|
61
|
+
=> #<Iesde::Model::Curso>
|
62
|
+
|
63
|
+
curso.id
|
64
|
+
=> "1000"
|
65
|
+
|
66
|
+
curso.nome
|
67
|
+
=> "A BUSCA DA PERFEICÃO"
|
68
|
+
```
|
69
|
+
|
70
|
+
### Listagem de Aulas
|
71
|
+
Retorna um array de ```Iesde::Model::Aula```
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
parametros = {
|
75
|
+
login: "0123456789",
|
76
|
+
senha: "9d7d5741ab23397aa15937fcd4121a32",
|
77
|
+
loginAluno: "",
|
78
|
+
cpf: "",
|
79
|
+
curso: "1000",
|
80
|
+
ancora: "",
|
81
|
+
tipo: "C"
|
82
|
+
}
|
83
|
+
aulas = Iesde::Model::Aula.buscar(parametros)
|
84
|
+
=> [#<Iesde::Model::Aula>, #<Iesde::Model::Aula>, #<Iesde::Model::Aula>, ...]
|
85
|
+
```
|
86
|
+
|
87
|
+
Ou já tendo o curso carregado...
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
curso.aulas
|
91
|
+
=> [#<Iesde::Model::Aula>, #<Iesde::Model::Aula>, #<Iesde::Model::Aula>, ...]
|
92
|
+
```
|
93
|
+
|
94
|
+
### Listagem de Matrículas
|
95
|
+
|
96
|
+
Retorna um array de ```Iesde::Model::Matricula ```
|
97
|
+
|
98
|
+
```ruby
|
99
|
+
parametros = {
|
100
|
+
login: "0123456789",
|
101
|
+
senha: "9d7d5741ab23397aa15937fcd4121a32",
|
102
|
+
curso: "6376",
|
103
|
+
tipo: "C"
|
104
|
+
}
|
105
|
+
Iesde::Model::Matricula.buscar(parametros)
|
106
|
+
=> [#<Iesde::Model::Matricula>, #<Iesde::Model::Matricula>, #<Iesde::Model::Matricula>, ...]
|
107
|
+
```
|
108
|
+
Ou já tendo o curso carregado...
|
109
|
+
|
110
|
+
```ruby
|
111
|
+
curso.matriculas
|
112
|
+
=> [#<Iesde::Model::Matricula>, #<Iesde::Model::Matricula>, #<Iesde::Model::Matricula>, ...]
|
113
|
+
```
|
114
|
+
|
115
|
+
### Matricular Aluno
|
116
|
+
|
117
|
+
Realiza a matrícula no WebService e retorna um ```Iesde::Model::Matricula```
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
parametros = {
|
121
|
+
login: "0190001388",
|
122
|
+
senha: "9d7d5741ab23397afeb81829a3d5ebd7",
|
123
|
+
loginAluno: "aluno@minhaorganizacao.com.br",
|
124
|
+
cpf: "12345678900",
|
125
|
+
curso: "1000",
|
126
|
+
duracao: "90",
|
127
|
+
tipo: "C",
|
128
|
+
valor: ""
|
129
|
+
}
|
130
|
+
matricula = Iesde::Model::Matricula.criar(parametros)
|
131
|
+
=> #<Iesde::Model::Matricula>
|
132
|
+
```
|
133
|
+
|
134
|
+
### Inativação de Aluno
|
135
|
+
|
136
|
+
Inativa a matrícula e retorna ```true``` se sucesso.
|
137
|
+
|
138
|
+
```ruby
|
139
|
+
parametros = {
|
140
|
+
login: "0190001388",
|
141
|
+
senha: "9d7d5741ab23397afeb81829a3d5ebd7",
|
142
|
+
:"LoginID" => "12345"
|
143
|
+
}
|
144
|
+
Iesde::Model::Matricula.inativar(parametros)
|
145
|
+
=> true
|
146
|
+
```
|
147
|
+
|
148
|
+
Ou caso já possua a matrícula carregada...
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
matricula.inativar
|
152
|
+
=> true
|
153
|
+
```
|
154
|
+
### Logout
|
155
|
+
|
156
|
+
Realiza logout do aluno e retorna ```true``` se sucesso.
|
157
|
+
|
158
|
+
```ruby
|
159
|
+
parametros = {
|
160
|
+
login: "0190001388",
|
161
|
+
senha: "9d7d5741ab23397afeb81829a3d5ebd7",
|
162
|
+
loginAluno: "aluno@minhaorganizacao.com.br",
|
163
|
+
cpf: "12345678900"
|
164
|
+
}
|
165
|
+
Iesde::Model::Aluno.logout(parametros)
|
166
|
+
=> true
|
167
|
+
```
|
168
|
+
|
169
|
+
Ou você pode obter a instância de ```Iesde::Model::Aluno``` e chamar diretamente...
|
170
|
+
|
171
|
+
```ruby
|
172
|
+
aluno = matricula.aluno
|
173
|
+
=> #<Iesde::Model::Aluno>
|
174
|
+
aluno.logout
|
175
|
+
=> true
|
176
|
+
```
|
177
|
+
|
178
|
+
```ruby
|
179
|
+
aluno = curso.matriculas.first.aluno
|
180
|
+
=> #<Iesde::Model::Aluno>
|
181
|
+
aluno.logout
|
182
|
+
=> true
|
183
|
+
```
|
184
|
+
|
185
|
+
## Default Configs
|
186
|
+
Caso você utilize apenas um usuário do WebService em sua aplicação, seria interessante não passar os parâmetros **login** e **senha** em toda busca.
|
187
|
+
|
188
|
+
Você pode configurar num initializer esses parâmetros:
|
189
|
+
|
190
|
+
```ruby
|
191
|
+
Iesde::configure do |config|
|
192
|
+
config.default_username = "0190001388"
|
193
|
+
config.default_password = "9d7d5741ab23397afeb81829a3d5ebd7"
|
194
|
+
end
|
195
|
+
```
|
196
|
+
|
197
|
+
Então poderá realizar as requisições sem passar estes parâmetros. Exemplos:
|
198
|
+
|
199
|
+
```ruby
|
200
|
+
cursos = Iesde::Model::Curso.buscar busca: "", tipo: "C", site: "", idCurso: ""
|
201
|
+
=> [#<Iesde::Model::Curso>, #<Iesde::Model::Curso>, #<Iesde::Model::Curso>, ...]
|
202
|
+
|
203
|
+
curso = Iesde::Model::Curso.find id: 1000
|
204
|
+
=> #<Iesde::Model::Curso>
|
205
|
+
|
206
|
+
Iesde::Model::Matricula.inativar :"LoginID" => "12345"
|
207
|
+
=> true
|
208
|
+
```
|
209
|
+
|
210
|
+
## Relacionamentos
|
211
|
+
|
212
|
+
- Um ```Iesde::Model::Curso``` possui várias ```Iesde::Model::Aula```e várias ```Iesde::Model::Matricula```
|
213
|
+
- Uma ```Iesde::Model::Matricula``` possui um ```Iesde::Model::Aluno``` e um ```Iesde::Model::Curso```
|
214
|
+
- Logo ```Iesde::Model::Curso``` possui vários ```Iesde::Model::Aluno```
|
215
|
+
```ruby
|
216
|
+
# Busca aulas no WS do curso
|
217
|
+
curso.aulas
|
218
|
+
=> [#<Iesde::Model::Aula>, #<Iesde::Model::Aula>, #<Iesde::Model::Aula>, ...]
|
219
|
+
|
220
|
+
aula.curso
|
221
|
+
=> #<Iesde::Model::Curso>
|
222
|
+
|
223
|
+
curso.matriculas
|
224
|
+
=> [#<Iesde::Model::Matricula>, #<Iesde::Model::Matricula>, #<Iesde::Model::Matricula>, ...]
|
225
|
+
|
226
|
+
matricula.curso
|
227
|
+
=> #<Iesde::Model::Curso>
|
228
|
+
|
229
|
+
matricula.aluno
|
230
|
+
=> #<Iesde::Model::Aluno>
|
231
|
+
|
232
|
+
curso.alunos
|
233
|
+
=> [#<Iesde::Model::Aluno>, #<Iesde::Model::Aluno>, #<Iesde::Model::Aluno>, ...]
|
234
|
+
```
|
235
|
+
|
236
|
+
> A maioria destas operações só busca do WS uma vez. Ao buscar as aulas de um curso, elas já vem com o curso carregado em suas instâncias, evitando outra chamada ao WS para buscar o curso ao fazer ```aula.curso```.
|
237
|
+
|
238
|
+
## Licença
|
239
|
+
|
240
|
+
MIT Licence. Copyright (c) 2016 Fortes Tecnologia. http://www.fortestecnologia.com.br
|
241
|
+
|
242
|
+
[siteiesde]:<http://www.iesde.com.br>
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "iesde"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/iesde.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'iesde/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "iesde"
|
8
|
+
spec.version = Iesde::VERSION
|
9
|
+
spec.authors = ["Pedro Benevides"]
|
10
|
+
spec.email = ["pedroaugusto@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = "Client do WebService SOAP do IESDE"
|
13
|
+
spec.description = "Esta não é uma versão oficial"
|
14
|
+
spec.homepage = "https://github.com/fortesinformatica/iesde"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.8"
|
23
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
24
|
+
spec.add_dependency "savon", "~> 2.10"
|
25
|
+
spec.add_dependency "json", "~> 1.7"
|
26
|
+
spec.add_dependency "activesupport", "~> 4.2"
|
27
|
+
|
28
|
+
end
|
data/lib/iesde.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'active_support/core_ext/module/attribute_accessors'
|
2
|
+
require 'active_support/inflector'
|
3
|
+
require 'json'
|
4
|
+
require 'savon'
|
5
|
+
|
6
|
+
module Iesde
|
7
|
+
module Clients
|
8
|
+
autoload :ListaCurso,"iesde/clients/lista_curso"
|
9
|
+
autoload :ObtemAula,"iesde/clients/obtem_aulas"
|
10
|
+
autoload :ObtemMatricula,"iesde/clients/obtem_matriculas"
|
11
|
+
autoload :Cadastro,"iesde/clients/cadastro"
|
12
|
+
autoload :InativaAcesso,"iesde/clients/inativa_acesso"
|
13
|
+
autoload :Logout,"iesde/clients/logout"
|
14
|
+
end
|
15
|
+
|
16
|
+
module Error
|
17
|
+
autoload :ValidationError,'iesde/error/validation_error'
|
18
|
+
autoload :WSError,'iesde/error/ws_error'
|
19
|
+
end
|
20
|
+
|
21
|
+
module Model
|
22
|
+
autoload :Curso,"iesde/model/curso"
|
23
|
+
autoload :Aula,"iesde/model/aula"
|
24
|
+
autoload :Matricula,"iesde/model/matricula"
|
25
|
+
autoload :Aluno,"iesde/model/aluno"
|
26
|
+
end
|
27
|
+
|
28
|
+
autoload :VERSION, "iesde/version"
|
29
|
+
autoload :Config,"iesde/config"
|
30
|
+
autoload :WSDLClient,"iesde/wsdl_client"
|
31
|
+
|
32
|
+
mattr_accessor :config
|
33
|
+
|
34
|
+
def self.configure
|
35
|
+
self.config ||= Iesde::Config.new
|
36
|
+
yield(config) if block_given?
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Iesde
|
2
|
+
module Clients
|
3
|
+
class Cadastro < Iesde::WSDLClient
|
4
|
+
|
5
|
+
CODIGO_RETORNO_SUCESSO = "001"
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@action = "Cadastro"
|
9
|
+
@wsdl_url = "http://ws.videoaulasonline.com.br/aluno/cadastro/wsdl"
|
10
|
+
@format = [ :login, :senha, :loginAluno, :cpf, :curso, :duracao, :tipo, :valor ]
|
11
|
+
@obligatory_params = [ :login, :senha, :loginAluno, :cpf, :curso, :duracao, :tipo ]
|
12
|
+
end
|
13
|
+
|
14
|
+
def check_params params
|
15
|
+
errors = super params
|
16
|
+
errors << "[LoginAluno pode ter no máx 100 digitos]" if params[:loginAluno].size > 100
|
17
|
+
errors << "[CPF pode ter no máx 11 digitos]" if params[:cpf].size > 11
|
18
|
+
errors << "[Curso pode ter no máx 6 digitos]" if params[:curso].size > 6
|
19
|
+
errors << "[Duracao precisa ser múltiplo de 30 dias e ter no máx 4 dígitos]" if params[:duracao].to_s.size > 4 || params[:duracao].to_i % 30 != 0
|
20
|
+
errors << "[Tipo pode ser uma das letras P, C ou E]" unless ['P','C', 'E'].include?(params[:tipo])
|
21
|
+
errors
|
22
|
+
end
|
23
|
+
|
24
|
+
def map response
|
25
|
+
ws_message = Iesde::Error::WSError.new(response)
|
26
|
+
raise ws_message if ws_message.code != CODIGO_RETORNO_SUCESSO
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Iesde
|
2
|
+
module Clients
|
3
|
+
class InativaAcesso < Iesde::WSDLClient
|
4
|
+
|
5
|
+
CODIGO_RETORNO_SUCESSO = "020"
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@action = "inativaAcesso"
|
9
|
+
@format = [ :login, :senha, :"LoginID" ]
|
10
|
+
@obligatory_params = [ :login, :senha, :"LoginID" ]
|
11
|
+
end
|
12
|
+
|
13
|
+
def map response
|
14
|
+
ws_message = Iesde::Error::WSError.new(response)
|
15
|
+
raise ws_message if ws_message.code != CODIGO_RETORNO_SUCESSO
|
16
|
+
true
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Iesde
|
2
|
+
module Clients
|
3
|
+
class ListaCurso < Iesde::WSDLClient
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@model = Iesde::Model::Curso
|
7
|
+
@action = "listaCurso"
|
8
|
+
@format = [ :login, :senha, :busca, :tipo, :site, :idCurso ]
|
9
|
+
@obligatory_params = [ :login, :senha, :busca, :tipo, :site ]
|
10
|
+
end
|
11
|
+
|
12
|
+
def check_params params
|
13
|
+
errors = super params
|
14
|
+
errors << "[Busca pode ter no máx 100 digitos]" if params[:busca].size > 100
|
15
|
+
errors << "[Tipo pode ser uma das letras P, C ou E]" unless ['P','C', 'E'].include?(params[:tipo])
|
16
|
+
errors << "[Quando tipo for P precisa especificar idCurso]" if params[:tipo] == 'P' && params[:idCurso].blank?
|
17
|
+
errors
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Iesde
|
2
|
+
module Clients
|
3
|
+
class Logout < Iesde::WSDLClient
|
4
|
+
|
5
|
+
CODIGO_RETORNO_LOGOUT_JA_REALIZADO = "027"
|
6
|
+
CODIGO_RETORNO_LOGOUT_REALIZADO = "028"
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@wsdl_url = "http://ws.videoaulasonline.com.br/index.php/aluno/logout/wsdl"
|
10
|
+
@action = "logout"
|
11
|
+
@format = [ :login, :senha, :loginAluno, :cpf ]
|
12
|
+
@obligatory_params = [ :login, :senha, :loginAluno, :cpf ]
|
13
|
+
end
|
14
|
+
|
15
|
+
def check_params params
|
16
|
+
errors = super params
|
17
|
+
errors << "[LoginAluno pode ter no máx 100 digitos]" if params[:loginAluno].size > 100
|
18
|
+
errors << "[CPF pode ter no máx 11 digitos]" if params[:cpf].size > 11
|
19
|
+
errors
|
20
|
+
end
|
21
|
+
|
22
|
+
def map response
|
23
|
+
ws_message = Iesde::Error::WSError.new(response)
|
24
|
+
raise ws_message unless [CODIGO_RETORNO_LOGOUT_JA_REALIZADO, CODIGO_RETORNO_LOGOUT_REALIZADO].include?(ws_message.code)
|
25
|
+
true
|
26
|
+
end
|
27
|
+
|
28
|
+
def response_param
|
29
|
+
:logout
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Iesde
|
2
|
+
module Clients
|
3
|
+
class ObtemAula < Iesde::WSDLClient
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@model = Iesde::Model::Aula
|
7
|
+
@action = "obtemAulas"
|
8
|
+
@format = [ :login, :senha, :loginAluno, :cpf, :curso, :ancora, :tipo ]
|
9
|
+
@obligatory_params = [ :login, :senha, :loginAluno, :cpf, :curso, :tipo ]
|
10
|
+
end
|
11
|
+
|
12
|
+
def check_params params
|
13
|
+
errors = super params
|
14
|
+
errors << "[Curso pode ter no máx 6 digitos]" if params[:curso].size > 6
|
15
|
+
errors << "[Tipo pode ser uma das letras P, C ou E]" unless ['P','C', 'E'].include?(params[:tipo])
|
16
|
+
errors
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Iesde
|
2
|
+
module Clients
|
3
|
+
class ObtemMatricula < Iesde::WSDLClient
|
4
|
+
|
5
|
+
CODIGO_RETORNO_NENHUMA_ENCONTRADA = "010"
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@model = Iesde::Model::Matricula
|
9
|
+
@action = "obtemMatriculas"
|
10
|
+
@format = [ :login, :senha, :curso, :tipo ]
|
11
|
+
@obligatory_params = [ :login, :senha, :curso, :tipo ]
|
12
|
+
end
|
13
|
+
|
14
|
+
def check_params params
|
15
|
+
errors = super params
|
16
|
+
errors << "[Curso pode ter no máx 6 digitos]" if params[:curso].size > 6
|
17
|
+
errors << "[Tipo pode ser uma das letras P, C ou E]" unless ['P','C', 'E'].include?(params[:tipo])
|
18
|
+
errors
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/iesde/config.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Iesde
|
2
|
+
module Model
|
3
|
+
class Aluno
|
4
|
+
attr_accessor :login_aluno, :cpf, :login, :senha
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
@login_aluno, @cpf, @login, @senha = args
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.logout params
|
11
|
+
client_logout = Iesde::WSDLClient.create :logout
|
12
|
+
client_logout.run params
|
13
|
+
end
|
14
|
+
|
15
|
+
def logout
|
16
|
+
Aluno.logout login: @login, senha: @senha, loginAluno: @login_aluno, cpf: @cpf
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Iesde
|
2
|
+
module Model
|
3
|
+
class Aula
|
4
|
+
attr_accessor :curso_id, :nome_curso, :categoria, :subcategoria, :id, :ordem, :tema, :autores, :duracao, :login_aluno, :cpf, :disciplina_id, :disciplina, :login, :senha, :curso
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
@curso_id, @nome_curso, @categoria, @subcategoria, @id, @ordem, @tema, @autores, @duracao, @login_aluno, @cpf, @disciplina_id, @disciplina = args
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.buscar params
|
11
|
+
client_obtem_aulas = WSDLClient.create :obtem_aulas
|
12
|
+
client_obtem_aulas.run params
|
13
|
+
end
|
14
|
+
|
15
|
+
def curso
|
16
|
+
@curso ||= Curso.find id: @curso_id, login: @login, senha: @senha
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
module Iesde
|
2
|
+
module Model
|
3
|
+
class Curso
|
4
|
+
|
5
|
+
TIPO_CURSOS_PADRAO = %w(C E)
|
6
|
+
TIPO_CURSO_PACOTE = 'P'
|
7
|
+
SITES_CURSOS = %w(4 22 10 7 6 13)
|
8
|
+
|
9
|
+
attr_accessor :tipo, :id, :nome, :objetivo, :temas, :autores, :carga_horaria, :valor, :quant_aulas, :categoria, :video_demo, :pdf_demo, :login, :senha
|
10
|
+
attr_reader :aulas, :matriculas
|
11
|
+
|
12
|
+
def initialize(*args)
|
13
|
+
@tipo, @id, @nome, @objetivo, @temas, @autores, @carga_horaria, @valor, @quant_aulas, @categoria, @video_demo, @pdf_demo = args
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.find params
|
17
|
+
curso = nil
|
18
|
+
|
19
|
+
if !params[:id].blank? && !params[:login].blank? && !params[:senha].blank?
|
20
|
+
search_params = { login: params[:login], senha: params[:senha], busca: "", tipo: "", site: "", idCurso: params[:id].to_s }
|
21
|
+
|
22
|
+
curso = buscar_cursos_padrao search_params
|
23
|
+
curso = buscar_cursos_nos_pacotes search_params unless curso
|
24
|
+
end
|
25
|
+
return curso
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.buscar params
|
29
|
+
client_busca_curso = WSDLClient.create :lista_curso
|
30
|
+
cursos = client_busca_curso.run params
|
31
|
+
cursos.each do |curso|
|
32
|
+
curso.login = params[:login]
|
33
|
+
curso.senha = params[:senha]
|
34
|
+
curso.tipo = params[:tipo]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def aulas
|
39
|
+
@aulas ||= buscar_aulas
|
40
|
+
end
|
41
|
+
|
42
|
+
def matriculas
|
43
|
+
begin
|
44
|
+
@matriculas ||= buscar_matriculas
|
45
|
+
rescue Iesde::Error::WSError => e
|
46
|
+
if e.code == Iesde::Clients::ObtemMatricula::CODIGO_RETORNO_NENHUMA_ENCONTRADA
|
47
|
+
@matriculas = []
|
48
|
+
else
|
49
|
+
raise e
|
50
|
+
end
|
51
|
+
end
|
52
|
+
@matriculas
|
53
|
+
end
|
54
|
+
|
55
|
+
def alunos
|
56
|
+
matriculas.map &:aluno
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def self.buscar_cursos_padrao params
|
62
|
+
curso = nil
|
63
|
+
TIPO_CURSOS_PADRAO.each do |tipo|
|
64
|
+
begin
|
65
|
+
params[:tipo] = tipo
|
66
|
+
cursos = Curso.buscar params
|
67
|
+
if cursos
|
68
|
+
curso = cursos.first
|
69
|
+
break
|
70
|
+
end
|
71
|
+
rescue Exception
|
72
|
+
end
|
73
|
+
end
|
74
|
+
curso
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.buscar_cursos_nos_pacotes params
|
78
|
+
curso = nil
|
79
|
+
params[:tipo] = TIPO_CURSO_PACOTE
|
80
|
+
SITES_CURSOS.each do |site|
|
81
|
+
begin
|
82
|
+
params[:site] = site
|
83
|
+
cursos = Curso.buscar params
|
84
|
+
if cursos
|
85
|
+
curso = cursos.first
|
86
|
+
break
|
87
|
+
end
|
88
|
+
rescue Exception
|
89
|
+
end
|
90
|
+
end
|
91
|
+
curso
|
92
|
+
end
|
93
|
+
|
94
|
+
def buscar_aulas
|
95
|
+
aulas = Aula.buscar login: @login, senha: @senha, loginAluno: "", cpf: "", curso: @id, ancora: "", tipo: @tipo
|
96
|
+
passar_dados aulas
|
97
|
+
end
|
98
|
+
|
99
|
+
def buscar_matriculas
|
100
|
+
matriculas = Matricula.buscar login: @login, senha: @senha, curso: @id, tipo: @tipo
|
101
|
+
passar_dados matriculas
|
102
|
+
end
|
103
|
+
|
104
|
+
def passar_dados modelos
|
105
|
+
modelos.each do |modelo|
|
106
|
+
modelo.login = @login
|
107
|
+
modelo.senha = @senha
|
108
|
+
modelo.curso = self
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Iesde
|
2
|
+
module Model
|
3
|
+
class Matricula
|
4
|
+
attr_accessor :curso_id, :nome_curso, :data_inclusao, :duracao, :email_aluno, :cpf_aluno, :id, :login, :senha, :curso
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
@curso_id, @nome_curso, @data_inclusao, @duracao, @email_aluno, @cpf_aluno, @id = args
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.buscar params
|
11
|
+
client_obtem_matriculas = WSDLClient.create :obtem_matriculas
|
12
|
+
matriculas = client_obtem_matriculas.run params
|
13
|
+
matriculas.each do |matricula|
|
14
|
+
matricula.login = params[:login]
|
15
|
+
matricula.senha = params[:senha]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.criar params
|
20
|
+
client_cadastro = WSDLClient.create :cadastro
|
21
|
+
if client_cadastro.run(params)
|
22
|
+
matriculas = buscar params.except(:loginAluno, :cpf, :duracao, :valor)
|
23
|
+
matriculas.select { |matricula| matricula.email_aluno == params[:loginAluno] }.first
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.inativar params
|
28
|
+
client_inativa_acesso = WSDLClient.create :inativa_acesso
|
29
|
+
client_inativa_acesso.run params
|
30
|
+
end
|
31
|
+
|
32
|
+
def inativar
|
33
|
+
Matricula.inativar login: @login, senha: @senha, :"LoginID" => @id
|
34
|
+
end
|
35
|
+
|
36
|
+
def curso
|
37
|
+
@curso ||= Curso.find id: @curso_id, login: @login, senha: @senha
|
38
|
+
end
|
39
|
+
|
40
|
+
def aluno
|
41
|
+
@aluno ||= Aluno.new @email_aluno, @cpf_aluno, @login, @senha
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module Iesde
|
2
|
+
class WSDLClient
|
3
|
+
|
4
|
+
CLIENTS_FOLDER = 'iesde/clients/'
|
5
|
+
SAVON_WEB_SERVICE_ENCODING = "iso-8859-1"
|
6
|
+
DEFAULT_WSDL_URL = "http://ws.videoaulasonline.com.br/acoes_webservice/:action/wsdl"
|
7
|
+
REQUEST_SUFIX = 'Request'
|
8
|
+
RESPONSE_PARAM_SUFIX = '_response'
|
9
|
+
|
10
|
+
attr_accessor :action, :client, :format, :obligatory_params, :model, :wsdl_url
|
11
|
+
|
12
|
+
def self.create client_name
|
13
|
+
client_name.to_s.prepend(CLIENTS_FOLDER).classify.constantize.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def fetch_user_credentials params
|
17
|
+
{ login: Iesde.config.default_username, senha: Iesde.config.default_password }.merge(params)
|
18
|
+
end
|
19
|
+
|
20
|
+
def check_params_format params
|
21
|
+
errors = ""
|
22
|
+
errors << "[Parâmetros incorretos! formato -> #{@format}]" unless params.keys.eql? @format
|
23
|
+
errors
|
24
|
+
end
|
25
|
+
|
26
|
+
def check_obligatory_params params
|
27
|
+
errors = ""
|
28
|
+
@obligatory_params.each do |param|
|
29
|
+
errors << "#{param} - Parâmetro Obrigatório!" if params[param].nil?
|
30
|
+
end
|
31
|
+
errors
|
32
|
+
end
|
33
|
+
|
34
|
+
def check_params params
|
35
|
+
errors = ""
|
36
|
+
errors << "[Login pode ter no máx 10 digitos]" if params[:login].size > 10
|
37
|
+
errors << "[Senha pode ter no máx 32 digitos]" if params[:senha].size > 32
|
38
|
+
errors
|
39
|
+
end
|
40
|
+
|
41
|
+
def validate params
|
42
|
+
errors = check_params_format params
|
43
|
+
errors = check_obligatory_params params if errors.empty?
|
44
|
+
errors = check_params params if errors.empty?
|
45
|
+
errors
|
46
|
+
end
|
47
|
+
|
48
|
+
def map response
|
49
|
+
JSON.parse(response).collect do |item|
|
50
|
+
model.new *item.values
|
51
|
+
end
|
52
|
+
rescue JSON::ParserError
|
53
|
+
raise Iesde::Error::WSError.new(response)
|
54
|
+
end
|
55
|
+
|
56
|
+
def response_param
|
57
|
+
:resultado
|
58
|
+
end
|
59
|
+
|
60
|
+
def run params
|
61
|
+
params = fetch_user_credentials(params) if Iesde.config && params[:login].blank? && params[:senha].blank?
|
62
|
+
errors = validate params
|
63
|
+
raise Iesde::Error::ValidationError.new(errors) unless errors.blank?
|
64
|
+
ws_response = client.call @action.underscore.to_sym, message: params, attributes: { name: (@action + REQUEST_SUFIX) }
|
65
|
+
raw_response = ws_response.body[@action.underscore.concat(RESPONSE_PARAM_SUFIX).to_sym][response_param]
|
66
|
+
map raw_response
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
def client
|
72
|
+
@client ||= Savon.client encoding: SAVON_WEB_SERVICE_ENCODING, wsdl: build_wsdl_url
|
73
|
+
end
|
74
|
+
|
75
|
+
def build_wsdl_url
|
76
|
+
@wsdl_url || DEFAULT_WSDL_URL.gsub(/:action/, @action)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
metadata
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: iesde
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pedro Benevides
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-02-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.8'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.8'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: savon
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.10'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.10'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: json
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.7'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.7'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activesupport
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '4.2'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '4.2'
|
83
|
+
description: Esta não é uma versão oficial
|
84
|
+
email:
|
85
|
+
- pedroaugusto@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- .gitignore
|
91
|
+
- .rspec
|
92
|
+
- .travis.yml
|
93
|
+
- Gemfile
|
94
|
+
- LICENSE
|
95
|
+
- README.md
|
96
|
+
- Rakefile
|
97
|
+
- bin/console
|
98
|
+
- bin/setup
|
99
|
+
- iesde.gemspec
|
100
|
+
- lib/iesde.rb
|
101
|
+
- lib/iesde/clients/cadastro.rb
|
102
|
+
- lib/iesde/clients/inativa_acesso.rb
|
103
|
+
- lib/iesde/clients/lista_curso.rb
|
104
|
+
- lib/iesde/clients/logout.rb
|
105
|
+
- lib/iesde/clients/obtem_aulas.rb
|
106
|
+
- lib/iesde/clients/obtem_matriculas.rb
|
107
|
+
- lib/iesde/config.rb
|
108
|
+
- lib/iesde/error/validation_error.rb
|
109
|
+
- lib/iesde/error/ws_error.rb
|
110
|
+
- lib/iesde/model/aluno.rb
|
111
|
+
- lib/iesde/model/aula.rb
|
112
|
+
- lib/iesde/model/curso.rb
|
113
|
+
- lib/iesde/model/matricula.rb
|
114
|
+
- lib/iesde/version.rb
|
115
|
+
- lib/iesde/wsdl_client.rb
|
116
|
+
homepage: https://github.com/fortesinformatica/iesde
|
117
|
+
licenses:
|
118
|
+
- MIT
|
119
|
+
metadata: {}
|
120
|
+
post_install_message:
|
121
|
+
rdoc_options: []
|
122
|
+
require_paths:
|
123
|
+
- lib
|
124
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - '>='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
requirements: []
|
135
|
+
rubyforge_project:
|
136
|
+
rubygems_version: 2.4.6
|
137
|
+
signing_key:
|
138
|
+
specification_version: 4
|
139
|
+
summary: Client do WebService SOAP do IESDE
|
140
|
+
test_files: []
|