nifty_services 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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