Module: OdsWrapper::Siret

Defined in:
lib/ods_wrapper/data/siret.rb

Constant Summary collapse

DATASET =
'economicref-france-sirene-v3@public'.freeze

Class Method Summary collapse

Class Method Details

.query(name, zipcode = '') ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/ods_wrapper/data/siret.rb', line 4

def self.query(name, zipcode = '')
  base_query = "etatadministratifetablissement:Actif AND (denominationunitelegale:#{name} OR nomunitelegale:#{name})"

  if zipcode == ''
    query = {
      dataset: OdsWrapper::Siret::DATASET,
      q: base_query,
      rows: 25
    }
  else
    if zipcode.size == 2
      query = {
        dataset: OdsWrapper::Siret::DATASET,
        q: "#{base_query} AND codedepartementetablissement:#{zipcode}",
        rows: 25
      }
    else
      query = {
        dataset: OdsWrapper::Siret::DATASET,
        q: "#{base_query} AND codepostaletablissement:#{zipcode}",
        rows: 25
      }
    end
  end

  response = HTTParty.get(OdsWrapper::ODS_URL, query:query)
  return JSON.generate( { error: 'Server temporarily inaccessible' } ) if response.code >= 500 && response.code <= 599

  result = response.body
  hash   = JSON.parse(result)

  if (hash.dig('nhits') || 0) > 0
    response = format_response(hash)
  else
    response = []
  end

  return JSON.generate({ siret: response })
end

.reverse_query(siret) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/ods_wrapper/data/siret.rb', line 44

def self.reverse_query(siret)
  query = {
    dataset: OdsWrapper::Siret::DATASET,
    q: "siret:#{siret}"
  }

  response = HTTParty.get(OdsWrapper::ODS_URL, query:query)
  return JSON.generate( { error: 'Server temporarily inaccessible' } ) if response.code >= 500 && response.code <= 599

  result = response.body
  hash   = JSON.parse(result)

  if (hash.dig('nhits') || 0) > 0
    response = format_response(hash)
  else
    response = []
  end

  return JSON.generate({ siret: response })
end