cnpq_ws 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cnpq_ws.gemspec +1 -1
- data/lib/cnpq_ws/curriculo_lattes.rb +102 -0
- data/lib/cnpq_ws/financiador.rb +10 -0
- data/lib/cnpq_ws/membro.rb +15 -0
- data/lib/cnpq_ws/projeto_pesquisa.rb +49 -0
- data/lib/cnpq_ws/railtie.rb +9 -0
- data/lib/cnpq_ws/version.rb +1 -1
- data/lib/generators/cnpq_ws/install_generator.rb +17 -0
- data/lib/generators/templates/cnpq_ws.rb +5 -0
- metadata +8 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3022b1c9859531b603b89cb0214f881e906bc527
|
4
|
+
data.tar.gz: e8928b0ba11d99ce0d6997877c466be398e1f634
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4baa57a5381b09a3969b6f71e698bdc84eb3fcc3e8691200d539c624b6b2c3db1c8a53b89274fc608941945660852833c3f1c2a40398200c1b6e12d1c5f94bdc
|
7
|
+
data.tar.gz: 225f41759bd9e60f9c24175cc7c9fce06b964e41dbe1f36c89987d79de9abbf7407c403d843f2a224ca7e1f525b170d72660ef9ce6e211a1568a8042691cdf19
|
data/cnpq_ws.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = ""
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
|
-
spec.files = `git ls-files -z`.split("\x0")
|
16
|
+
spec.files = `git ls-files -z`.split("\x0") + Dir.glob("{lib}/**/*")
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'zip'
|
2
|
+
require "cnpq_ws/projeto_pesquisa"
|
3
|
+
|
4
|
+
module CnpqWs
|
5
|
+
module CurriculoLattes
|
6
|
+
def projetos_de_pesquisa
|
7
|
+
projects = []
|
8
|
+
research_projects.each do |project|
|
9
|
+
projects << ProjetoPesquisa.new(
|
10
|
+
sequencia_projeto: project["SEQUENCIA_PROJETO"],
|
11
|
+
ano_inicio: project["ANO_INICIO"],
|
12
|
+
ano_fim: project["ANO_FIM"],
|
13
|
+
nome_do_projeto: project["NOME_DO_PROJETO"],
|
14
|
+
situacao: project["SITUACAO"],
|
15
|
+
natureza: project["SITUACAO"],
|
16
|
+
numero_tecnico_nivel_medio: project["NUMERO_TECNICO_NIVEL_MEDIO"],
|
17
|
+
numero_graduacao: project["NUMERO_GRADUACAO"],
|
18
|
+
numero_especializacao: project["NUMERO_GRADUACAO"],
|
19
|
+
numero_mestrado_academico: project["NUMERO_MESTRADO_ACADEMICO"],
|
20
|
+
numero_mestrado_prof: project["NUMERO_MESTRADO_PROF"],
|
21
|
+
numero_doutorado: project["NUMERO_DOUTORADO"],
|
22
|
+
descricao_do_projeto: project["DESCRICAO_DO_PROJETO"],
|
23
|
+
descricao_do_projeto_ingles: project["DESCRICAO_DO_PROJETO_INGLES"],
|
24
|
+
nome_do_projeto_ingles: project["NOME_DO_PROJETO_INGLES"],
|
25
|
+
flag_potencial_inovacao: project["FLAG_POTENCIAL_INOVACAO"],
|
26
|
+
equipe_do_projeto: project["EQUIPE_DO_PROJETO"],
|
27
|
+
financiadores_do_projeto: project["FINANCIADORES_DO_PROJETO"]
|
28
|
+
)
|
29
|
+
end
|
30
|
+
projects
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
def get_curriculo_compactado
|
35
|
+
client = Savon.client(endpoint: CnpqWs.curriculo_end_point, wsdl: CnpqWs.curriculo_wsdl, ssl_verify_mode: :none)
|
36
|
+
response = client.call(:get_curriculo_compactado, message: {id: get_identificador_cn_pq})
|
37
|
+
response.body[:get_curriculo_compactado_response][:return]
|
38
|
+
end
|
39
|
+
|
40
|
+
def get_curriculo_compactado_por_usuario
|
41
|
+
client = Savon.client(endpoint: CnpqWs.curriculo_end_point, wsdl: CnpqWs.curriculo_wsdl, ssl_verify_mode: :none)
|
42
|
+
client.call(:get_curriculo_compactado_por_usuario, message: {id: get_identificador_cn_pq, login: CnpqWs.cnpq_login})
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_data_atualizacao_cv
|
46
|
+
#to do
|
47
|
+
end
|
48
|
+
|
49
|
+
def get_data_atualizacao_cv_por_usuario
|
50
|
+
end
|
51
|
+
|
52
|
+
def get_identificador_cn_pq
|
53
|
+
client = Savon.client(endpoint: CnpqWs.curriculo_end_point, wsdl: CnpqWs.curriculo_wsdl, ssl_verify_mode: :none)
|
54
|
+
response = client.call(:get_identificador_cn_pq, message: {cpf: self.login, nomeCompleto: self.name, dataNascimento: self.birth_date})
|
55
|
+
response.body[:get_identificador_cn_pq_response][:return]
|
56
|
+
end
|
57
|
+
|
58
|
+
def get_identificador_cn_pq_por_usuario
|
59
|
+
#to do
|
60
|
+
end
|
61
|
+
|
62
|
+
def get_ocorrencia_cv
|
63
|
+
#to do
|
64
|
+
end
|
65
|
+
|
66
|
+
def get_ocorrencia_cv_por_usuario
|
67
|
+
#to do
|
68
|
+
end
|
69
|
+
|
70
|
+
def research_projects
|
71
|
+
projects = []
|
72
|
+
project_activities.each do |p|
|
73
|
+
p["PARTICIPACAO_EM_PROJETO"].each do |pp|
|
74
|
+
projects << pp["PROJETO_DE_PESQUISA"]
|
75
|
+
end
|
76
|
+
end
|
77
|
+
projects.flatten
|
78
|
+
end
|
79
|
+
|
80
|
+
def project_activities
|
81
|
+
project_activities = []
|
82
|
+
curriculo_lattes_hash["CURRICULO_VITAE"]["DADOS_GERAIS"]["ATUACOES_PROFISSIONAIS"]["ATUACAO_PROFISSIONAL"].each do |ap|
|
83
|
+
unless ap["ATIVIDADES_DE_PARTICIPACAO_EM_PROJETO"].nil?
|
84
|
+
project_activities << ap["ATIVIDADES_DE_PARTICIPACAO_EM_PROJETO"]
|
85
|
+
end
|
86
|
+
end
|
87
|
+
project_activities
|
88
|
+
end
|
89
|
+
|
90
|
+
def curriculo_lattes_hash
|
91
|
+
File.open("#{get_identificador_cn_pq}.zip", 'wb') {|f| f.write(Base64.decode64(get_curriculo_compactado))}
|
92
|
+
xml_to_hash = nil
|
93
|
+
Zip::File.open("#{get_identificador_cn_pq}.zip") do |zipfile|
|
94
|
+
zipfile.each do |entry|
|
95
|
+
xml_to_hash = Hash.from_xml(zipfile.read(entry))
|
96
|
+
end
|
97
|
+
end
|
98
|
+
File.delete("#{get_identificador_cn_pq}.zip")
|
99
|
+
xml_to_hash
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class Financiador
|
2
|
+
attr_accessor :sequencia_financiador, :codigo_instituicao, :nome_instituicao, :natureza
|
3
|
+
|
4
|
+
def initialize(options=[])
|
5
|
+
@sequencia_financiador = options[:sequencia_financiador],
|
6
|
+
@codigo_instituicao = options[:codigo_instituicao],
|
7
|
+
@nome_instituicao = options[:nome_instituicao],
|
8
|
+
@natureza = options[:natureza]
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Membro
|
2
|
+
attr_accessor :nome_completo, :nome_para_citacao, :ordem_de_integracao, :flag_responsavel
|
3
|
+
|
4
|
+
def initialize(options = [])
|
5
|
+
@nome_completo = options[:nome_completo]
|
6
|
+
@nome_para_citacao = options[:nome_para_citacao]
|
7
|
+
@ordem_de_integracao = options[:ordem_de_integracao]
|
8
|
+
@flag_responsavel = options[:flag_responsavel]
|
9
|
+
end
|
10
|
+
|
11
|
+
def responsavel?
|
12
|
+
self.flag_responsavel == 'SIM'
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require "cnpq_ws/membro"
|
2
|
+
require "cnpq_ws/financiador"
|
3
|
+
|
4
|
+
class ProjetoPesquisa
|
5
|
+
attr_accessor :sequencia_projeto, :ano_inicio, :ano_fim, :nome_do_projeto, :situacao, :natureza, :numero_tecnico_nivel_medio,
|
6
|
+
:numero_graduacao, :numero_especializacao, :numero_mestrado_academico, :numero_mestrado_prof, :numero_doutorado,
|
7
|
+
:descricao_do_projeto, :descricao_do_projeto_ingles, :nome_do_projeto_ingles, :flag_potencial_inovacao, :equipe_do_projeto,
|
8
|
+
:financiadores_do_projeto
|
9
|
+
|
10
|
+
|
11
|
+
def initialize(options = [])
|
12
|
+
@sequencia_projeto = options[:sequencia_projeto]
|
13
|
+
@ano_inicio = options[:ano_inicio]
|
14
|
+
@ano_fim = options[:ano_fim]
|
15
|
+
@nome_do_projeto = options[:nome_do_projeto]
|
16
|
+
@situacao = options[:situacao]
|
17
|
+
@natureza = options[:natureza]
|
18
|
+
@numero_tecnico_nivel_medio = options[:numero_tecnico_nivel_medio]
|
19
|
+
@numero_graduacao = options[:numero_graduacao]
|
20
|
+
@numero_especializacao = options[:numero_especializacao]
|
21
|
+
@numero_mestrado_academico = options[:numero_mestrado_academico]
|
22
|
+
@numero_mestrado_prof = options[:numero_mestrado_prof]
|
23
|
+
@numero_doutorado = options[:numero_doutorado]
|
24
|
+
@descricao_do_projeto = options[:descricao_do_projeto]
|
25
|
+
@descricao_do_projeto_ingles = options[:descricao_do_projeto_ingles]
|
26
|
+
@nome_do_projeto_ingles = options[:nome_do_projeto_ingles]
|
27
|
+
@flag_potencial_inovacao = options[:flag_potencial_inovacao]
|
28
|
+
@equipe_do_projeto = options[:equipe_do_projeto]
|
29
|
+
@financiadores_do_projeto = options[:financiadores_do_projeto]
|
30
|
+
end
|
31
|
+
|
32
|
+
def equipe
|
33
|
+
e = []
|
34
|
+
self.equipe_do_projeto.each do |m|
|
35
|
+
Hash[*m]["INTEGRANTES_DO_PROJETO"].each do |i|
|
36
|
+
e << Membro.new(nome_completo: i["NOME_COMPLETO"], nome_para_citacao: i["NOME_PARA_CITACAO"], ordem_de_integracao: i["ORDEM_DE_INTEGRACAO"], flag_responsavel: i["FLAG_RESPONSAVEL"])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
e
|
40
|
+
end
|
41
|
+
|
42
|
+
def financiadores
|
43
|
+
f = []
|
44
|
+
self.financiadores_do_projeto.each do |fn|
|
45
|
+
f << Financiador.new(sequencia_financiador: fn.last["SEQUENCIA_FINANCIADOR"], codigo_instituicao: fn.last["CODIGO_INSTITUICAO"], nome_instituicao: fn.last["NOME_INSTITUICAO"], natureza: fn.last["NATUREZA"])
|
46
|
+
end
|
47
|
+
f
|
48
|
+
end
|
49
|
+
end
|
data/lib/cnpq_ws/version.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
require 'securerandom'
|
3
|
+
|
4
|
+
module CnpqWs
|
5
|
+
module Generators
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
source_root File.expand_path("../../templates", __FILE__)
|
8
|
+
|
9
|
+
desc "Cria um inicializador CpnqWs e copia para a pasta config/initializers da sua aplicação."
|
10
|
+
class_option :orm
|
11
|
+
|
12
|
+
def copy_initializer
|
13
|
+
template "cnpq_ws.rb", "config/initializers/cnpq_ws.rb"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cnpq_ws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Renato Carvalho de Souza
|
@@ -92,7 +92,14 @@ files:
|
|
92
92
|
- Rakefile
|
93
93
|
- cnpq_ws.gemspec
|
94
94
|
- lib/cnpq_ws.rb
|
95
|
+
- lib/cnpq_ws/curriculo_lattes.rb
|
96
|
+
- lib/cnpq_ws/financiador.rb
|
97
|
+
- lib/cnpq_ws/membro.rb
|
98
|
+
- lib/cnpq_ws/projeto_pesquisa.rb
|
99
|
+
- lib/cnpq_ws/railtie.rb
|
95
100
|
- lib/cnpq_ws/version.rb
|
101
|
+
- lib/generators/cnpq_ws/install_generator.rb
|
102
|
+
- lib/generators/templates/cnpq_ws.rb
|
96
103
|
homepage: ''
|
97
104
|
licenses:
|
98
105
|
- MIT
|