-
Notifications
You must be signed in to change notification settings - Fork 280
/
blueprint-ast-to-runtime.js
78 lines (72 loc) · 3.08 KB
/
blueprint-ast-to-runtime.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// Generated by CoffeeScript 1.6.3
var blueprintAstToRuntime, exampleToHttpPayloadPair, expandUriTemplateWithParameters, inheritHeaders, inheritParameters;
inheritHeaders = require('./inherit-headers');
inheritParameters = require('./inherit-parameters');
expandUriTemplateWithParameters = require('./expand-uri-template-with-parameters');
exampleToHttpPayloadPair = require('./example-to-http-payload-pair');
blueprintAstToRuntime = function(blueprintAst) {
var action, example, message, origin, resource, resourceGroup, result, runtime, transaction, uriResult, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _len6, _m, _n, _o, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6;
runtime = {
transactions: [],
errors: [],
warnings: []
};
origin = {};
_ref = blueprintAst['resourceGroups'];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
resourceGroup = _ref[_i];
origin['resourceGroupName'] = resourceGroup['name'];
_ref1 = resourceGroup['resources'];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
resource = _ref1[_j];
origin['resourceName'] = resource['name'];
_ref2 = resource['actions'];
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
action = _ref2[_k];
origin['actionName'] = action['name'];
action['headers'] = inheritHeaders(action['headers'], resource['headers']);
action['parameters'] = inheritParameters(action['parameters'], resource['parameters']);
uriResult = expandUriTemplateWithParameters(resource['uriTemplate'], action['parameters']);
_ref3 = uriResult['warnings'];
for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {
message = _ref3[_l];
runtime['warnings'].push({
origin: JSON.parse(JSON.stringify(origin)),
message: message
});
}
_ref4 = uriResult['errors'];
for (_m = 0, _len4 = _ref4.length; _m < _len4; _m++) {
message = _ref4[_m];
runtime['errors'].push({
origin: JSON.parse(JSON.stringify(origin)),
message: message
});
}
if (uriResult['uri'] !== null) {
_ref5 = action['examples'];
for (_n = 0, _len5 = _ref5.length; _n < _len5; _n++) {
example = _ref5[_n];
origin['exampleName'] = example['name'];
result = exampleToHttpPayloadPair(example, action['headers']);
_ref6 = result['warnings'];
for (_o = 0, _len6 = _ref6.length; _o < _len6; _o++) {
message = _ref6[_o];
runtime['warnings'].push({
origin: JSON.parse(JSON.stringify(origin)),
message: message
});
}
transaction = result['pair'];
transaction['origin'] = JSON.parse(JSON.stringify(origin));
transaction['request']['uri'] = uriResult['uri'];
transaction['request']['method'] = action['method'];
runtime['transactions'].push(transaction);
}
}
}
}
}
return runtime;
};
module.exports = blueprintAstToRuntime;