api-blueprint 0.6.5 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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