Merge branch 'dev'
This commit is contained in:
commit
3a302ca280
13 changed files with 91 additions and 90 deletions
52
app/lib/api_entreprise/api.rb
Normal file
52
app/lib/api_entreprise/api.rb
Normal file
|
@ -0,0 +1,52 @@
|
|||
class ApiEntreprise::API
|
||||
class << self
|
||||
attr_accessor :token
|
||||
end
|
||||
|
||||
ENTREPRISE_RESOURCE_NAME = "entreprises"
|
||||
ETABLISSEMENT_RESOURCE_NAME = "etablissements"
|
||||
EXERCICES_RESOURCE_NAME = "exercices"
|
||||
RNA_RESOURCE_NAME = "associations"
|
||||
|
||||
def initialize
|
||||
end
|
||||
|
||||
def self.entreprise(siren, procedure_id)
|
||||
call(ENTREPRISE_RESOURCE_NAME, siren, procedure_id)
|
||||
end
|
||||
|
||||
def self.etablissement(siret, procedure_id)
|
||||
call(ETABLISSEMENT_RESOURCE_NAME, siret, procedure_id)
|
||||
end
|
||||
|
||||
def self.exercices(siret, procedure_id)
|
||||
call(EXERCICES_RESOURCE_NAME, siret, procedure_id)
|
||||
end
|
||||
|
||||
def self.rna(siret, procedure_id)
|
||||
call(RNA_RESOURCE_NAME, siret, procedure_id)
|
||||
end
|
||||
|
||||
def self.call(resource_name, siret_or_siren, procedure_id)
|
||||
url = url(resource_name, siret_or_siren)
|
||||
params = params(siret_or_siren, procedure_id)
|
||||
verify_ssl_mode = OpenSSL::SSL::VERIFY_NONE
|
||||
|
||||
result = RestClient::Resource.new(url, verify_ssl: verify_ssl_mode).get(params: params)
|
||||
|
||||
JSON.parse(result, symbolize_names: true)
|
||||
end
|
||||
|
||||
def self.url(resource_name, siret_or_siren)
|
||||
[API_ENTREPRISE_URL, resource_name, siret_or_siren].join("/")
|
||||
end
|
||||
|
||||
def self.params(siret_or_siren, procedure_id)
|
||||
{
|
||||
context: "demarches-simplifiees.fr",
|
||||
recipient: siret_or_siren,
|
||||
object: "procedure_id: #{procedure_id}",
|
||||
token: SIADETOKEN
|
||||
}
|
||||
end
|
||||
end
|
|
@ -1,15 +1,9 @@
|
|||
class SIADE::EntrepriseAdapter
|
||||
class ApiEntreprise::EntrepriseAdapter
|
||||
def initialize(siren, procedure_id)
|
||||
@siren = siren
|
||||
@procedure_id = procedure_id
|
||||
end
|
||||
|
||||
def data_source
|
||||
@data_source ||= JSON.parse(SIADE::API.entreprise(@siren, @procedure_id), symbolize_names: true)
|
||||
rescue
|
||||
@data_source = nil
|
||||
end
|
||||
|
||||
def success?
|
||||
data_source
|
||||
rescue
|
||||
|
@ -26,6 +20,12 @@ class SIADE::EntrepriseAdapter
|
|||
|
||||
private
|
||||
|
||||
def data_source
|
||||
@data_source ||= ApiEntreprise::API.entreprise(@siren, @procedure_id)
|
||||
rescue
|
||||
@data_source = nil
|
||||
end
|
||||
|
||||
def attr_to_fetch
|
||||
[
|
||||
:siren,
|
|
@ -1,13 +1,9 @@
|
|||
class SIADE::EtablissementAdapter
|
||||
class ApiEntreprise::EtablissementAdapter
|
||||
def initialize(siret, procedure_id)
|
||||
@siret = siret
|
||||
@procedure_id = procedure_id
|
||||
end
|
||||
|
||||
def data_source
|
||||
@data_source ||= JSON.parse(SIADE::API.etablissement(@siret, @procedure_id), symbolize_names: true)
|
||||
end
|
||||
|
||||
def success?
|
||||
data_source
|
||||
rescue
|
||||
|
@ -26,6 +22,10 @@ class SIADE::EtablissementAdapter
|
|||
|
||||
private
|
||||
|
||||
def data_source
|
||||
@data_source ||= ApiEntreprise::API.etablissement(@siret, @procedure_id)
|
||||
end
|
||||
|
||||
def attr_to_fetch
|
||||
[
|
||||
:adresse,
|
|
@ -1,15 +1,9 @@
|
|||
class SIADE::ExercicesAdapter
|
||||
class ApiEntreprise::ExercicesAdapter
|
||||
def initialize(siret, procedure_id)
|
||||
@siret = siret
|
||||
@procedure_id = procedure_id
|
||||
end
|
||||
|
||||
def data_source
|
||||
@data_source ||= JSON.parse(SIADE::API.exercices(@siret, @procedure_id), symbolize_names: true)
|
||||
rescue
|
||||
@data_source = nil
|
||||
end
|
||||
|
||||
def to_params
|
||||
data_source[:exercices].map do |exercice|
|
||||
exercice.slice(*attr_to_fetch)
|
||||
|
@ -20,6 +14,12 @@ class SIADE::ExercicesAdapter
|
|||
|
||||
private
|
||||
|
||||
def data_source
|
||||
@data_source ||= ApiEntreprise::API.exercices(@siret, @procedure_id)
|
||||
rescue
|
||||
@data_source = nil
|
||||
end
|
||||
|
||||
def attr_to_fetch
|
||||
[:ca, :date_fin_exercice, :date_fin_exercice_timestamp]
|
||||
end
|
|
@ -1,13 +1,9 @@
|
|||
class SIADE::RNAAdapter
|
||||
class ApiEntreprise::RNAAdapter
|
||||
def initialize(siret, procedure_id)
|
||||
@siret = siret
|
||||
@procedure_id = procedure_id
|
||||
end
|
||||
|
||||
def data_source
|
||||
@data_source ||= JSON.parse(SIADE::API.rna(@siret, @procedure_id), symbolize_names: true)
|
||||
end
|
||||
|
||||
def to_params
|
||||
if data_source[:association][:id].nil?
|
||||
return nil
|
||||
|
@ -21,6 +17,10 @@ class SIADE::RNAAdapter
|
|||
|
||||
private
|
||||
|
||||
def data_source
|
||||
@data_source ||= ApiEntreprise::API.rna(@siret, @procedure_id)
|
||||
end
|
||||
|
||||
def attr_to_fetch
|
||||
[
|
||||
:titre,
|
|
@ -1,51 +0,0 @@
|
|||
class SIADE::API
|
||||
class << self
|
||||
attr_accessor :token
|
||||
end
|
||||
|
||||
def initialize
|
||||
end
|
||||
|
||||
def self.entreprise(siren, procedure_id)
|
||||
endpoint = "/v2/entreprises/#{siren}"
|
||||
call(base_url + endpoint, mandatory_params(siren, procedure_id))
|
||||
end
|
||||
|
||||
def self.etablissement(siret, procedure_id)
|
||||
endpoint = "/v2/etablissements/#{siret}"
|
||||
call(base_url + endpoint, mandatory_params(siret, procedure_id))
|
||||
end
|
||||
|
||||
def self.exercices(siret, procedure_id)
|
||||
endpoint = "/v2/exercices/#{siret}"
|
||||
call(base_url + endpoint, mandatory_params(siret, procedure_id))
|
||||
end
|
||||
|
||||
def self.rna(siret, procedure_id)
|
||||
endpoint = "/v2/associations/#{siret}"
|
||||
call(base_url + endpoint, mandatory_params(siret, procedure_id))
|
||||
end
|
||||
|
||||
def self.call(url, params = {})
|
||||
params[:token] = SIADETOKEN
|
||||
|
||||
verify_ssl_mode = OpenSSL::SSL::VERIFY_NONE
|
||||
|
||||
RestClient::Resource.new(
|
||||
url,
|
||||
verify_ssl: verify_ssl_mode
|
||||
).get(params: params)
|
||||
end
|
||||
|
||||
def self.mandatory_params(siret_or_siren, procedure_id)
|
||||
{
|
||||
context: "demarches-simplifiees.fr",
|
||||
recipient: siret_or_siren,
|
||||
object: "procedure_id: #{procedure_id}"
|
||||
}
|
||||
end
|
||||
|
||||
def self.base_url
|
||||
SIADEURL
|
||||
end
|
||||
end
|
|
@ -1,11 +1,11 @@
|
|||
class SIRETService
|
||||
def self.fetch(siret, dossier = nil)
|
||||
etablissement = SIADE::EtablissementAdapter.new(siret, dossier&.procedure_id)
|
||||
entreprise = SIADE::EntrepriseAdapter.new(siren(siret), dossier&.procedure_id)
|
||||
etablissement = ApiEntreprise::EtablissementAdapter.new(siret, dossier&.procedure_id)
|
||||
entreprise = ApiEntreprise::EntrepriseAdapter.new(siren(siret), dossier&.procedure_id)
|
||||
|
||||
if etablissement.success? && entreprise.success?
|
||||
association = SIADE::RNAAdapter.new(siret, dossier&.procedure_id)
|
||||
exercices = SIADE::ExercicesAdapter.new(siret, dossier&.procedure_id)
|
||||
association = ApiEntreprise::RNAAdapter.new(siret, dossier&.procedure_id)
|
||||
exercices = ApiEntreprise::ExercicesAdapter.new(siret, dossier&.procedure_id)
|
||||
|
||||
params = etablissement.to_params
|
||||
.merge(entreprise.to_params.map { |k,v| ["entreprise_#{k}", v] }.to_h)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
if Rails.env.production?
|
||||
SIADEURL = 'https://entreprise.api.gouv.fr'
|
||||
API_ENTREPRISE_URL = 'https://entreprise.api.gouv.fr/v2'
|
||||
else
|
||||
SIADEURL = 'https://staging.entreprise.api.gouv.fr'
|
||||
API_ENTREPRISE_URL = 'https://staging.entreprise.api.gouv.fr/v2'
|
||||
end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe SIADE::API do
|
||||
describe ApiEntreprise::API do
|
||||
let(:procedure_id) { 12 }
|
||||
describe '.entreprise' do
|
||||
subject { described_class.entreprise(siren, procedure_id) }
|
||||
|
@ -23,7 +23,7 @@ describe SIADE::API do
|
|||
let(:body) { File.read('spec/support/files/entreprise.json') }
|
||||
|
||||
it 'returns response body' do
|
||||
expect(subject).to eq(body)
|
||||
expect(subject).to eq(JSON.parse(body, symbolize_names: true))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -51,7 +51,7 @@ describe SIADE::API do
|
|||
let(:body) { File.read('spec/support/files/etablissement.json') }
|
||||
|
||||
it 'returns body' do
|
||||
expect(subject).to eq(body)
|
||||
expect(subject).to eq(JSON.parse(body, symbolize_names: true))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -82,7 +82,7 @@ describe SIADE::API do
|
|||
let(:body) { File.read('spec/support/files/exercices.json') }
|
||||
|
||||
it 'raises RestClient::Unauthorized' do
|
||||
expect(subject).to eq(body)
|
||||
expect(subject).to eq(JSON.parse(body, symbolize_names: true))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -110,7 +110,7 @@ describe SIADE::API do
|
|||
let(:status) { 200 }
|
||||
let(:body) { File.read('spec/support/files/rna.json') }
|
||||
|
||||
it{ expect(subject).to eq(body) }
|
||||
it { expect(subject).to eq(JSON.parse(body, symbolize_names: true)) }
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,6 +1,6 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe SIADE::EntrepriseAdapter do
|
||||
describe ApiEntreprise::EntrepriseAdapter do
|
||||
let(:siren) { '418166096' }
|
||||
let(:procedure_id) { 22 }
|
||||
let(:adapter) { described_class.new(siren, procedure_id) }
|
|
@ -1,6 +1,6 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe SIADE::EtablissementAdapter do
|
||||
describe ApiEntreprise::EtablissementAdapter do
|
||||
let(:procedure_id) { 33 }
|
||||
|
||||
context 'SIRET valide' do
|
|
@ -1,6 +1,6 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe SIADE::ExercicesAdapter do
|
||||
describe ApiEntreprise::ExercicesAdapter do
|
||||
let(:siret) { '41816609600051' }
|
||||
let(:procedure_id) { 11 }
|
||||
subject { described_class.new(siret, procedure_id).to_params }
|
|
@ -1,6 +1,6 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe SIADE::RNAAdapter do
|
||||
describe ApiEntreprise::RNAAdapter do
|
||||
let(:siret) { '50480511000013' }
|
||||
let(:procedure_id) { 22 }
|
||||
let(:body) { File.read('spec/support/files/rna.json') }
|
Loading…
Reference in a new issue