acfs 0.42.0 → 0.43.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +8 -9
  4. data/acfs.gemspec +3 -3
  5. data/lib/acfs.rb +0 -2
  6. data/lib/acfs/adapter/base.rb +0 -2
  7. data/lib/acfs/adapter/typhoeus.rb +6 -9
  8. data/lib/acfs/collection.rb +3 -3
  9. data/lib/acfs/collections/paginatable.rb +16 -16
  10. data/lib/acfs/configuration.rb +3 -5
  11. data/lib/acfs/errors.rb +8 -7
  12. data/lib/acfs/global.rb +1 -1
  13. data/lib/acfs/location.rb +11 -11
  14. data/lib/acfs/middleware/base.rb +1 -2
  15. data/lib/acfs/middleware/json.rb +0 -1
  16. data/lib/acfs/middleware/logger.rb +0 -2
  17. data/lib/acfs/middleware/print.rb +0 -2
  18. data/lib/acfs/middleware/serializer.rb +3 -6
  19. data/lib/acfs/operation.rb +3 -4
  20. data/lib/acfs/request.rb +2 -3
  21. data/lib/acfs/request/callbacks.rb +2 -3
  22. data/lib/acfs/resource.rb +34 -5
  23. data/lib/acfs/{model → resource}/attributes.rb +70 -46
  24. data/lib/acfs/{model → resource}/attributes/base.rb +10 -6
  25. data/lib/acfs/resource/attributes/boolean.rb +33 -0
  26. data/lib/acfs/resource/attributes/date_time.rb +32 -0
  27. data/lib/acfs/{model → resource}/attributes/dict.rb +1 -3
  28. data/lib/acfs/{model → resource}/attributes/float.rb +3 -6
  29. data/lib/acfs/{model → resource}/attributes/integer.rb +3 -6
  30. data/lib/acfs/{model → resource}/attributes/list.rb +2 -5
  31. data/lib/acfs/{model → resource}/attributes/string.rb +4 -6
  32. data/lib/acfs/{model → resource}/attributes/uuid.rb +18 -8
  33. data/lib/acfs/resource/dirty.rb +47 -0
  34. data/lib/acfs/{model → resource}/initialization.rb +8 -10
  35. data/lib/acfs/{model → resource}/loadable.rb +3 -4
  36. data/lib/acfs/{model → resource}/locatable.rb +22 -23
  37. data/lib/acfs/{model → resource}/operational.rb +2 -3
  38. data/lib/acfs/resource/persistence.rb +257 -0
  39. data/lib/acfs/{model → resource}/query_methods.rb +81 -66
  40. data/lib/acfs/{model → resource}/service.rb +10 -9
  41. data/lib/acfs/resource/validation.rb +28 -0
  42. data/lib/acfs/response.rb +1 -2
  43. data/lib/acfs/response/formats.rb +1 -2
  44. data/lib/acfs/response/status.rb +3 -5
  45. data/lib/acfs/runner.rb +4 -5
  46. data/lib/acfs/service.rb +4 -6
  47. data/lib/acfs/service/middleware.rb +1 -3
  48. data/lib/acfs/singleton_resource.rb +11 -24
  49. data/lib/acfs/stub.rb +30 -22
  50. data/lib/acfs/util.rb +1 -1
  51. data/lib/acfs/version.rb +4 -2
  52. data/spec/acfs/adapter/typhoeus_spec.rb +4 -4
  53. data/spec/acfs/collection_spec.rb +33 -33
  54. data/spec/acfs/configuration_spec.rb +0 -1
  55. data/spec/acfs/global_spec.rb +3 -3
  56. data/spec/acfs/middleware/json_spec.rb +2 -2
  57. data/spec/acfs/middleware/msgpack_spec.rb +4 -4
  58. data/spec/acfs/request/callbacks_spec.rb +8 -8
  59. data/spec/acfs/request_spec.rb +5 -5
  60. data/spec/acfs/{model → resource}/attributes/boolean_spec.rb +2 -2
  61. data/spec/acfs/{model → resource}/attributes/date_time_spec.rb +7 -7
  62. data/spec/acfs/{model → resource}/attributes/dict_spec.rb +6 -6
  63. data/spec/acfs/{model → resource}/attributes/float_spec.rb +3 -3
  64. data/spec/acfs/{model → resource}/attributes/list_spec.rb +5 -5
  65. data/spec/acfs/{model → resource}/attributes/uuid_spec.rb +6 -6
  66. data/spec/acfs/{model → resource}/attributes_spec.rb +31 -17
  67. data/spec/acfs/{model → resource}/dirty_spec.rb +7 -5
  68. data/spec/acfs/{model → resource}/initialization_spec.rb +7 -7
  69. data/spec/acfs/{model → resource}/loadable_spec.rb +4 -3
  70. data/spec/acfs/{model → resource}/locatable_spec.rb +24 -14
  71. data/spec/acfs/{model → resource}/persistance_spec.rb +34 -34
  72. data/spec/acfs/{model → resource}/query_methods_spec.rb +171 -130
  73. data/spec/acfs/{model → resource}/validation_spec.rb +5 -6
  74. data/spec/acfs/response/formats_spec.rb +1 -1
  75. data/spec/acfs/response/status_spec.rb +1 -1
  76. data/spec/acfs/runner_spec.rb +2 -3
  77. data/spec/acfs/service/middleware_spec.rb +1 -1
  78. data/spec/acfs/service_spec.rb +3 -5
  79. data/spec/acfs/singleton_resource_spec.rb +3 -3
  80. data/spec/acfs/stub_spec.rb +52 -24
  81. data/spec/acfs_spec.rb +22 -19
  82. data/spec/spec_helper.rb +1 -1
  83. data/spec/support/hash.rb +9 -0
  84. data/spec/support/service.rb +4 -7
  85. data/spec/support/shared/find_callbacks.rb +7 -7
  86. metadata +52 -52
  87. data/lib/acfs/model.rb +0 -43
  88. data/lib/acfs/model/attributes/boolean.rb +0 -38
  89. data/lib/acfs/model/attributes/date_time.rb +0 -30
  90. data/lib/acfs/model/dirty.rb +0 -49
  91. data/lib/acfs/model/persistence.rb +0 -243
  92. data/lib/acfs/model/relations.rb +0 -10
  93. data/lib/acfs/model/validation.rb +0 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 59a4956dd778b88066cb532992954728f8a38001
