summaryrefslogtreecommitdiff
path: root/icespider/compile/routes.ice
diff options
context:
space:
mode:
Diffstat (limited to 'icespider/compile/routes.ice')
-rw-r--r--icespider/compile/routes.ice74
1 files changed, 74 insertions, 0 deletions
diff --git a/icespider/compile/routes.ice b/icespider/compile/routes.ice
new file mode 100644
index 0000000..2c25664
--- /dev/null
+++ b/icespider/compile/routes.ice
@@ -0,0 +1,74 @@
+#ifndef ICESPIDER_ROUTES_ICE
+#define ICESPIDER_ROUTES_ICE
+
+#include "http.ice"
+
+[["ice-prefix"]]
+module IceSpider {
+ local sequence<string> StringSeq;
+
+ local class Parameter {
+ ParameterSource source = URL;
+ optional(0) string key;
+ bool isOptional = false;
+ ["slicer:name:default"]
+ optional(1) string defaultExpr;
+ optional(2) string type;
+
+ ["slicer:ignore"]
+ bool hasUserSource = true;
+ };
+
+ ["slicer:json:object"]
+ local dictionary<string, Parameter> Parameters;
+
+ local class OutputSerializer {
+ string serializer;
+ StringSeq params;
+ };
+
+ ["slicer:json:object"]
+ local dictionary<string, OutputSerializer> OutputSerializers;
+
+ local class Operation {
+ string operation;
+ StringMap paramOverrides;
+ };
+
+ ["slicer:json:object"]
+ local dictionary<string, Operation> Operations;
+
+ local class Route {
+ string path;
+ HttpMethod method = GET;
+ optional(0) string operation;
+ Parameters params;
+ Operations operations;
+ string type;
+ OutputSerializers outputSerializers;
+ StringSeq bases;
+ StringSeq mutators;
+ };
+
+ ["slicer:json:object"]
+ local dictionary<string, Route> Routes;
+
+ local class RouteBase {
+ StringSeq proxies;
+ StringSeq functions;
+ };
+
+ ["slicer:json:object"]
+ local dictionary<string, RouteBase> RouteBases;
+
+ local class RouteConfiguration {
+ string name;
+ Routes routes;
+ RouteBases routeBases;
+ StringSeq slices;
+ StringSeq headers;
+ };
+};
+
+#endif
+