Class: Cpro::Resources::Annuaire

Inherits:
Base
  • Object
show all
Defined in:
lib/cpro/resources/annuaire.rb

Constant Summary collapse

TOTAL_KEY =
"nombre_total_resultats"
SIRET_LENGTH =
14
SIREN_LENGTH =
9
OPERATEURS_SIRET =

Chaque champ filtrable n'admet qu'un seul opérateur dans le swagger : l'appelant fournit siret: "702042755" et l'opérateur attendu est déduit d'ici.

{
  "siret" => "contient",
  "siren" => "contient",
  "denomination" => "contient",
  "localite" => "contient",
  "codePostal" => "contient",
  "lignesAdresse" => "contient",
  "subDivisionPays" => "contient",
  "typeEtablissement" => "strict",
  "etatAdministratif" => "strict"
}.freeze
OPERATEURS_SIREN =
{
  "siren" => "contient",
  "raisonSociale" => "contient",
  "typeEntite" => "strict",
  "etatAdministratif" => "strict"
}.freeze

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from Cpro::Resources::Base

Instance Method Details

#find_by_siren(siren, **options) ⇒ Object



37
38
39
40
# File 'lib/cpro/resources/annuaire.rb', line 37

def find_by_siren(siren, **options)
  path = "siren/code-insee:#{normalize(siren, SIREN_LENGTH, "SIREN")}"
  Entities::UniteLegale.new(get(path, query(options)))
end

#find_by_siret(siret, **options) ⇒ Object



32
33
34
35
# File 'lib/cpro/resources/annuaire.rb', line 32

def find_by_siret(siret, **options)
  path = "siret/code-insee:#{normalize(siret, SIRET_LENGTH, "SIRET")}"
  Entities::Etablissement.new(get(path, query(options)))
end

#healthcheckObject



55
56
57
# File 'lib/cpro/resources/annuaire.rb', line 55

def healthcheck
  get("healthcheck")
end

#search_siren(filtres: {}, **options) ⇒ Object



50
51
52
53
# File 'lib/cpro/resources/annuaire.rb', line 50

def search_siren(filtres: {}, **options)
  payload = post("siren/recherche", search_body(OPERATEURS_SIREN, filtres, options))
  Entities::ResultatRecherche.new(payload, item_class: Entities::UniteLegale, total_key: TOTAL_KEY)
end

#search_siret(filtres: {}, **options) ⇒ Object

filtres est un mot-clé et non un positionnel : avec search_siret(filtres, **options), un appel de la forme search_siret(siren: "702042755") verrait tous ses mots-clés partir dans options sous Ruby 3 et lèverait une ArgumentError.



45
46
47
48
# File 'lib/cpro/resources/annuaire.rb', line 45

def search_siret(filtres: {}, **options)
  payload = post("siret/recherche", search_body(OPERATEURS_SIRET, filtres, options))
  Entities::ResultatRecherche.new(payload, item_class: Entities::Etablissement, total_key: TOTAL_KEY)
end