def format_enum_value(self, typename: str, valuename: str): return self.enum_name.format( lFieldName=typename, uFieldName=to_camelcase(typename), lValueName=valuename, uValueName=valuename if valuename[0].isnumeric() else to_camelcase(valuename))
def parse(self, schema: dict) -> ModelData: if "allOf" in schema: schema, self.result.parent = self.handle_all_of(schema) if "oneOf" in schema: self.result = ModelInterfaceData(self.name, self.class_name(self.name)) discriminator = schema.get("discriminator") if discriminator: self.result.discriminator = to_camelcase( discriminator["propertyName"]) for element in schema["oneOf"]: if "$ref" in element: self.result.children.append( self.class_name_from_ref(element["$ref"])) elif "required" in element: pass # this is fine: https://github.com/p1c2u/openapi-spec-validator/issues/27 else: logging.warning("did not find $ref as child of oneOf") elif "properties" in schema: required_props = schema.get('required', list()) for name, data in schema["properties"].items(): self.result.properties.append( self.create_param(name, data, name in required_props)) if "description" in schema: self.result.description = schema["description"] return self.result
def format_updater(self, model: ModelData) -> str: props_update = [] for prop in model.properties: name = to_camelcase(prop.name) special_call = "" if prop.is_list: if prop.is_basic_type: special_call = ".ToList()" elif not prop.is_basic_type: special_call = f".To{prop.typename}()" if prop.nullable: special_call = "?" + special_call props_update.append(f"{name} = other.{name}{special_call};") splitter = "\n\t\t\t" formatted = splitter.join(props_update) if model.parent: formatted = f"UpdateWith{model.parent}(other);{splitter}{formatted}" return formatted
def class_name(self, name): return self.prefix + to_camelcase(name) + self.suffix
def format_property(self, property: MemberData) -> str: extra = "" if property.is_date: extra = "[JsonConverter(typeof(CustomJsonDateConverter))]\n\t\t" default_str = "" if property.default_value is not None: default_str = f" = {property.default_value};" json_property_extra = "" if property.is_required and property.nullable: json_property_extra = ", Required = Required.AllowNull" elif property.is_required: json_property_extra = ", Required = Required.Always" description = "" if property.description is not None: description = property.description.strip().replace( "\n", "\n\t\t/// ") description = f"/// <summary>\n\t\t/// {description}\n\t\t/// </summary>\n\t\t" template_data = dict(TYPE=property.typename, NAMELOWER=property.name, NAMEUPPER=to_camelcase(property.name), JSON_EXTRA=extra, DEFAULT=default_str, JSON_PROPERTY_EXTRA=json_property_extra, DESCRIPTION=description, NO_CHECK="", NO_CHECK_MSG="") if property.enums is not None: formatted_enums = { value: self.format_enum_value(property.name, name) for value, name in property.enums.items() if value is not None } enums = [ f"public const {property.typename.rstrip('?')} {name} = {value};" for value, name in formatted_enums.items() ] enums = f"\n\t\t".join(enums) all_enums = ", ".join(formatted_enums.values()) if None in property.enums.keys(): all_enums += f", ({property.typename})null" if property.default_value is not None: template_data["DEFAULT"] = " = " + formatted_enums.get( property.default_value, property.default_value) enum_list_name = self.enum_list_name.format( uFieldName=to_camelcase(property.name), lFieldName=property.name) template = self.enum_prop_template template_data['ENUMS'] = enums template_data['ENUM_NAMES'] = all_enums template_data['ENUM_LIST_NAME'] = enum_list_name if not self.check_enums: template_data["NO_CHECK"] = "// " template_data[ 'NO_CHECK_MSG'] = "// set checkEnums=true in config file to have a value check here //\n\t\t\t\t" else: template = self.prop_template return template.format_map(template_data)
def operation_name(operation_id) -> str: return to_camelcase(operation_id) + "Async"