private CodeBlock endpoint()

in codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/RuleSetCreationSpec.java [186:289]


    private CodeBlock endpoint(EndpointModel model) {
        CodeBlock.Builder b = CodeBlock.builder();

        b.add("$T.builder()", endpointRulesSpecUtils.rulesRuntimeClassName("EndpointResult"));

        TreeNode url = model.getUrl();
        b.add(".url($L)", expr(url));

        if (model.getHeaders() != null) {
            model.getHeaders().forEach((name, valueList) -> {
                valueList.forEach(value -> b.add(".addHeaderValue($S, $L)", name, expr(value)));
            });
        }

        if (model.getProperties() != null) {
            // Explicitly only support known properties
            model.getProperties().forEach((name, property) -> {
                switch (name) {
                    case "authSchemes":
                        b.add(".addProperty($T.of($S), $T.fromTuple($T.asList(",
                              endpointRulesSpecUtils.rulesRuntimeClassName("Identifier"),
                              "authSchemes",
                              endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
                              Arrays.class);

                        Iterator<JrsValue> authSchemesIter = ((JrsArray) property).elements();

                        while (authSchemesIter.hasNext()) {
                            b.add("$T.fromRecord($T.of(", endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
                                  MapUtils.class);
                            JrsObject authScheme = (JrsObject) authSchemesIter.next();

                            Iterator<String> authSchemeFieldsIter = authScheme.fieldNames();
                            while (authSchemeFieldsIter.hasNext()) {
                                String schemeProp = authSchemeFieldsIter.next();
                                JrsValue propValue = authScheme.get(schemeProp);
                                b.add("$T.of($S), ", endpointRulesSpecUtils.rulesRuntimeClassName("Identifier"), schemeProp);
                                if ("signingRegionSet".equalsIgnoreCase(schemeProp)) {
                                    b.add("$T.fromTuple($T.asList(", endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
                                          Arrays.class);
                                    Iterator<JrsValue> signingRegions = ((JrsArray) propValue).elements();

                                    while (signingRegions.hasNext()) {
                                        JrsString region = (JrsString) signingRegions.next();
                                        b.add("$T.fromStr($S)", endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
                                              region.getValue());

                                        if (signingRegions.hasNext()) {
                                            b.add(", ");
                                        }
                                    }
                                    b.add("))");
                                } else if ("disableDoubleEncoding".equalsIgnoreCase(schemeProp)) {
                                    b.add("$T.fromBool($L)", endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
                                          ((JrsBoolean) propValue).booleanValue());
                                } else {
                                    b.add("$T.fromStr($S)", endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
                                          ((JrsString) propValue).getValue());
                                }

                                if (authSchemeFieldsIter.hasNext()) {
                                    b.add(", ");
                                }
                            }

                            b.add("))");

                            if (authSchemesIter.hasNext()) {
                                b.add(", ");
                            }
                        }
                        b.add(")))");

                        break;
                    case "bucketType":
                        b.add(".addProperty($T.of($S), $T.fromStr($S))",
                              endpointRulesSpecUtils.rulesRuntimeClassName("Identifier"),
                              "bucketType",
                              endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
                              ((JrsString) property).getValue());
                        break;
                    case "useS3ExpressSessionAuth":
                        b.add(".addProperty($T.of($S), $T.fromBool($L))",
                              endpointRulesSpecUtils.rulesRuntimeClassName("Identifier"),
                              "useS3ExpressSessionAuth",
                              endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
                              ((JrsBoolean) property).booleanValue());
                        break;
                    case "backend":
                        b.add(".addProperty($T.of($S), $T.fromStr($S))",
                              endpointRulesSpecUtils.rulesRuntimeClassName("Identifier"),
                              "backend",
                              endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
                              ((JrsString) property).getValue());
                        break;
                    default:
                        break;
                }
            });
        }

        b.add(".build()");
        return b.build();
    }