api-blueprint 0.6.5 → 0.7.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4bc23cc364607d2d9fd33fa1280b6368b8cb05e1
4
- data.tar.gz: 93988623b8ead4352dffd1c049f10f49e6952755
3
+ metadata.gz: 9f6f2c0e18a173e006f4a694af709f8839420d06
4
+ data.tar.gz: 88458d370dfe5ee1ebc14ec619686482e558b00a
5
5
  SHA512:
6
- metadata.gz: 4703e7ebddf01be27c08edb19a04289b0f273d3c4dbf26837a8c4f4262933e6a4cf51a4aa1ffefe02c69fefe174ba136d58871062e03cfbd6529cac990b581d1
7
- data.tar.gz: 0e9633b76babd4de3d3bacbd82a40c9822cea4da1381eab8f5af846ff7f014f1b96c0f8e25ff290f882eea0fa882639e260de32d4693c2225c3cb39bda4c4586
6
+ metadata.gz: 8d2a2d17f6d6bab0de23514debb8de5f308119b5e9a74076157245e3cd98f03eac1d5fd4d63f3ffffde2779e208e8f92205cd19cb6e88f87e0a4c980c101dc24
7
+ data.tar.gz: 42c96d768641b2e6be0eaa4dbaba645f0a9fc0823669d06e95c1b0301e6fdb7d0e34a3e44083de0e91b97b5d705a2dfdc68c17f85e25c2fceac364fbc9b41cbd
data/README.md CHANGED
@@ -224,6 +224,24 @@ blueprint :get, "/endpoint" do |runner, result|
224
224
  end
225
225
  ```
226
226
 
227
+ ## Response logging
228
+
229
+ Response logging can be enabled on a per-blueprint level, or by setting `config.log_responses = true` on an `ApiBlueprint::Model`:
230
+
231
+ ```ruby
232
+ class AstronautsInSpace < ApiBlueprint::Model
233
+ configure do |config|
234
+ # enable logging for all blueprints
235
+ config.log_responses = true
236
+ end
237
+
238
+ def self.fetch
239
+ # enable logging for just one blueprint
240
+ blueprint :get, "http://api.open-notify.org/astros.json", log_responses: true
241
+ end
242
+ end
243
+ ```
244
+
227
245
  ## A note on Dry::Struct immutability
228
246
 
229
247
  Models you create use `Dry::Struct` to handle initialization and assignment. `Dry::Struct` is designed with immutability in mind, so if you need to mutate the objects you have, there are two possibilities; explicitly define an `attr_writer` for the attributes which you want to mutate, or do things the "Dry::Struct way" and use the current instance to initialize a new instance:
@@ -10,6 +10,7 @@ module ApiBlueprint
10
10
  attribute :replacements, Types::Hash.default(Hash.new)
11
11
  attribute :after_build, Types::Instance(Proc).optional
12
12
  attribute :builder, Types.Instance(ApiBlueprint::Builder).default(ApiBlueprint::Builder.new)
13
+ attribute :log_responses, Types::Strict::Bool.default(false)
13
14
 
14
15
  def all_request_options(options = {})
15
16
  {
@@ -38,6 +39,19 @@ module ApiBlueprint
38
39
  after_build.present? ? after_build.call(runner, created) : created
39
40
  end
40
41
 
42
+ def connection
43
+ Faraday.new do |conn|
44
+ conn.use ApiBlueprint::ResponseMiddleware
45
+ conn.response :json, content_type: /\bjson$/
46
+ conn.response :logger if log_responses
47
+
48
+ conn.adapter Faraday.default_adapter
49
+ conn.headers = {
50
+ "User-Agent": "ApiBlueprint"
51
+ }
52
+ end
53
+ end
54
+
41
55
  private
42
56
 
43
57
  def build(from:, headers: {}, status: nil)
@@ -63,19 +77,6 @@ module ApiBlueprint
63
77
  end
64
78
  end
65
79
 
66
- def connection
67
- Faraday.new do |conn|
68
- conn.use ApiBlueprint::ResponseMiddleware
69
- conn.response :json, content_type: /\bjson$/
70
- # conn.response :logger
71
-
72
- conn.adapter Faraday.default_adapter
73
- conn.headers = {
74
- "User-Agent": "ApiBlueprint"
75
- }
76
- end
77
- end
78
-
79
80
  def set_errors(obj, body)
80
81
  if obj.respond_to?(:errors) && body.is_a?(Hash)
81
82
  errors = body.with_indifferent_access.fetch :errors, {}
@@ -12,6 +12,7 @@ module ApiBlueprint
12
12
  setting :parser, Parser.new
13
13
  setting :builder, Builder.new
14
14
  setting :replacements, {}
15
+ setting :log_responses, false
15
16
 
16
17
  attribute :response_headers, Types::Hash.optional
17
18
  attribute :response_status, Types::Integer.optional
@@ -23,7 +24,8 @@ module ApiBlueprint
23
24
  creates: self,
24
25
  parser: config.parser,
25
26
  replacements: config.replacements,
26
- builder: config.builder
27
+ builder: config.builder,
28
+ log_responses: config.log_responses
27
29
  }.merge(options)
28
30
 
29
31
  if block_given?
@@ -1,3 +1,3 @@
1
1
  module ApiBlueprint
2
- VERSION = '0.6.5'
2
+ VERSION = '0.7.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api-blueprint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damien Timewell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-11 00:00:00.000000000 Z
11
+ date: 2018-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-types