4
- data.tar.gz: 4a2f14333a5665525a7726687025e2090178364a
3
+ metadata.gz: 0f1766a2689f9c913392aa1043fe386ecef50182
4
+ data.tar.gz: de21e2406b4178106c085594630a24fe6a591f99
5
5
  SHA512:
6
- metadata.gz: 5acf90afb3909391f0110986b30728154607038ec3d19c71b9234a40cd5570aee2efdd94ab9e10c450d34245ceac7582fa88ecef22bfe337ae8f5cdd8f512e95
7
- data.tar.gz: 720856b5184ac360193393672befdf31df29fce15b5c77fcc2d875f2e03ded3d4851867bf62a4cc9a9919868614990ac489a38db39abf220b45911b70393cb6c
6
+ metadata.gz: fb2415918968e9bc642a3d4762acbfa3a4fb9222beb16b4f1eafe138a2aeb9e53dedcd7789b14908aff2428eb6948a800f3ebe59e138fef3e5aed03d089b775f
7
+ data.tar.gz: 57ac583c1f24ff0f1c12e9d4041496e96476675c8be3d60ace5d98c1f0cec270d6419d9edf7eff533c5e218db689368a4ee92ac58172370c8f12a27b9b754c5b
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.43.0
4
+
5
+ * Remove `Acfs::Model` (inherit from `Acfs::Resource`)
6
+ * Stub does only a partial match of `:with` attributes now
7
+ * Allow blocks as stub `:return`s
8
+
3
9
  ## 0.42.0
4
10
 
