cnpq_ws 0.0.4 → 0.0.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d578e137b83659f9b4c5ccffe6d024844da8a22b
4
- data.tar.gz: 0931fdc6db7af2fc8b493334fc31c8be27d98057
3
+ metadata.gz: 3022b1c9859531b603b89cb0214f881e906bc527
4
+ data.tar.gz: e8928b0ba11d99ce0d6997877c466be398e1f634
5
5
  SHA512:
6
- metadata.gz: 264ac40cd52b55cb03f63c23ccd2dc1b8279758c2a3435a85a8569b3e85d844e2b19132aaedaac4a47f508c3a76d374f20a9371fb451f23e831fe1433a115e2e
7
- data.tar.gz: 2530c5be80aceaefc09cc1e8b2c27b30b214388303c810fc26f90034b32b9fe679720ccdd052e216eb7de2f25c0313af2daa36cfbd35592a1a146cc04546d2c5
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
@@ -0,0 +1,9 @@
1
+ module CnpqWs
2
+ class Railtie < Rails::Railtie
3
+ initializer 'cnpq_ws.initialize' do
4
+ ActiveSupport.on_load(:active_record) do
5
+ ActiveRecord::Base.send :extend, CnpqWs
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module CnpqWs
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -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
@@ -0,0 +1,5 @@
1
+ CnpqWs.setup do |config|
2
+ config.cnpq_login = 'cnpq_login'
3
+ config.curriculo_end_point = 'curriculo_end_point'
4
+ config.curriculo_wsdl = 'curriculo_wsdl'
5
+ 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
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