u-service 0.2.0 → 0.3.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
  SHA256:
3
- metadata.gz: 42803a1d91c114a48bd0eee07c50030b605d7d31b791a615af5dd64a4f8a3b9b
4
- data.tar.gz: e2c9a02fa6768cf19051350f9d413b85b5a7aaa0882ac9c239a02fd8a5017fbc
3
+ metadata.gz: 5a687992a7448d7f960dc8cde7a2cdcd84a0372683ec779cc6cb5d762cf5a32b
4
+ data.tar.gz: 4cbf493636de858653a43aa29ea340fee60ee4540fa18042e88366096a05bae7
5
5
  SHA512:
6
- metadata.gz: 15c25c0267a1ed6f7bbe5ff846aa0b1959651c6c2050cf9db98555c866611af1a9217e788daaebd4b5122baea5de17e2e16af626fe670dcf1396a6226113820e
7
- data.tar.gz: c961507d6cabb390e44e75b03fe212f6697d71465e376304f483e00d932194a7d4b8625e7137cd0c5220603c59c081b1dad8d4db61237e49b52eeafdad1e706c
6
+ metadata.gz: 9369b4a41c8239db271fd5c1ad87e910afe77a18b0b5371806197bb014b5d886fcb206783354339b70513e9e1862ce785306873f02b7ce68a2724db072740f5b
7
+ data.tar.gz: 6dead66303540f70ca8d7dabd22f8580c81f43d1a0b127148a1c37698f72f1fe009a78d21486e3f1858eacf05a760a90da0e53ced0a276f932de3afcc3ae55e4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- u-service (0.2.0)
4
+ u-service (0.3.0)
5
5
  u-attributes (~> 1.1)
6
6
 
7
7
  GEM
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Micro
4
+ module Service
5
+ class Pipeline
6
+ INVALID_COLLECTION =
7
+ 'argument must be a collection of `Micro::Service::Base` classes'.freeze
8
+
9
+ def self.[](*services)
10
+ new(services)
11
+ end
12
+
13
+ def initialize(services)
14
+ @services = validate!(services)
15
+ end
16
+
17
+ def call(arg={})
18
+ first_result = Micro::Service::Result::Success(arg, type: nil)
19
+
20
+ @services.reduce(first_result) do |result, service|
21
+ break result if result.failure?
22
+
23
+ service.call(result.value)
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def validate!(services)
30
+ Array(services).tap do |collection|
31
+ if collection.any? { |klass| !(klass < ::Micro::Service::Base) }
32
+ raise ArgumentError, INVALID_COLLECTION
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Micro
4
4
  module Service
5
- VERSION = '0.2.0'.freeze
5
+ VERSION = '0.3.0'.freeze
6
6
  end
7
7
  end
data/lib/micro/service.rb CHANGED
@@ -6,3 +6,4 @@ require 'micro/service/version'
6
6
  require 'micro/service/result'
7
7
  require 'micro/service/base'
8
8
  require 'micro/service/strict/base'
9
+ require 'micro/service/pipeline'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: u-service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Serradura
@@ -85,6 +85,7 @@ files:
85
85
  - bin/setup
86
86
  - lib/micro/service.rb
87
87
  - lib/micro/service/base.rb
88
+ - lib/micro/service/pipeline.rb
88
89
  - lib/micro/service/result.rb
89
90
  - lib/micro/service/strict/base.rb
90
91
  - lib/micro/service/version.rb