factor-connector-web 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/web.rb +56 -0
  2. metadata +78 -0
@@ -0,0 +1,56 @@
1
+ require 'factor-connector-api'
2
+ require 'restclient'
3
+
4
+ Factor::Connector.service 'web' do
5
+ listener 'hook' do
6
+ start do |data|
7
+ info 'starting webhook'
8
+ hook_id = data['id'] || 'post'
9
+ hook_url = web_hook id: hook_id do
10
+ start do |_listener_start_params, hook_data, _req, _res|
11
+ info 'Got a Web Hook POST call'
12
+ post_data = hook_data.dup
13
+ post_data.delete('service_id')
14
+ post_data.delete('listener_id')
15
+ post_data.delete('instance_id')
16
+ post_data.delete('hook_id')
17
+ post_data.delete('user_id')
18
+ start_workflow response: post_data
19
+ end
20
+ end
21
+ info "Webhook started at: #{hook_url}"
22
+ end
23
+ stop do |_data|
24
+ info 'Stopping...'
25
+ end
26
+ end
27
+
28
+ action 'post' do |params|
29
+ contents = params['params'] || {}
30
+ headers = params['headers'] || {}
31
+ url = params['url']
32
+
33
+ fail 'URL is required' unless url
34
+
35
+ begin
36
+ contents = JSON.parse(contents) if contents.is_a?(String)
37
+ rescue
38
+ fail "Couldn't parse '#{contents}' as JSON"
39
+ end
40
+
41
+ begin
42
+ headers = JSON.parse(headers) if headers.is_a?(String)
43
+ rescue
44
+ fail 'Couldnt parse header'
45
+ end
46
+ if contents
47
+ info "Posting to `#{url}`"
48
+ begin
49
+ response = RestClient.post(url, contents, headers)
50
+ action_callback response
51
+ rescue
52
+ fail "Couldn't call '#{url}'"
53
+ end
54
+ end
55
+ end
56
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: factor-connector-web
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: factor-connector-api
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.0.1
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: 0.0.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: rest-client
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - '='
36
+ - !ruby/object:Gem::Version
37
+ version: 1.6.7
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: 1.6.7
46
+ description:
47
+ email:
48
+ - maciej@factor.io
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - lib/factor/connector/web.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: Web Factor.io Connector
78
+ test_files: []