factor-connector-timer 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/factor/connector/timer.rb +61 -0
  2. metadata +78 -0
@@ -0,0 +1,61 @@
1
+ require 'factor-connector-api'
2
+ require 'rufus-scheduler'
3
+
4
+ Factor::Connector.service 'timer' do
5
+ listener 'every' do
6
+ start do |params|
7
+ hours = params['hours']
8
+ minutes = params['minutes']
9
+ seconds = params['seconds']
10
+ times = [hours, minutes, seconds]
11
+
12
+ fail 'hours, minutes, or seconds, but only one can be used' if times.count { |t| !t.nil? } > 1
13
+ fail 'hours, minutes, or seconds must be defined' if times.all? { |t| t.nil? }
14
+
15
+ every = "#{minutes}m" if minutes
16
+ every = "#{seconds}s" if seconds
17
+ every = "#{hours}h" if hours
18
+
19
+ info "Starting timer every #{every}"
20
+
21
+ @scheduler = Rufus::Scheduler.new
22
+ begin
23
+ @scheduler.every every do
24
+ time = Time.now.to_s
25
+ info "Trigger time at #{time}"
26
+ start_workflow time_run: time
27
+ end
28
+ rescue
29
+ fail "The time specified `#{every}` is invalid"
30
+ end
31
+
32
+ end
33
+ stop do |_data|
34
+ @scheduler.stop
35
+ end
36
+ end
37
+
38
+ listener 'cron' do
39
+
40
+ scheduler = Rufus::Scheduler.new
41
+
42
+ start do |data|
43
+ crontab = data['crontab']
44
+ info "Starting timer using the crontab `#{crontab}`"
45
+
46
+ fail 'No crontab specified' if !crontab || crontab.empty?
47
+
48
+ begin
49
+ scheduler.cron crontab do
50
+ start_workflow time_run: Time.now.to_s
51
+ end
52
+ rescue => ex
53
+ fail "The crontab entry `#{crontab}` was invalid.", exception: ex
54
+ end
55
+
56
+ end
57
+ stop do |_data|
58
+ scheduler.stop
59
+ end
60
+ end
61
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: factor-connector-timer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Maciej Skierkowski
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-09-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rufus-scheduler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.9
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 3.0.9
30
+ - !ruby/object:Gem::Dependency
31
+ name: factor-connector-api
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.0.1
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.0.1
46
+ description:
47
+ email:
48
+ - maciej@factor.io
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - lib/factor/connector/timer.rb
54
+ homepage: https://factor.io
55
+ licenses: []
56
+ post_install_message:
57
+ rdoc_options: []
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project:
74
+ rubygems_version: 1.8.25
75
+ signing_key:
76
+ specification_version: 3
77
+ summary: Timer Factor.io Connector
78
+ test_files: []