iesde 1.1.1 → 2.0.0

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README-OLD-API.md +258 -0
  4. data/README.md +137 -177
  5. data/examples/aulas/buscar.rb +45 -0
  6. data/examples/aulas/link_video.rb +36 -0
  7. data/examples/disciplinas/aulas.rb +30 -0
  8. data/examples/disciplinas/buscar.rb +27 -0
  9. data/examples/disciplinas/link_pdf.rb +14 -0
  10. data/examples/matriculas/ativar.rb +33 -0
  11. data/examples/matriculas/buscar.rb +15 -0
  12. data/examples/matriculas/criar.rb +38 -0
  13. data/examples/matriculas/criar_com_campos_obrigatorios.rb +20 -0
  14. data/iesde.gemspec +12 -3
  15. data/lib/concerns/linkable.rb +6 -0
  16. data/lib/concerns/stringable.rb +7 -0
  17. data/lib/concerns/underscorable.rb +13 -0
  18. data/lib/iesde.rb +28 -16
  19. data/lib/iesde/api.rb +109 -0
  20. data/lib/iesde/api/alterar_status_matricula.rb +9 -0
  21. data/lib/iesde/api/criar_matricula.rb +13 -0
  22. data/lib/iesde/api/obter_aula.rb +12 -0
  23. data/lib/iesde/api/obter_dados_pdf.rb +9 -0
  24. data/lib/iesde/api/obter_disciplina.rb +11 -0
  25. data/lib/iesde/api/obter_link_pdf.rb +10 -0
  26. data/lib/iesde/api/obter_matricula.rb +11 -0
  27. data/lib/iesde/api/obter_video.rb +11 -0
  28. data/lib/iesde/config.rb +2 -2
  29. data/lib/iesde/model/aula.rb +12 -21
  30. data/lib/iesde/model/disciplina.rb +45 -0
  31. data/lib/iesde/model/matricula.rb +43 -23
  32. data/lib/iesde/request.rb +70 -0
  33. data/lib/iesde/version.rb +1 -1
  34. metadata +171 -30
  35. data/lib/iesde/clients/buscararquivo.rb +0 -28
  36. data/lib/iesde/clients/cadastro.rb +0 -32
  37. data/lib/iesde/clients/inativa_acesso.rb +0 -21
  38. data/lib/iesde/clients/lista_curso.rb +0 -22
  39. data/lib/iesde/clients/logout.rb +0 -34
  40. data/lib/iesde/clients/obtem_aulas.rb +0 -21
  41. data/lib/iesde/clients/obtem_matriculas.rb +0 -23
  42. data/lib/iesde/error/validation_error.rb +0 -6
  43. data/lib/iesde/model/aluno.rb +0 -21
  44. data/lib/iesde/model/curso.rb +0 -113
  45. data/lib/iesde/wsdl_client.rb +0 -79
@@ -1,28 +0,0 @@
1
- module Iesde
2
- module Clients
3
- class Buscararquivo < Iesde::WSDLClient
4
-
5
- def initialize
6
- @action = "buscararquivo"
7
- @wsdl_url = "http://ws.videoaulasonline.com.br/index.php/pdf/buscararquivo/wsdl"
8
- @format = [ :usuario, :senha, :curso, :aula, :tipo ]
9
- @obligatory_params = [ :usuario, :senha, :curso, :aula, :tipo ]
10
- end
11
-
12
- def check_params params
13
- errors = ""
14
- errors << "[E-mail pode ter no máx 100 digitos]" if params[:usuario].size > 100
15
- errors << "[CPF pode ter no máx 11 digitos]" if params[:senha].size > 11
16
- errors << "[Curso pode ter no máx 6 digitos]" if params[:curso].size > 6
17
- errors << "[Aula pode ter no máx 6 digitos]" if params[:aula].size > 6
18
- errors << "[Tipo pode ser uma das letras P, C ou E]" unless ['P','C', 'E'].include?(params[:tipo])
19
- errors
20
- end
21
-
22
- def map response
23
- response.gsub("\"","")
24
- end
25
-
26
- end
27
- end
28
- end
@@ -1,32 +0,0 @@
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
@@ -1,21 +0,0 @@
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
@@ -1,22 +0,0 @@
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
@@ -1,34 +0,0 @@
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
@@ -1,21 +0,0 @@
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
@@ -1,23 +0,0 @@
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
@@ -1,6 +0,0 @@
1
- module Iesde
2
- module Error
3
- class ValidationError < ::RuntimeError
4
- end
5
- end
6
- end
@@ -1,21 +0,0 @@
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
@@ -1,113 +0,0 @@
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
@@ -1,79 +0,0 @@
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