actionMappingFormat

Undocumented in source.
enum actionMappingFormat = q{ static if (!(hasUDA!(%1$s.%2$s, HttpIgnore))) { enum parameterTypes_%2$s = Parameters!(controller.%2$s).stringof[1..$-1].split(", "); static if (parameterTypes_%2$s.length) { template isJsonObject(T) { static if (is(T == struct) || is(T == class)) { enum isJsonObject = true; } else { enum isJsonObject = false; } } mixin("static const isJson = isJsonObject!" ~ parameterTypes_%2$s[0] ~ ";"); static const isQuery = hasUDA!(%1$s.%2$s, HttpQuery); static const isForm = hasUDA!(%1$s.%2$s, HttpForm); static const isPath = hasUDA!(%1$s.%2$s, HttpPath); static if (isJson) { static if(parameterTypes_%2$s.length == 1) { mapRoutedAction(memberHttpMethod, memberActionName, new ControllerAction({ mixin("auto jsonResult = deserializeJson!("~ parameterTypes_%2$s[0] ~")(request.textBody);"); return controller.%2$s(jsonResult); })); } else { static assert(0, "Can only map a single json object."); } } else static if (isQuery || isForm || isPath) { enum parameterNames_%2$s = [ParameterIdentifierTuple!(controller.%2$s)]; mapRoutedAction(memberHttpMethod, memberActionName, new ControllerAction({ static foreach (i; 0 .. parameterNames_%2$s.length) { static if (isQuery) { mixin("auto " ~ parameterNames_%2$s[i] ~ " = to!(" ~ (parameterTypes_%2$s[i]) ~ ")(request.getQuery(\"" ~ parameterNames_%2$s[i] ~ "\"));"); } else static if (isForm) { mixin("auto " ~ parameterNames_%2$s[i] ~ " = to!(" ~ (parameterTypes_%2$s[i]) ~ ")(request.getForm(\"" ~ parameterNames_%2$s[i] ~ "\"));"); } else static if (isPath) { mixin("auto " ~ parameterNames_%2$s[i] ~ " = to!(" ~ (parameterTypes_%2$s[i]) ~ ")(request.path[" ~ to!string(i + 2) ~ "]);"); } } mixin("return controller.%2$s(" ~ (parameterNames_%2$s.join(",")) ~ ");"); })); } else { static assert(0, "Unable to determine a mapping path for the action."); } } else { mapRoutedAction(memberHttpMethod, memberActionName, new ControllerAction(&controller.%2$s)); } } };

Meta