nifty_services 0.0.3 → 0.0.4

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.
data/test.rb ADDED
@@ -0,0 +1,82 @@
1
+ class DailyNewsMailSendService < NiftyServices::BaseService
2
+
3
+ before_execute do
4
+ log.info('Routine started at: %s' % Time.now)
5
+ end
6
+
7
+ after_execute do
8
+ log.info('Routine ended at: %s' % Time.now)
9
+ end
10
+
11
+ after_initialize do
12
+ user_data = [@user.name, @user.email]
13
+ log.info('Routine Details: Send daily news email to user %s(%s)' % user_data)
14
+ end
15
+
16
+ after_success do
17
+ log.info('Success sent daily news feed email to user')
18
+ end
19
+
20
+ before_error do
21
+ log.warn('Something went wrong')
22
+ end
23
+
24
+ after_error do
25
+ log.error('Error sending email to user. See details below :(')
26
+ log.error(errors)
27
+ end
28
+
29
+ attr_reader :user
30
+
31
+ def initialize(user, options = {})
32
+ @user = user
33
+ super(options)
34
+ end
35
+
36
+ def execute
37
+ execute_action do
38
+ if can_execute?
39
+ success_response if send_mail_to_user
40
+ end
41
+ end
42
+ end
43
+
44
+ private
45
+ def send_mail_to_user
46
+ # just to fake, a real implementation could be something like:
47
+ # @user.send_daily_news_mail!
48
+ return true
49
+ end
50
+
51
+ def can_execute?
52
+ unless valid_user?
53
+ # returns false
54
+ return not_found_error!('users.not_found')
55
+ end
56
+
57
+ unless @user.abble_to_receive_daily_news_mail?
58
+ # returns false
59
+ return forbidden_error!('users.yet_received_daily_news_mail')
60
+ end
61
+
62
+ return true
63
+ end
64
+
65
+ def valid_user?
66
+ # check if object is valid and is a User class type
67
+ valid_object?(@user, User)
68
+ end
69
+ end
70
+
71
+ class User < Struct.new(:name, :email)
72
+ # just to play around with results
73
+ def abble_to_receive_daily_news_mail?
74
+ rand(10) < 5
75
+ end
76
+ end
77
+
78
+ user = User.new('Rafael Fidelis', 'rafa_fidelis@yahoo.com.br')
79
+
80
+ # Default logger is NiftyService.config.logger # Logger.new('/dev/null')
81
+ service = DailyNewsMailSendService.new(user, logger: Logger.new('daily_news.log'))
82
+ service.execute
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nifty_services
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael Fidelis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-15 00:00:00.000000000 Z
11
+ date: 2016-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -99,6 +99,7 @@ files:
99
99
  - Rakefile
100
100
  - bin/console
101
101
  - bin/setup
102
+ - daily_news.log
102
103
  - lib/nifty_services.rb
103
104
  - lib/nifty_services/base_action_service.rb
104
105
  - lib/nifty_services/base_create_service.rb
@@ -108,8 +109,11 @@ files:
108
109
  - lib/nifty_services/base_update_service.rb
109
110
  - lib/nifty_services/configuration.rb
110
111
  - lib/nifty_services/errors.rb
112
+ - lib/nifty_services/extensions/callbacks_interface.rb
113
+ - lib/nifty_services/util.rb
111
114
  - lib/nifty_services/version.rb
112
115
  - nifty_services.gemspec
116
+ - test.rb
113
117
  homepage: https://github.com/fidelisrafael/nifty_services
114
118
  licenses:
115
119
  - MIT