u-service 0.2.0 → 0.3.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
  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