factor-connector-web 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.
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: []