service_caller 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: aa23570d96d1da00dd99667ea8995706280f18856b28c84b6b2f7c81d306e7de
4
+ data.tar.gz: 7e64dac81a0011f73997aa7a42744e188e260e840627c53acf3105ae7966e52b
5
+ SHA512:
6
+ metadata.gz: df0193c0514f45c08f8496325813d40856e9ff216aea7604516504e7e130f8aec527c13e11ebded15cd9d4c23c97b363fd2e8c38d4f685d222aa7e909c7f460f
7
+ data.tar.gz: adef65b25e71b55be059d7a4049fe58bb6c994131bcb29e36f76092a510e426d06c5c8f54d4c3939c8cd6423365d3e3c83e9b8ded02a4b1602f74e80a6c2c896
data/README.md ADDED
@@ -0,0 +1,46 @@
1
+ # Service Caller
2
+
3
+ ### How to Use
4
+ * install gem
5
+ ```
6
+ gem install service_caller-0.1.0.gem
7
+ ```
8
+
9
+ * require gem
10
+ ```ruby
11
+ require 'service_caller'
12
+ ```
13
+
14
+ * define service & inherit from `ServiceCaller`
15
+ ```ruby
16
+ class [Custom Service] < ServiceCaller
17
+ def initialize(*args)
18
+ ...
19
+ end
20
+
21
+ def call
22
+ ...
23
+ end
24
+ end
25
+ ```
26
+
27
+ * call the service
28
+ ```ruby
29
+ service = [Custom Service].call(*args)
30
+ ```
31
+
32
+ * check if success
33
+ ```ruby
34
+ service.success?
35
+ service.failed?
36
+ ```
37
+
38
+ * get success result if success
39
+ ```ruby
40
+ service.result
41
+ ```
42
+
43
+ * get error if failed
44
+ ```ruby
45
+ service.error
46
+ ```
@@ -0,0 +1,13 @@
1
+ require 'service_extend/callable'
2
+ require 'service_extend/handler'
3
+ require 'service_error'
4
+
5
+ class ServiceCaller
6
+ include ServiceExtend::Callable
7
+ extend ServiceExtend::Callable::ClassMethods
8
+
9
+ def self.inherited(child_class)
10
+ child_class.prepend(ServiceExtend::Handler)
11
+ super
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ class ServiceError < StandardError
2
+ attr_reader :code
3
+
4
+ class << self
5
+ def generate_from_exception(exception)
6
+ service_err = new(500, "#{exception.class.name}: #{exception.message}")
7
+ service_err.set_backtrace(exception.backtrace)
8
+ service_err
9
+ end
10
+ end
11
+
12
+ def initialize(code, message)
13
+ @code = code
14
+ super(message)
15
+ end
16
+ end
@@ -0,0 +1,21 @@
1
+ module ServiceExtend
2
+ module Callable
3
+ attr_reader :error, :result
4
+
5
+ module ClassMethods
6
+ def call(*args)
7
+ service = new(*args)
8
+ service.call
9
+ service
10
+ end
11
+ end
12
+
13
+ def success?
14
+ error.nil? || error.empty?
15
+ end
16
+
17
+ def failed?
18
+ !success?
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ module ServiceExtend
2
+ module Handler
3
+ def call
4
+ super
5
+ rescue ServiceError => e
6
+ @error = e
7
+ rescue Exception => e
8
+ @error = ServiceError.generate_from_exception(e)
9
+ end
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,49 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: service_caller
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - JiaRou Lee
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-07-24 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: basic implement of service object
14
+ email: laura34963@kdanmobile.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files:
18
+ - README.md
19
+ files:
20
+ - README.md
21
+ - lib/service_caller.rb
22
+ - lib/service_error.rb
23
+ - lib/service_extend/callable.rb
24
+ - lib/service_extend/handler.rb
25
+ homepage: https://github.com/laura34963/service_caller
26
+ licenses:
27
+ - MIT
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options:
31
+ - "--charset=UTF-8"
32
+ require_paths:
33
+ - lib
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: 2.5.1
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ requirements: []
45
+ rubygems_version: 3.0.1
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: Ruby Service Basic Class
49
+ test_files: []