cpro-client 0.2.3 → 0.2.4
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/cpro/adressage.rb +70 -0
- data/lib/cpro/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eed2218b6135210909bb231938a2adf3d8f9b432a19468576b232ffd2f352d7a
|
|
4
|
+
data.tar.gz: 95739510c05be2fdc248b2f001e4b53e08b3487162dbb29f50bc26606d929e06
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7208819c95be0220d40498c3d09c5df5479619c652c6103aac41903ce1cac6054f47b53a7c87638fd7b474e99581a61b6924ab1d0f17b633bb18a72d431e8a94
|
|
7
|
+
data.tar.gz: 4c292e8c13863bdff0fe54ab567e42880c4d25e5d928ca70fb6c1a83284198912cc14b5dd787f0733763e181a7923f08ab7768a0ee5007b5b4e52b3719c4b7f0
|
data/Gemfile.lock
CHANGED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Cpro
|
|
4
|
+
# Situe une valeur d'adressage dans la hiérarchie de l'annuaire : SIREN → SIRET → service.
|
|
5
|
+
# Quatre formes sont acceptées — SIREN, SIRET, SIRET_SERVICE et SIREN_SIRET_SERVICE.
|
|
6
|
+
#
|
|
7
|
+
# Le service ne se lit jamais par découpage sur « _ » : il en contient lui-même
|
|
8
|
+
# (SERVICE_PUBLIQUE_1_71915767420316) et peut être purement numérique ("2026"). Il se lit comme
|
|
9
|
+
# tout ce qui suit le SIRET.
|
|
10
|
+
class Adressage
|
|
11
|
+
PREFIXE_SIREN = /\A(\d{9})_(?=\d{14})/.freeze
|
|
12
|
+
SIRET = /\A(\d{14})/.freeze
|
|
13
|
+
SIREN_SEUL = /\A(\d{9})\z/.freeze
|
|
14
|
+
|
|
15
|
+
attr_reader :siren, :siret, :service
|
|
16
|
+
|
|
17
|
+
def self.parse(valeur)
|
|
18
|
+
texte = valeur.to_s.strip
|
|
19
|
+
raise ArgumentError, "valeur d'adressage vide" if texte.empty?
|
|
20
|
+
|
|
21
|
+
prefixe = texte[PREFIXE_SIREN, 1]
|
|
22
|
+
reste = prefixe ? texte[10..] : texte
|
|
23
|
+
depuis_siret(prefixe, reste) || depuis_siren(reste) ||
|
|
24
|
+
raise(ArgumentError, "valeur d'adressage illisible : #{valeur.inspect} " \
|
|
25
|
+
"(attendus : SIREN, SIRET, SIRET_SERVICE ou SIREN_SIRET_SERVICE)")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.depuis_siret(prefixe, reste)
|
|
29
|
+
siret = reste[SIRET, 1]
|
|
30
|
+
return nil if siret.nil?
|
|
31
|
+
|
|
32
|
+
raise ArgumentError, "SIREN #{prefixe} incohérent avec le SIRET #{siret}" if prefixe && prefixe != siret[0, 9]
|
|
33
|
+
|
|
34
|
+
new(siren: siret[0, 9], siret: siret, service: reste[14..].to_s.sub(/\A_/, ""))
|
|
35
|
+
end
|
|
36
|
+
private_class_method :depuis_siret
|
|
37
|
+
|
|
38
|
+
def self.depuis_siren(reste)
|
|
39
|
+
siren = reste[SIREN_SEUL, 1]
|
|
40
|
+
siren && new(siren: siren, siret: nil, service: nil)
|
|
41
|
+
end
|
|
42
|
+
private_class_method :depuis_siren
|
|
43
|
+
|
|
44
|
+
def initialize(siren:, siret: nil, service: nil)
|
|
45
|
+
@siren = siren
|
|
46
|
+
@siret = siret
|
|
47
|
+
@service = service.nil? || service.empty? ? nil : service
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Du plus précis au plus général : la valeur elle-même, puis ses parents successifs. C'est
|
|
51
|
+
# l'ordre dans lequel une adresse active est cherchée.
|
|
52
|
+
def paliers
|
|
53
|
+
[
|
|
54
|
+
(self.class.new(siren: siren, siret: siret, service: service) if service),
|
|
55
|
+
(self.class.new(siren: siren, siret: siret) if siret),
|
|
56
|
+
self.class.new(siren: siren)
|
|
57
|
+
].compact
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Une ligne d'annuaire correspond à ce palier si elle décrit le même niveau de précision.
|
|
61
|
+
def correspond?(ligne)
|
|
62
|
+
ligne.siret == siret && ligne.identifiant_routage.to_s.empty? == service.nil? &&
|
|
63
|
+
(service.nil? || ligne.identifiant_routage == service)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def to_s
|
|
67
|
+
[siret ? "#{siren}_#{siret}" : siren, service].compact.join("_")
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
data/lib/cpro/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cpro-client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hôtentic
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-09-
|
|
11
|
+
date: 2026-09-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -53,6 +53,7 @@ files:
|
|
|
53
53
|
- lib/cpro-client.rb
|
|
54
54
|
- lib/cpro.rb
|
|
55
55
|
- lib/cpro/account.rb
|
|
56
|
+
- lib/cpro/adressage.rb
|
|
56
57
|
- lib/cpro/archive.rb
|
|
57
58
|
- lib/cpro/auth/token.rb
|
|
58
59
|
- lib/cpro/auth/token_provider.rb
|