factor-connector-timer 0.0.1
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/lib/factor/connector/timer.rb +61 -0
- 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: []
|