mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-02-10 23:00:20 +00:00
* Add Swagger spec test script * Fix Swagger spec errors not related to statuses with polls * Add API tests that post a status with a poll * Fix creating a status with a poll from form params * Fix Swagger spec errors related to statuses with polls (this is the last error) * Fix Swagger spec warnings not related to unused definitions * Suppress a duplicate list update params definition that was somehow causing wrong param names * Add Swagger test to CI - updates Drone config - vendorizes go-swagger - fixes a file extension issue that caused the test script to generate JSON instead of YAML with the vendorized version * Put `Sample: ` on its own line everywhere * Remove unused id param from emojiCategoriesGet * Add 5 more pairs of profile fields to account update API Swagger * Remove Swagger prefix from dummy fields It makes the generated code look weird * Manually annotate params for statusCreate operation * Fix all remaining Swagger spec warnings - Change some models into operation parameters - Ignore models that already correspond to manually documented operation parameters but can't be trivially changed (those with file fields) * Documented that creating a status with scheduled_at isn't implemented yet * sign drone.yml * Fix filter API Swagger errors * fixup! Fix filter API Swagger errors --------- Co-authored-by: tobi <tobi.smethurst@protonmail.com>
79 lines
3.1 KiB
Go
79 lines
3.1 KiB
Go
// Copyright 2015 go-swagger maintainers
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
/*
|
|
Package generator provides the code generation library for go-swagger.
|
|
|
|
# Generating data types
|
|
|
|
The general idea is that you should rarely see interface{} in the generated code.
|
|
You get a complete representation of a swagger document in somewhat idiomatic go.
|
|
|
|
To do so, there is a set of mapping patterns that are applied,
|
|
to map a Swagger specification to go types:
|
|
|
|
definition of primitive => type alias/name
|
|
definition of array => type alias/name
|
|
definition of map => type alias/name
|
|
|
|
definition of object
|
|
with properties => struct
|
|
definition of $ref => type alias/name
|
|
|
|
object with only
|
|
additional properties => map[string]T
|
|
|
|
object with additional
|
|
properties and properties => custom serializer
|
|
|
|
schema with schema array
|
|
in items => tuple (struct with properties, custom serializer)
|
|
|
|
schema with all of => struct
|
|
|
|
* allOf schema with $ref => embedded value
|
|
* allOf schema with properties => properties are included in struct
|
|
* adding an allOf schema with just "x-isnullable": true or
|
|
"x-nullable": true turns the schema into a pointer when
|
|
there are only other extension properties provided
|
|
|
|
NOTE: anyOf and oneOf JSON-schema constructs are not supported by Swagger 2.0
|
|
|
|
A property on a definition is a pointer when any one of the following conditions is met:
|
|
|
|
it is an object schema (struct)
|
|
it has x-nullable or x-isnullable as vendor extension
|
|
it is a primitive where the zero value is valid but would fail validation
|
|
otherwise strings minLength > 0 or required results in non-pointer
|
|
numbers min > 0, max < 0 and min < max
|
|
|
|
JSONSchema and by extension Swagger allow for items that have a fixed size array,
|
|
with the schema describing the items at each index. This can be combined with additional items
|
|
to form some kind of tuple with varargs.
|
|
|
|
To map this to go it creates a struct that has fixed names and a custom json serializer.
|
|
|
|
NOTE: the additionalItems keyword is not supported by Swagger 2.0. However, the generator and validator parts
|
|
in go-swagger do.
|
|
|
|
# Documenting the generated code
|
|
|
|
The code that is generated also gets the doc comments that are used by the scanner
|
|
to generate a spec from go code. So that after generation you should be able to reverse
|
|
generate a spec from the code that was generated by your spec.
|
|
|
|
It should be equivalent to the original spec but might miss some default values and examples.
|
|
*/
|
|
package generator
|