-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathSwiftMoyaCodeGenerator.js
More file actions
76 lines (63 loc) · 3.04 KB
/
Copy pathSwiftMoyaCodeGenerator.js
File metadata and controls
76 lines (63 loc) · 3.04 KB
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
var uri = require('/URI');
var mustache = require('./mustache');
var SwiftMoyaCodeGenerator = function() {
this.generate = function(context) {
var template = readFile("moya.mustache");
var request = context.getCurrentRequest();
var url = uri.parse(request.url);
var view = {
"request": request,
"baseURL": url.protocol + "://" + url.hostname,
"pathExtension": url.path,
};
var query = url.query;
if (query) {
var fragments = query.split('&');
var keyvalue = fragments[0].split('=');
var queryParamsType = keyvalue[0] + ": " + typeForObject(keyvalue[1]);
var queryParamsTemplate = "_";
var queryParams = "let " + keyvalue[0];
var queryDictString = "\"" + keyvalue[0] + "\": " + keyvalue[0];
for (var i = 1; i < fragments.length; i++) {
keyvalue = fragments[i].split('=');
queryParamsType += ", " + keyvalue[0] + ": " + typeForObject(keyvalue[1]);
queryParamsTemplate += ", _";
queryParams += ", let " + keyvalue[0];
queryDictString += ", \"" + keyvalue[0] + "\": " + keyvalue[0];
}
view["queryParamsType"] = queryParamsType;
view["queryParamsTemplate"] = queryParamsTemplate;
view["queryParams"] = queryParams;
view["queryDictString"] = queryDictString;
}
var jsonBody = request.jsonBody;
if (jsonBody && Object.keys(jsonBody).length > 0) {
var firstKey = Object.keys(jsonBody)[0];
var jsonBodyParamsType = firstKey + ": " + typeForObject(jsonBody[firstKey]);
var jsonBodyParamsTemplate = "_";
var jsonBodyParams = "let " + firstKey;
var jsonBodyDictString = "\"" + firstKey + "\": " + firstKey;
for (var i = 1; i < Object.keys(jsonBody).length; i++) {
var key = Object.keys(jsonBody)[i];
if (jsonBody.hasOwnProperty(key)) {
jsonBodyParamsType += ", " + key + ": " + typeForObject(jsonBody[key]);
jsonBodyParamsTemplate += ", _";
jsonBodyParams += ", let " + key;
jsonBodyDictString += ", \"" + key + "\": " + key;
}
}
view["jsonBodyParamsType"] = jsonBodyParamsType;
view["jsonBodyParamsTemplate"] = jsonBodyParamsTemplate;
view["jsonBodyParams"] = jsonBodyParams;
view["jsonBodyDictString"] = jsonBodyDictString;
}
return mustache.render(template, view);
}
}
function isNumber(obj) { return !isNaN(parseFloat(obj)); }
function typeForObject(obj) { return (isNumber(obj) ? "Int" : "String"); }
SwiftMoyaCodeGenerator.identifier = "com.kuczborski.PawExtensions.SwiftMoyaCodeGenerator";
SwiftMoyaCodeGenerator.title = "Swift (Moya)";
SwiftMoyaCodeGenerator.fileExtension = "swift";
SwiftMoyaCodeGenerator.languageHighlighter = "swift";
registerCodeGenerator(SwiftMoyaCodeGenerator);