5
11
  * Add simple dict attribute type
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Acfs - *API client for services*
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/acfs.png)](http://badge.fury.io/rb/acfs)
4
- [![Build Status](https://travis-ci.org/jgraichen/acfs.png?branch=stable-0)](https://travis-ci.org/jgraichen/acfs)
5
- [![Coverage Status](https://coveralls.io/repos/jgraichen/acfs/badge.png?branch=stable-0)](https://coveralls.io/r/jgraichen/acfs)
6
- [![Code Climate](https://codeclimate.com/github/jgraichen/acfs.png)](https://codeclimate.com/github/jgraichen/acfs)
7
- [![Dependency Status](https://gemnasium.com/jgraichen/acfs.png)](https://gemnasium.com/jgraichen/acfs)
8
- [![RubyDoc Documentation](http://b.repl.ca/v1/rubydoc-here-blue.png)](http://rubydoc.info/github/jgraichen/acfs/master/frames)
3
+ [![Gem Version](https://badge.fury.io/rb/acfs.svg)](http://badge.fury.io/rb/acfs)
4
+ [![Build Status](http://img.shields.io/travis/jgraichen/acfs/master.svg)](https://travis-ci.org/jgraichen/acfs)
5
+ [![Coverage Status](http://img.shields.io/coveralls/jgraichen/acfs/master.svg)](https://coveralls.io/r/jgraichen/acfs)
6
+ [![Code Climate](http://img.shields.io/codeclimate/github/jgraichen/acfs.svg)](https://codeclimate.com/github/jgraichen/acfs)
7
+ [![Dependency Status](http://img.shields.io/gemnasium/jgraichen/acfs.svg)](https://gemnasium.com/jgraichen/acfs)
8
+ [![RubyDoc Documentation](http://img.shields.io/badge/rubydoc-here-blue.svg)](http://rubydoc.info/github/jgraichen/acfs/master/frames)
9
9
 
10
10
  Acfs is a library to develop API client libraries for single services within a larger service oriented application.
11
11
 
@@ -250,8 +250,8 @@ it 'should find user number one' do
250
250
  expect(user.name).to be == 'John Smith'
251
251
  expect(user.age).to be == 32
252
252
 
253
- expect(@stub).to has_called
254
- expect(@stub).to_not have_called 5.times
253
+ expect(@stub).to be_called
254
+ expect(@stub).to_not be_called 5.times
255
255
  end
256
256
 
257
257
  it 'should not find user number two' do
@@ -288,7 +288,6 @@ Acfs supports [instrumentation via active support][1].
288
288
 
289
289
  Acfs expose to following events
290
290
 
291
- * `acfs.operation.before_process(operation)`: Acfs operation about to process
292
291
  * `acfs.operation.complete(operation, response)`: Acfs operation completed
293
292
  * `acfs.runner.sync_run(operation)`: Run operation right now skipping queue.
294
293
  * `acfs.runner.enqueue(operation)`: Enqueue operation to be run later.
@@ -8,13 +8,13 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Acfs::VERSION
9
9
  spec.authors = ['Jan Graichen']
10
10
  spec.email = %w(jg@altimos.de)
11
- spec.description = %q{API Client For Services}
12
- spec.summary = %q{An abstract API base client for service oriented application.}
11
+ spec.description = 'API Client For Services'
12
+ spec.summary = 'An abstract API base client for service oriented application.'
13
13
  spec.homepage = 'https://github.com/jgraichen/acfs'
14
14
  spec.license = 'MIT'
15
15
 
16
16
  spec.files = Dir['**/*'].grep(%r{^((bin|lib|test|spec|features)/|.*\.gemspec|.*LICENSE.*|.*README.*|.*CHANGELOG.*)})
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.executables = spec.files.grep(%r{^bin/}) {|f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = %w(lib)
20
20
 
@@ -15,7 +15,6 @@ module Acfs
15
15
  require 'acfs/collection'
16
16
  require 'acfs/configuration'
17
17
  require 'acfs/location'
18
- require 'acfs/model'
19
18
  require 'acfs/operation'
20
19
  require 'acfs/request'
21
20
  require 'acfs/resource'
@@ -48,4 +47,3 @@ module Acfs
48
47
  require 'acfs/adapter/typhoeus'
49
48
  end
50
49
  end
51
-
@@ -1,10 +1,8 @@
1
1
  module Acfs::Adapter
2
-
3
2
  # Base adapter handling operation queuing
4
3
  # and processing.
5
4
  #
6
5
  class Base
7
-
8
6
  # Start processing queued requests.
9
7
  #
10
8
  def start
@@ -2,11 +2,9 @@ require 'typhoeus'
2
2
 
3
3
  module Acfs
4
4
  module Adapter
5
-
6
5
  # Adapter for Typhoeus.
7
6
  #
8
7
  class Typhoeus < Base
9
-
10
8
  def start
11
9
  hydra.run
12
10
  rescue
@@ -14,9 +12,7 @@ module Acfs
14
12
  raise
15
13
  end
16
14
 
17
- def abort
18
- hydra.abort
19
- end
15
+ delegate :abort, to: :hydra
20
16
 
21
17
  def run(request)
22
18
  convert_request(request).run
@@ -26,7 +22,8 @@ module Acfs
26
22
  hydra.queue convert_request request
27
23
  end
28
24
 
29
- protected
25
+ protected
26
+
30
27
  def hydra
31
28
  @hydra ||= ::Typhoeus::Hydra.new
32
29
  end
@@ -50,9 +47,9 @@ module Acfs
50
47
 
51
48
  def convert_response(request, response)
52
49
  Acfs::Response.new request,
53
- status: response.code,
54
- headers: response.headers,
55
- body: response.body
50
+ status: response.code,
51
+ headers: response.headers,
52
+ body: response.body
56
53
  end
57
54
  end
58
55
  end
@@ -1,12 +1,12 @@
1
1
  require 'delegate'
2
2
 
3
- require 'acfs/model/loadable'
3
+ require 'acfs/resource/loadable'
4
4
  require 'acfs/collections/paginatable'
5
5
 
6
6
  module Acfs
7
-
7
+ #
8
8
  class Collection < ::Delegator
9
- include Model::Loadable
9
+ include Resource::Loadable
10
10
  include Acfs::Util::Callbacks
11
11
  include Collections::Paginatable
12
12
 
@@ -1,19 +1,14 @@
1
1
  module Acfs::Collections
2
+ #
2
3
  module Paginatable
3
4
  extend ActiveSupport::Concern
4
5
 
5
6
  included do
6
- def self.operation(action, opts = {}, &block)
7
+ def self.operation(_action, opts = {}, &_block)
7
8
  opts[:url]
8
9
  end
9
- end
10
-
11
- def total_pages
12
- @total_pages
13
- end
14
10
 
15
- def current_page
16
- @current_page
11
+ attr_reader :total_pages, :current_page
17
12
  end
18
13
 
19
14
  def process_response(response)
@@ -38,20 +33,21 @@ module Acfs::Collections
38
33
  end
39
34
 
40
35
  def page(rel, &block)
41
- if relations[rel]
42
- @resource_class.all nil, url: relations[rel], &block
43
- else
44
- raise ArgumentError.new "No relative page `#{rel}'."
45
- end
36
+ return unless relations[rel]
37
+
38
+ @resource_class.all nil, url: relations[rel], &block
46
39
  end
47
40
 
48
41
  private
42
+
49
43
  def relations
50
44
  @relations ||= {}
51
45
  end
52
46
 
53
47
  def setup_headers(headers)
54
- @total_pages = Integer(headers['X-Total-Pages']) if headers['X-Total-Pages']
48
+ if headers['X-Total-Pages']
49
+ @total_pages = Integer(headers['X-Total-Pages'])
50
+ end
55
51
 
56
52
  setup_links headers['Link'] if headers['Link']
57
53
  end
@@ -59,13 +55,17 @@ module Acfs::Collections
59
55
  def setup_links(links)
60
56
  links.split(/,\s+/).each do |link|
61
57
  if link =~ /^\s*<([^>]+)>.*\s+rel="([\w_-]+)".*$/
62
- relations[$2] = $1
58
+ relations[Regexp.last_match[2]] = Regexp.last_match[1]
63
59
  end
64
60
  end
65
61
  end
66
62
 
67
63
  def setup_params(params)
68
- @current_page = Integer(params.fetch(:page, 1)) rescue params[:page]
64
+ @current_page = begin
65
+ Integer params.fetch(:page, 1)
66
+ rescue ArgumentError
67
+ params[:page]
68
+ end
69
69
  end
70
70
  end
71
71
  end
@@ -2,7 +2,6 @@ require 'uri'
2
2
  require 'yaml'
3
3
 
4
4
  module Acfs
5
-
6
5
  # Acfs configuration is used to locate services and get their base URLs.
7
6
  #
8
7
  class Configuration
@@ -28,7 +27,7 @@ module Acfs
28
27
  if block.arity > 0
29
28
  block.call self
30
29
  else
31
- instance_eval &block
30
+ instance_eval(&block)
32
31
  end
33
32
  end
34
33
 
@@ -64,10 +63,10 @@ module Acfs
64
63
  # @return [undefined]
65
64
  #
66
65
  def load(filename)
67
- config = YAML::load File.read filename
66
+ config = YAML.load File.read filename
68
67
  env = ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development'
69
68
 
70
- config = config[env] if config.has_key? env
69
+ config = config[env] if config.key? env
71
70
  config.each do |key, value|
72
71
  case key
73
72
  when 'services' then load_services value
@@ -88,7 +87,6 @@ module Acfs
88
87
  end
89
88
 
90
89
  class << self
91
-
92
90
  # @api private
93
91
  #
94
92
  # Return current configuration object.
@@ -1,5 +1,4 @@
1
1
  module Acfs
2
-
3
2
  # Acfs base error.
4
3
  #
5
4
  class Error < StandardError
@@ -9,6 +8,8 @@ module Acfs
9
8
  end
10
9
  end
11
10
 
11
+ class UnsupportedOperation < StandardError; end
12
+
12
13
  # Response error containing the responsible response object.
13
14
  #
14
15
  class ErroneousResponse < Error
@@ -21,20 +22,20 @@ module Acfs
21
22
  message << ": #{response.code}"
22
23
  if response.data
23
24
  message << "\n with content:\n "
24
- message << response.data.map{|k,v| "#{k.inspect}: #{v.inspect}"}.join("\n ")
25
+ message << response.data.map {|k, v| "#{k.inspect}: #{v.inspect}" }.join("\n ")
25
26
  end
26
27
  if response.headers.any?
27
28
  message << "\n with headers:\n "
28
- message << response.headers.map{|k,v| "#{k}: #{v}"}.join("\n ")
29
+ message << response.headers.map {|k, v| "#{k}: #{v}" }.join("\n ")
29
30
  end
30
31
  message << "\nbased on request: #{response.request.method.upcase} #{response.request.url} #{response.request.format}"
31
32
  if response.request.data
32
33
  message << "\n with content:\n "
33
- message << response.request.data.map{|k,v| "#{k.inspect}: #{v.inspect}"}.join("\n ")
34
+ message << response.request.data.map {|k, v| "#{k.inspect}: #{v.inspect}" }.join("\n ")
34
35
  end
35
36
  if response.request.headers.any?
36
37
  message << "\n with headers:\n "
37
- message << response.request.headers.map{|k,v| "#{k}: #{v}"}.join("\n ")
38
+ message << response.request.headers.map {|k, v| "#{k}: #{v}" }.join("\n ")
38
39
  end
39
40
  end
40
41
  super opts, message
@@ -50,7 +51,6 @@ module Acfs
50
51
 
51
52
  super opts, 'Ambiguous stubs.'
52
53
  end
53
-
54
54
  end
55
55
 
56
56
  # Resource not found error raised on a 404 response
@@ -58,13 +58,14 @@ module Acfs
58
58
  class ResourceNotFound < ErroneousResponse
59
59
  end
60
60
 
61
+ #
61
62
  class InvalidResource < ErroneousResponse
62
63
  attr_reader :errors, :resource
63
64
 
64
65
  def initialize(opts = {})
65
66
  @errors = opts.delete :errors
66
67
  @resource = opts.delete :resource
67
- opts[:message] ||= @errors.map{ |k,v| "#{k}: #{v.join ', '}" }.join ', ' if @errors.is_a? Hash
68
+ opts[:message] ||= @errors.map {|k, v| "#{k}: #{v.join ', '}" }.join ', ' if @errors.is_a? Hash
68
69
  opts[:message] ||= @errors.join ', ' if @errors.is_a? Array
69
70
  super
70
71
  end
@@ -75,7 +75,7 @@ module Acfs
75
75
  def on(*resources)
76
76
  resources.each do |resource|
77
77
  add_callback resource do |_|
78
- yield(*resources) unless resources.any?{|res| !res.loaded? }
78
+ yield(*resources) unless resources.any? {|res| !res.loaded? }
79
79
  end
80
80
  end
81
81
  end
@@ -1,5 +1,4 @@
1
1
  module Acfs
2
-
3
2
  # @api private
4
3
  #
5
4
  # Describes a URL with placeholders.
@@ -7,17 +6,17 @@ module Acfs
7
6
  class Location
8
7
  attr_reader :arguments, :raw, :struct, :args
9
8
 
10
- REGEXP= /^:([A-z][A-z0-9_]*)$/
9
+ REGEXP = /^:([A-z][A-z0-9_]*)$/
11
10
 
12
11
  def initialize(uri, args = {})
13
12
  @raw = URI.parse uri
14
13
  @args = args
15
- @struct = raw.path.split('/').reject(&:empty?).map{|s| s =~ REGEXP ? $1.to_sym : s }
16
- @arguments = struct.select{|s| Symbol === s }
14
+ @struct = raw.path.split('/').reject(&:empty?).map {|s| s =~ REGEXP ? Regexp.last_match[1].to_sym : s }
15
+ @arguments = struct.select {|s| s.is_a?(Symbol) }
17
16
  end
18
17
 
19
18
  def build(args = {})
20
- unless Hash === args
19
+ unless args.is_a?(Hash)
21
20
  raise ArgumentError.new "URI path arguments must be a hash, `#{args.inspect}' given."
22
21
  end
23
22
 
@@ -25,8 +24,8 @@ module Acfs
25
24
  end
26
25
 
27
26
  def extract_from(*args)
28
- args = Hash.new.tap do |collect|
29
- arguments.each{|key| collect[key] = extract_arg key, args }
27
+ args = {}.tap do |collect|
28
+ arguments.each {|key| collect[key] = extract_arg key, args }
30
29
  end
31
30
 
32
31
  build args
@@ -34,7 +33,7 @@ module Acfs
34
33
 
35
34
  def str
36
35
  uri = raw.dup
37
- uri.path = URI.escape '/' + struct.map{|s| lookup_arg(s, args) }.join('/')
36
+ uri.path = URI.escape '/' + struct.map {|s| lookup_arg(s, args) }.join('/')
38
37
  uri.to_s
39
38
  end
40
39
 
@@ -44,16 +43,17 @@ module Acfs
44
43
  alias_method :to_s, :raw_uri
45
44
 
46
45
  private
46
+
47
47
  def extract_arg(key, hashes)
48
48
  hashes.each_with_index do |hash, index|
49
- return (index == 0 ? hash.delete(key) : hash.fetch(key)) if hash.has_key?(key)
49
+ return (index == 0 ? hash.delete(key) : hash.fetch(key)) if hash.key?(key)
50
50
  end
51
51
 
52
52
  nil
53
53
  end
54
54
 
55
55
  def lookup_arg(arg, args)
56
- Symbol === arg ? lookup_replacement(arg, args) : arg
56
+ arg.is_a?(Symbol) ? lookup_replacement(arg, args) : arg
57
57
  end
58
58
 
59
59
  def lookup_replacement(sym, args)
@@ -67,7 +67,7 @@ module Acfs
67
67
  args.fetch(sym.to_s) do
68
68
  args.fetch(sym) do
69
69
  if args[:raise].nil? || args[:raise]
70
- raise ArgumentError.new "URI path argument `#{sym}' missing on `#{to_s}'. Given: `#{args}.inspect'"
70
+ raise ArgumentError.new "URI path argument `#{sym}' missing on `#{self}'. Given: `#{args}.inspect'"
71
71
  else
72
72
  ":#{sym}"
73
73
  end
@@ -1,6 +1,5 @@
1
1
  module Acfs
2
2
  module Middleware
3
-
4
3
  # A base middleware that does not modify request or response.
5
4
  # Can be used as super class for custom middleware implementations.
6
5
  #
@@ -13,7 +12,7 @@ module Acfs
13
12
  end
14
13
 
15
14
  def call(request)
16
- request.on_complete { |res, nxt| response(res, nxt) } if respond_to? :response
15
+ request.on_complete {|res, nxt| response(res, nxt) } if respond_to? :response
17
16
  app.call(request)
18
17
  end
19
18
  end
@@ -2,7 +2,6 @@ require 'multi_json'
2
2
 
3
3
  module Acfs
4
4
  module Middleware
5
-
6
5
  # A middleware to encore request data using JSON.
7
6
  #
8
7
  class JSON < Serializer
@@ -2,11 +2,9 @@ require 'logger'
2
2
 
3
3
  module Acfs
4
4
  module Middleware
5
-
6
5
  # Log requests and responses.
7
6
  #
8
7
  class Logger < Base
9
-
10
8
  def initialize(app, options = {})
11
9
  super
12
10
  @logger = options[:logger] if options[:logger]