cpro-client 0.2.0 → 0.2.1
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/CHANGELOG.md +20 -0
- data/Gemfile.lock +2 -2
- data/README.md +5 -0
- data/cpro-client.gemspec +1 -1
- data/lib/cpro/account.rb +2 -0
- data/lib/cpro/auth/token_provider.rb +1 -1
- data/lib/cpro/connection.rb +2 -2
- data/lib/cpro/middleware/authentication.rb +3 -7
- data/lib/cpro/middleware/raise_error.rb +12 -4
- data/lib/cpro/resources/base.rb +2 -1
- data/lib/cpro/version.rb +1 -1
- data/lib/cpro.rb +1 -0
- metadata +11 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 40f1e1557770b6ee03af92e419c95e19071d2b4a53848db46cdd76e409802eb6
|
|
4
|
+
data.tar.gz: 2f75110a47a4954f8151fe5d5cd85daa17e4d3e8b924512a96eab899865faf41
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7e479ee8731fcd352635ade84a00ffc1a22901ce9d986d4ee47b26a65bc4313a746fbc40b6e7917191aab6002d2b95e0409b230cebae81e9ff952253479ff0e4
|
|
7
|
+
data.tar.gz: 9a75779dfefdd3a2b1e1ff5f156cc051969554cb7ac557bdc24c2c677ac0697d5f754f57274b38374ac27969b2af7011385d62f3a672f2cac518844c55fdf416
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## [0.2.1] - 2026-08-28
|
|
5
|
+
|
|
6
|
+
### Modifié
|
|
7
|
+
- La contrainte sur Faraday passe de `~> 2.0` à `>= 0.9, < 3.0`. La gem s'installe désormais dans
|
|
8
|
+
une application verrouillée sur Faraday 0.9 par une autre dépendance, sans cesser de fonctionner
|
|
9
|
+
avec Faraday 2. Suite vérifiée sur 0.9.2, 1.10.4 et 2.8.1.
|
|
10
|
+
- Les middlewares JSON sont portés par la gem (`Cpro::Middleware::EncodeJson` et `ParseJson`)
|
|
11
|
+
plutôt qu'empruntés à Faraday, qui ne les embarque qu'à partir de la 1.0 — avant, ils venaient
|
|
12
|
+
de la gem `faraday_middleware`. La dépendance d'exécution reste Faraday seul.
|
|
13
|
+
- `Cpro::Middleware::RaiseError` reçoit `on_complete` de l'objet réponse au lieu de l'hériter de sa
|
|
14
|
+
classe de base : c'est la seule forme commune à Faraday 0.9 et à Faraday 2, dont les classes de
|
|
15
|
+
base diffèrent. `reason_phrase`, absent avant la 1.0, n'est lu que s'il existe.
|
|
16
|
+
|
|
17
|
+
### Retiré
|
|
18
|
+
- `Cpro::Middleware::Authentication::ACCOUNT_HEADER`, remplacé par `Cpro::Account::HEADER`. Le
|
|
19
|
+
compte technique n'est plus transmis par le contexte de requête Faraday — introduit en 1.0 —
|
|
20
|
+
mais posé en en-tête par `Cpro::Resources::Base`. Aucun changement pour l'appelant :
|
|
21
|
+
`with_account` reste le point d'entrée.
|
|
22
|
+
|
|
23
|
+
|
|
4
24
|
## [0.2.0] - 2026-08-27
|
|
5
25
|
|
|
6
26
|
### Corrigé
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -16,6 +16,11 @@ Scénario couvert :
|
|
|
16
16
|
gem "cpro-client"
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
+
Faraday est la seule dépendance d'exécution, de la version 0.9 à la version 2 incluse — la gem
|
|
20
|
+
porte elle-même les middlewares JSON, que Faraday n'embarque qu'à partir de la 1.0. La suite est
|
|
21
|
+
vérifiée sur 0.9.2, 1.10.4 et 2.8.1 ; le développement se fait sur la plus récente, et l'on teste
|
|
22
|
+
un plancher avec `gem "faraday", "0.9.2"` ajouté au `Gemfile` avant `bundle install`.
|
|
23
|
+
|
|
19
24
|
## Configuration
|
|
20
25
|
|
|
21
26
|
Les identifiants PISTE identifient l'application et sont stables :
|
data/cpro-client.gemspec
CHANGED
data/lib/cpro/account.rb
CHANGED
|
@@ -48,7 +48,7 @@ module Cpro
|
|
|
48
48
|
@connection ||= Faraday.new do |faraday|
|
|
49
49
|
faraday.request :url_encoded
|
|
50
50
|
faraday.use Middleware::RaiseError
|
|
51
|
-
faraday.
|
|
51
|
+
faraday.use Middleware::ParseJson
|
|
52
52
|
faraday.options.timeout = configuration.timeout
|
|
53
53
|
faraday.options.open_timeout = configuration.open_timeout
|
|
54
54
|
faraday.adapter configuration.adapter
|
data/lib/cpro/connection.rb
CHANGED
|
@@ -5,10 +5,10 @@ module Cpro
|
|
|
5
5
|
# Middlewares ordering matters here
|
|
6
6
|
def self.build(configuration, token_provider, base_path)
|
|
7
7
|
Faraday.new(url: "#{configuration.api_host}#{base_path}/") do |faraday|
|
|
8
|
-
faraday.
|
|
8
|
+
faraday.use Middleware::EncodeJson
|
|
9
9
|
faraday.use Middleware::Authentication, token_provider: token_provider
|
|
10
10
|
faraday.use Middleware::RaiseError
|
|
11
|
-
faraday.
|
|
11
|
+
faraday.use Middleware::ParseJson
|
|
12
12
|
faraday.response :logger, configuration.logger if configuration.logger
|
|
13
13
|
faraday.options.timeout = configuration.timeout
|
|
14
14
|
faraday.options.open_timeout = configuration.open_timeout
|
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
module Cpro
|
|
4
4
|
module Middleware
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
# Faraday
|
|
5
|
+
# Porte le jeton OAuth2 PISTE, commun à l'application, et rejoue une fois l'appel refusé en
|
|
6
|
+
# 401. Le compte technique, lui, est posé par Resources::Base : il change d'un appel à l'autre
|
|
7
|
+
# et Faraday n'offre pas de contexte de requête avant la 1.0.
|
|
8
8
|
class Authentication < Faraday::Middleware
|
|
9
|
-
ACCOUNT_HEADER = "cpro-account"
|
|
10
|
-
|
|
11
9
|
def initialize(app, token_provider:)
|
|
12
10
|
super(app)
|
|
13
11
|
@token_provider = token_provider
|
|
@@ -43,8 +41,6 @@ module Cpro
|
|
|
43
41
|
|
|
44
42
|
def apply(env)
|
|
45
43
|
env.request_headers["Authorization"] = "Bearer #{@token_provider.token.value}"
|
|
46
|
-
account = env.request.context && env.request.context[:account]
|
|
47
|
-
env.request_headers[ACCOUNT_HEADER] = account.header_value if account
|
|
48
44
|
end
|
|
49
45
|
end
|
|
50
46
|
end
|
|
@@ -16,7 +16,16 @@ module Cpro
|
|
|
16
16
|
|
|
17
17
|
CORRELATION_HEADER = "x-correlationid"
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
# Appelé sur l'objet réponse : Faraday 0.9 tient `on_complete` de
|
|
20
|
+
# Faraday::Response::Middleware, que Faraday 2 a supprimé, et Faraday 2 le tient de
|
|
21
|
+
# Faraday::Middleware, que Faraday 0.9 n'en dote pas. La réponse, elle, l'expose partout.
|
|
22
|
+
def call(env)
|
|
23
|
+
@app.call(env).on_complete { |response| verifier(response) }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def verifier(env)
|
|
20
29
|
return if env.status < 400
|
|
21
30
|
|
|
22
31
|
raise error_class(env.status).new(
|
|
@@ -27,14 +36,13 @@ module Cpro
|
|
|
27
36
|
)
|
|
28
37
|
end
|
|
29
38
|
|
|
30
|
-
private
|
|
31
|
-
|
|
32
39
|
def error_class(status)
|
|
33
40
|
ERRORS[status] || (status >= 500 ? ServerError : ApiError)
|
|
34
41
|
end
|
|
35
42
|
|
|
43
|
+
# `reason_phrase` n'existe pas avant Faraday 1.0.
|
|
36
44
|
def message_for(env)
|
|
37
|
-
detail = detail_for(env.body) || env.reason_phrase
|
|
45
|
+
detail = detail_for(env.body) || (env.reason_phrase if env.respond_to?(:reason_phrase))
|
|
38
46
|
[env.status, detail].compact.join(" ")
|
|
39
47
|
end
|
|
40
48
|
|
data/lib/cpro/resources/base.rb
CHANGED
|
@@ -23,10 +23,11 @@ module Cpro
|
|
|
23
23
|
# Le swagger Annuaire ne déclare pas cpro-account, mais l'API le rejette en 400 sans lui,
|
|
24
24
|
# healthcheck compris : toutes les ressources G2B l'exigent (vérifié en sandbox).
|
|
25
25
|
def request(method, path, params: nil, body: nil)
|
|
26
|
+
account = required_account
|
|
26
27
|
response = connection.public_send(method) do |request|
|
|
27
28
|
request.url(path, params || {})
|
|
28
29
|
request.body = body unless body.nil?
|
|
29
|
-
request.
|
|
30
|
+
request.headers[Account::HEADER] = account.header_value
|
|
30
31
|
end
|
|
31
32
|
response.body
|
|
32
33
|
end
|
data/lib/cpro/version.rb
CHANGED
data/lib/cpro.rb
CHANGED
|
@@ -8,6 +8,7 @@ require_relative "cpro/configuration"
|
|
|
8
8
|
require_relative "cpro/account"
|
|
9
9
|
require_relative "cpro/auth/token"
|
|
10
10
|
require_relative "cpro/auth/token_provider"
|
|
11
|
+
require_relative "cpro/middleware/json"
|
|
11
12
|
require_relative "cpro/middleware/authentication"
|
|
12
13
|
require_relative "cpro/middleware/raise_error"
|
|
13
14
|
require_relative "cpro/connection"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hôtentic
|
|
@@ -14,16 +14,22 @@ dependencies:
|
|
|
14
14
|
name: faraday
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '0.9'
|
|
20
|
+
- - "<"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '3.0'
|
|
20
23
|
type: :runtime
|
|
21
24
|
prerelease: false
|
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
26
|
requirements:
|
|
24
|
-
- - "
|
|
27
|
+
- - ">="
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0.9'
|
|
30
|
+
- - "<"
|
|
25
31
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
32
|
+
version: '3.0'
|
|
27
33
|
description: 'Client Ruby des API G2B de Chorus Pro (PPF) : authentification OAuth2
|
|
28
34
|
PISTE, consultation de l''annuaire par SIRET ou SIREN, et dépôt de factures Factur-X.'
|
|
29
35
|
email:
|