iesde 1.1.1 → 2.0.0

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