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 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