use of com.google.api.codegen.viewmodel.HttpMethodView in project toolkit by googleapis.
the class ApiCallableTransformer method generateHttpFields.
private HttpMethodView generateHttpFields(MethodContext context) {
if (context.getProductConfig().getTransportProtocol().equals(TransportProtocol.HTTP)) {
if (context.getMethodModel() instanceof DiscoveryMethodModel) {
// This section is only for DiscoGapic and will be deleted once the generator stops
// ingesting Discovery files.
Method method = ((DiscoveryMethodModel) context.getMethodModel()).getDiscoMethod();
HttpMethodView.Builder httpMethodView = HttpMethodView.newBuilder();
httpMethodView.fullMethodName(method.id());
httpMethodView.httpMethod(method.httpMethod());
List<String> pathParams = new ArrayList<>(method.pathParams().keySet());
List<String> queryParams = new ArrayList<>(method.queryParams().keySet());
Collections.sort(pathParams);
Collections.sort(queryParams);
httpMethodView.pathParams(pathParams);
httpMethodView.queryParams(queryParams);
httpMethodView.pathTemplate(method.path());
// TODO(andrealin): handle multiple resource names.
DiscoGapicInterfaceConfig interfaceConfig = (DiscoGapicInterfaceConfig) context.getSurfaceInterfaceContext().getInterfaceConfig();
SingleResourceNameConfig nameConfig = interfaceConfig.methodToResourceNameMap().get(context.getMethodConfig());
httpMethodView.resourceNameTypeName(context.getNamer().publicClassName(DiscoGapicParser.getResourceNameName(nameConfig)));
// Find the field with the resource name config.
for (FieldConfig fieldConfig : context.getMethodConfig().getRequiredFieldConfigs()) {
if (fieldConfig.getResourceNameConfig() != null && fieldConfig.getResourceNameConfig().equals(nameConfig)) {
httpMethodView.resourceNameFieldName(context.getNamer().privateFieldName(Name.anyCamel(fieldConfig.getField().getNameAsParameter())));
}
}
return httpMethodView.build();
} else if (context.getMethodModel() instanceof ProtoMethodModel) {
com.google.api.tools.framework.model.Method method = ((ProtoMethodModel) context.getMethodModel()).getProtoMethod();
HttpAttribute httpAttr = method.getAttribute(HttpAttribute.KEY);
HttpMethodView.Builder httpMethodView = HttpMethodView.newBuilder();
httpMethodView.httpMethod(httpAttr.getMethodKind().toString());
httpMethodView.fullMethodName(httpAttr.getRestMethod().getFullName());
SurfaceNamer namer = context.getNamer();
httpMethodView.pathTemplate(httpAttr.getPath().stream().map(pathSegment -> normalizePathSegment(pathSegment.toString())).collect(Collectors.joining("/", "/", "")));
httpMethodView.pathParamSelectors(populateMethodSelectors(namer, httpAttr.getPathSelectors()));
httpMethodView.queryParamSelectors(populateMethodSelectors(namer, httpAttr.getParamSelectors()));
httpMethodView.bodySelectors(populateMethodSelectors(namer, httpAttr.getBodySelectors()));
return httpMethodView.build();
}
}
return null;
}
Aggregations