mushy 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,54 @@
1
+ require 'sinatra'
2
+
3
+ require_relative 'mushy'
4
+
5
+ get '/' do
6
+ File.read(File.join(File.dirname(__FILE__), 'public', 'index.html'))
7
+ end
8
+
9
+ get '/fluxs' do
10
+ content_type :json
11
+ {
12
+ fluxs: Mushy::Flux.all.select { |x| x.respond_to? :details }.map do |flux|
13
+ details = flux.details
14
+ details[:config][:incoming_split] = { type: 'text', description: 'Split an incoming event into multiple events by this key, an each event will be processed independently.' }
15
+ details[:config][:outgoing_split] = { type: 'text', description: 'Split an outgoing event into multiple events by this key.' }
16
+ details[:config][:merge] = { type: 'text', description: 'A comma-delimited list of fields from the event to carry through. Use * to merge all fields.' }
17
+ details[:config][:group] = { type: 'text', description: 'Group events by a field, which is stored in a key. The format is group_by|group_key.' }
18
+ details[:config][:limit] = { type: 'integer', description: 'Limit the number of events to this number.' }
19
+ details[:config][:join] = { type: 'text', description: 'Join all of the events from this flux into one event, under this name.' }
20
+ details[:config][:sort] = { type: 'text', description: 'Sort by this key.' }
21
+ details[:config][:model] = { type: 'keyvalue', description: 'Reshape the outgoing events.', value: {} }
22
+
23
+ details[:config]
24
+ .select { |_, v| v[:type] == 'keyvalue' }
25
+ .select { |_, v| v[:editors].nil? }
26
+ .each do |_, v|
27
+ v[:editors] = [
28
+ { id: 'new_key', target: 'key', field: { type: 'text', value: '', default: '' } },
29
+ { id: 'new_value', target: 'value', field: { type: 'text', value: '', default: '' } }
30
+ ]
31
+ end
32
+
33
+ details
34
+ end
35
+ }.to_json
36
+ end
37
+
38
+ post '/run' do
39
+ content_type :json
40
+
41
+ data = SymbolizedHash.new JSON.parse(request.body.read)
42
+
43
+ event = SymbolizedHash.new JSON.parse(data[:setup][:event].to_json)
44
+
45
+ config = SymbolizedHash.new data[:config]
46
+
47
+ flux = Mushy::Flow.build_flux( { type: data[:setup][:flux], config: config } )
48
+
49
+ result = flux.execute event
50
+
51
+ result = [result].flatten
52
+
53
+ { result: result }.to_json
54
+ end
@@ -0,0 +1,24 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'mushy/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'mushy'
7
+ s.version = '0.0.1'
8
+ s.date = '2020-11-23'
9
+ s.summary = 'Process streams of work using common modules.'
10
+ s.description = 'Process streams of work using common modules.'
11
+ s.authors = ['Darren Cauthon']
12
+ s.email = 'darren@cauthon.com'
13
+ s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
14
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
15
+ s.require_paths = ["lib"]
16
+ s.homepage = 'https://cauthon.com'
17
+ s.license = 'MIT'
18
+
19
+ s.add_development_dependency 'minitest'
20
+ s.add_runtime_dependency 'liquid'
21
+ s.add_runtime_dependency 'ferrum'
22
+ s.add_runtime_dependency 'nokogiri'
23
+ s.add_runtime_dependency 'faraday'
24
+ end
@@ -0,0 +1,2 @@
1
+ Run the test:
2
+ docker run -it -v //c/Users/darre/Desktop/mushy:/usr/src/mushy ruby:2.5 ruby //usr/src/mushy/test/mushy/masher_test.rb
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mushy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Darren Cauthon
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-11-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: liquid
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ferrum
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: nokogiri
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: faraday
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Process streams of work using common modules.
84
+ email: darren@cauthon.com
85
+ executables:
86
+ - mushy
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - bin/mushy
91
+ - lib/mushy.rb
92
+ - lib/mushy/event.rb
93
+ - lib/mushy/flow.rb
94
+ - lib/mushy/flux.rb
95
+ - lib/mushy/fluxs/bash.rb
96
+ - lib/mushy/fluxs/browser.rb
97
+ - lib/mushy/fluxs/build_csv.rb
98
+ - lib/mushy/fluxs/collection.rb
99
+ - lib/mushy/fluxs/filter.rb
100
+ - lib/mushy/fluxs/get.rb
101
+ - lib/mushy/fluxs/ls.rb
102
+ - lib/mushy/fluxs/parse_html.rb
103
+ - lib/mushy/fluxs/read_csv.rb
104
+ - lib/mushy/fluxs/write_file.rb
105
+ - lib/mushy/masher.rb
106
+ - lib/mushy/run.rb
107
+ - lib/mushy/runner.rb
108
+ - lib/mushy/version.rb
109
+ - lib/public/index.html
110
+ - lib/site.rb
111
+ - mushy.gemspec
112
+ - note.txt
113
+ homepage: https://cauthon.com
114
+ licenses:
115
+ - MIT
116
+ metadata: {}
117
+ post_install_message:
118
+ rdoc_options: []
119
+ require_paths:
120
+ - lib
121
+ required_ruby_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ required_rubygems_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ requirements: []
132
+ rubyforge_project:
133
+ rubygems_version: 2.7.6.2
134
+ signing_key:
135
+ specification_version: 4
136
+ summary: Process streams of work using common modules.
137
+ test_files: []