mushy 0.0.7 → 0.1.0
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.
- checksums.yaml +4 -4
- data/lib/mushy/builder/index.rb +52 -14
- data/lib/mushy/fluxs/browser.rb +8 -3
- data/mushy.gemspec +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b0ff90e9b20233f5744ec73d94137a2a117dc5bbdcb1962242caf5d3fdec8f3
|
4
|
+
data.tar.gz: dd834f5294cf131393881c7647a25c27d54275e7c510c2b19bac233b9193be43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41b4cdfd6d24547838ba11b0bbdb3515ec8baee305ab5b97079d040019951354d29074d9a93c88cf94be9b70c0875220f3b76630097c9cc697ddf4ea4cef550f
|
7
|
+
data.tar.gz: 1ec8aab8a0ac9281d1ed036b84add01be639c6223ef46db6f7132d4140f09c10d2ea0a6707bca99aa79b3db024efa2f4cf34ce5430c68e8838953be21f125dd2
|
data/lib/mushy/builder/index.rb
CHANGED
@@ -15,13 +15,16 @@ module Mushy
|
|
15
15
|
<table v-if="setup.showFlux == false">
|
16
16
|
<tr>
|
17
17
|
<th>Name</th>
|
18
|
-
<th>
|
18
|
+
<th>Receives Events From</th>
|
19
19
|
<th>Actions</th>
|
20
20
|
</tr>
|
21
21
|
<tr v-for="flux in flow.fluxs">
|
22
22
|
<td>{{flux.name}}</td>
|
23
23
|
<td>{{flux_name_for(flux.parent, flow.fluxs)}}</td>
|
24
|
-
<td
|
24
|
+
<td>
|
25
|
+
<button v-on:click.prevent.stop="editFlux({ flux: flux, setup: setup, configs: configs })">Edit</button>
|
26
|
+
<button v-on:click.prevent.stop="deleteFlux({ flux: flux, flow: flow })">Delete</button>
|
27
|
+
</td>
|
25
28
|
</tr>
|
26
29
|
</table>
|
27
30
|
<button v-if="setup.showFlux == false" v-on:click.prevent.stop="startNew({ setup: setup, configs: configs })">Start a New Flux</button>
|
@@ -30,7 +33,7 @@ module Mushy
|
|
30
33
|
<div v-if="setup.showFlux">
|
31
34
|
<mip-heavy :data="setup"></mip-heavy>
|
32
35
|
<mip-heavy v-for="(data, id) in configs" v-show="setup.flux.value === id" :data="data"></mip-heavy>
|
33
|
-
<div v-if="results.
|
36
|
+
<div v-if="results.errorMessage">{{results.errorMessage}}</div>
|
34
37
|
<div v-else>{{results.length}} result{{results.length == 1 ? "" : "s"}}</div>
|
35
38
|
<mip-heavy v-for="data in results" :data="data"></mip-heavy>
|
36
39
|
</div>
|
@@ -57,6 +60,22 @@ module Mushy
|
|
57
60
|
props: ['label', 'description', 'hide_description'],
|
58
61
|
template: '<label :for="id" v-if="label != \\'\\'">{{label || ' + fancyName('id') + '}} <i v-show="description && !hide_description">({{description}})</i></label>'
|
59
62
|
},
|
63
|
+
h1: {
|
64
|
+
props: ['label', 'description', 'hide_description'],
|
65
|
+
template: '<h1 v-if="label != \\'\\'">{{label || ' + fancyName('id') + '}} <i v-show="description && !hide_description">({{description}})</i></h1>'
|
66
|
+
},
|
67
|
+
h2: {
|
68
|
+
props: ['label', 'description', 'hide_description'],
|
69
|
+
template: '<h2 v-if="label != \\'\\'">{{label || ' + fancyName('id') + '}} <i v-show="description && !hide_description">({{description}})</i></h2>'
|
70
|
+
},
|
71
|
+
h3: {
|
72
|
+
props: ['label', 'description', 'hide_description'],
|
73
|
+
template: '<h3 v-if="label != \\'\\'">{{label || ' + fancyName('id') + '}} <i v-show="description && !hide_description">({{description}})</i></h3>'
|
74
|
+
},
|
75
|
+
h4: {
|
76
|
+
props: ['label', 'description', 'hide_description'],
|
77
|
+
template: '<h4 v-if="label != \\'\\'">{{label || ' + fancyName('id') + '}} <i v-show="description && !hide_description">({{description}})</i></h4>'
|
78
|
+
},
|
60
79
|
text: {
|
61
80
|
props: ['label', 'placeholder', 'disabled', 'readonly', 'value', 'description', 'shrink'],
|
62
81
|
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><input type="text" :name="id" v-if="value || !shrink" :placeholder="placeholder" v-bind:value="value" v-on:input="$emit(\\'update:value\\', $event.target.value);" :disabled="disabled == \\'true\\'" :readonly="readonly == \\'true\\'"></div>'
|
@@ -90,7 +109,7 @@ module Mushy
|
|
90
109
|
};
|
91
110
|
},
|
92
111
|
props: ['label', 'placeholder', 'disabled', 'readonly', 'value', 'description', 'view'],
|
93
|
-
template: '<div><mip-
|
112
|
+
template: '<div><mip-h4 :id="id" :label="label" :description="description"></mip-h4> <pre><code>{{show(view, value)}}</code></pre><button :disabled="view==\\'beautiful\\'" v-on:click.prevent.stop="view=toggle(view)">{{(view == \\'beautiful\\' ? \\'View Smaller\\' : \\'View Pretty\\')}}</button><button :disabled="view!=\\'beautiful\\'" v-on:click.prevent.stop="view=toggle(view)">View Smaller</button><button v-on:click.prevent.stop="copy(view, value)">Copy</button></div>'
|
94
113
|
},
|
95
114
|
radio: {
|
96
115
|
props: ['label', 'value', 'options', 'description', 'shrink'],
|
@@ -147,7 +166,7 @@ module Mushy
|
|
147
166
|
},
|
148
167
|
button: {
|
149
168
|
props: ['click', 'description', 'name'],
|
150
|
-
template: '<button v-on:click.prevent.stop="click(pull(this))">{{name || id}}</button>'
|
169
|
+
template: '<button v-on:click.prevent.stop="click(pull(this), thisComponent())">{{name || id}}</button>'
|
151
170
|
}
|
152
171
|
};
|
153
172
|
|
@@ -167,6 +186,7 @@ module Mushy
|
|
167
186
|
return {
|
168
187
|
console: console,
|
169
188
|
pull: function(x) { return thingToData(foundIt.data); },
|
189
|
+
thisComponent: function() { return foundIt.data; },
|
170
190
|
}
|
171
191
|
},
|
172
192
|
props: props,
|
@@ -225,12 +245,15 @@ module Mushy
|
|
225
245
|
id: { type: 'hide', value: '' },
|
226
246
|
name: { type: 'text', value: '' },
|
227
247
|
flux: { type: 'select', value: fluxdata.fluxs[0].name, options: options},
|
228
|
-
parent: { type: 'selectrecord', value: '', options: flowdata.fluxs },
|
248
|
+
parent: { type: 'selectrecord', label: 'Receive Events From', value: '', options: flowdata.fluxs },
|
229
249
|
};
|
230
250
|
|
231
251
|
for (var key in configs)
|
232
252
|
{
|
233
|
-
configs[key].save = { type: 'button', name: 'Save This Flux', click: function(config) {
|
253
|
+
configs[key].save = { type: 'button', name: 'Save This Flux', click: function(config, hey) {
|
254
|
+
var nameOfTheSaveButton = hey.save.name;
|
255
|
+
Vue.set(hey.save, 'name', 'Saving');
|
256
|
+
delete config.test_event;
|
234
257
|
var setup = thingToData(app.setup);
|
235
258
|
var flux = {
|
236
259
|
id: setup.id,
|
@@ -248,30 +271,39 @@ module Mushy
|
|
248
271
|
else
|
249
272
|
app.flow.fluxs[index] = flux;
|
250
273
|
|
251
|
-
|
274
|
+
setTimeout(function(){
|
275
|
+
Vue.set(hey.save, 'name', nameOfTheSaveButton);
|
276
|
+
app.setup.id.value = '';
|
252
277
|
|
253
|
-
|
278
|
+
Vue.set(app.setup, 'showFlux', false);
|
279
|
+
}, 500);
|
254
280
|
}
|
255
281
|
};
|
256
282
|
|
257
283
|
configs[key].test_event = { type: 'json', value: '{}', default: '{}' };
|
258
284
|
|
259
|
-
configs[key].run_test = { type: 'button', name: 'Test Run This Flux', click: function(c) {
|
285
|
+
configs[key].run_test = { type: 'button', name: 'Test Run This Flux', click: function(c, hey) {
|
286
|
+
var previousName = hey.run_test.name;
|
287
|
+
Vue.set(hey.run_test, 'name', 'Loading');
|
260
288
|
app.results = [];
|
261
|
-
Vue.set(app.results, '
|
289
|
+
Vue.set(app.results, 'errorMessage', '');
|
262
290
|
var the_setup = thingToData(app.setup);
|
263
291
|
the_setup.event = c.test_event;
|
264
292
|
axios.post('/run', { config: c, setup: the_setup })
|
265
293
|
.then(function(r){
|
266
|
-
Vue.set(app.results, 'loading', false);
|
267
294
|
var index = 1;
|
268
295
|
for (var key in r.data.result)
|
269
296
|
{
|
270
297
|
var result = {};
|
271
|
-
result['event_' + index] = { type: 'jsonview', value: r.data.result[key], view: 'thin' };
|
298
|
+
result['event_' + index] = { type: 'jsonview', label: 'Event ' + index + ' of ' + r.data.result.length, value: r.data.result[key], view: 'thin' };
|
272
299
|
app.results.push(result);
|
273
300
|
index += 1;
|
274
301
|
}
|
302
|
+
}).catch(function(r){
|
303
|
+
console.log(r);
|
304
|
+
Vue.set(app.results, 'errorMessage', 'This app failed while trying to execute your flux.');
|
305
|
+
}).then(function(){
|
306
|
+
Vue.set(hey.run_test, 'name', previousName);
|
275
307
|
});
|
276
308
|
} };
|
277
309
|
}
|
@@ -294,6 +326,8 @@ module Mushy
|
|
294
326
|
else
|
295
327
|
Vue.set(applicable_config[key], 'value', applicable_config[key].default);
|
296
328
|
|
329
|
+
if (applicable_config)
|
330
|
+
Vue.set(applicable_config.test_event, 'value', '{}');
|
297
331
|
|
298
332
|
options = flowdata.fluxs.filter(function(x){ return x.id != flux.id });
|
299
333
|
options.unshift( { id: '', name: '' } );
|
@@ -321,11 +355,15 @@ module Mushy
|
|
321
355
|
};
|
322
356
|
loadThisFlux({ flux: flux, setup: x.setup, configs: x.configs });
|
323
357
|
},
|
324
|
-
|
358
|
+
editFlux: function(x) {
|
325
359
|
var flux = x.flux;
|
326
360
|
|
327
361
|
loadThisFlux({ flux: x.flux, setup: x.setup, configs: x.configs });
|
328
362
|
},
|
363
|
+
deleteFlux: function(x) {
|
364
|
+
var set = x.flow.fluxs.filter( function(v){ return v.id != x.flux.id } );
|
365
|
+
Vue.set(x.flow, 'fluxs', set);
|
366
|
+
},
|
329
367
|
saveFlow: function(input)
|
330
368
|
{
|
331
369
|
var setup = input.setup;
|
data/lib/mushy/fluxs/browser.rb
CHANGED
@@ -17,11 +17,13 @@ module Mushy
|
|
17
17
|
headless: {
|
18
18
|
description: 'Run this browser headless.',
|
19
19
|
type: 'boolean',
|
20
|
+
shrink: true,
|
20
21
|
value: 'true',
|
21
22
|
},
|
22
23
|
execute: {
|
23
24
|
description: 'Javascript to run after the page is loaded.',
|
24
25
|
type: 'textarea',
|
26
|
+
shrink: true,
|
25
27
|
value: '',
|
26
28
|
},
|
27
29
|
cookies: {
|
@@ -41,26 +43,29 @@ module Mushy
|
|
41
43
|
{ id: 'sameSite', target: 'sameSite', field: { type: 'text', value: 'None', default: 'None' } },
|
42
44
|
{ id: 'priority', target: 'priority', field: { type: 'text', value: 'Medium', default: 'Medium' } },
|
43
45
|
],
|
44
|
-
#{"name":"1P_JAR","value":"2021-01-21-13","domain":".google.com","path":"/","expires":1613828458.870408,"size":19,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium"
|
45
46
|
},
|
46
47
|
carry_cookies_from: {
|
47
48
|
description: 'Carry the cookies from this path in the event.',
|
48
49
|
type: 'text',
|
50
|
+
shrink: true,
|
49
51
|
value: 'cookies',
|
50
52
|
},
|
51
53
|
headers: {
|
52
54
|
description: 'Headers for the web request. These can be received from a previous browser event with {{headers}}, or can be typed manually.',
|
53
55
|
type: 'keyvalue',
|
56
|
+
shrink: true,
|
54
57
|
value: {},
|
55
58
|
},
|
56
59
|
carry_headers_from: {
|
57
60
|
description: 'Carry the headers from this path in the event.',
|
58
61
|
type: 'text',
|
62
|
+
shrink: true,
|
59
63
|
value: 'headers',
|
60
64
|
},
|
61
65
|
wait_before_closing: {
|
62
66
|
description: 'Wait this many seconds before closing the browser.',
|
63
67
|
type: 'integer',
|
68
|
+
shrink: true,
|
64
69
|
value: '',
|
65
70
|
},
|
66
71
|
},
|
@@ -79,6 +84,8 @@ module Mushy
|
|
79
84
|
|
80
85
|
browser.execute(config[:execute]) if config[:execute]
|
81
86
|
|
87
|
+
sleep(config[:wait_before_closing].to_i) if config[:wait_before_closing] && config[:wait_before_closing].to_i > 0
|
88
|
+
|
82
89
|
result = {
|
83
90
|
url: browser.url,
|
84
91
|
cookies: browser.cookies.all.map { |k, v| v.instance_variable_get('@attributes') },
|
@@ -86,8 +93,6 @@ module Mushy
|
|
86
93
|
body: browser.body
|
87
94
|
}
|
88
95
|
|
89
|
-
sleep(config[:wait_before_closing].to_i) if config[:wait_before_closing] && config[:wait_before_closing].to_i > 0
|
90
|
-
|
91
96
|
browser.quit
|
92
97
|
|
93
98
|
result
|
data/mushy.gemspec
CHANGED
@@ -4,7 +4,7 @@ require 'mushy/version'
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'mushy'
|
7
|
-
s.version = '0.0
|
7
|
+
s.version = '0.1.0'
|
8
8
|
s.date = '2020-11-23'
|
9
9
|
s.summary = 'Process streams of work using common modules.'
|
10
10
|
s.description = 'This tool assists in the creation and processing of workflows.'
|
@@ -24,4 +24,4 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_runtime_dependency 'ferrum'
|
25
25
|
s.add_runtime_dependency 'nokogiri'
|
26
26
|
s.add_runtime_dependency 'faraday'
|
27
|
-
end
|
27
|
+
end
|