getParameters function
Implementation
Iterable<Parameter> getParameters(
Iterable<ClientParam> params,
ClientMethod method,
) sync* {
final (cookies: _, :body, :query, :headers) = params.separate;
if (!method.isWebsocket || method.websocketType.canSendAny) {
final roots = body.roots();
if (method.websocketBody case final ClientParam param) {
yield Parameter(
(b) => b
..type = refer(param.type.name)
..name = param.name
..named = true
..required = !(param.type.isNullable || param.hasDefaultValue),
);
} else {
for (final param in body) {
if (!body.needsAssignment(param, roots)) {
continue;
}
yield _create(param, isStream: method.websocketType.canSendMany);
}
}
}
for (final param in query) {
yield _create(param);
}
if (method.isWebsocket) {
return;
}
for (final param in headers) {
yield _create(param);
}
}