2023-02-19 20:36:23 +08:00
..
2021-09-09 12:49:03 +08:00

Go API client for petstore

This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: " \

Overview

This API client was generated by the OpenAPI Generator project. By using the OpenAPI-spec from a remote server, you can easily generate an API client.

  • API version: 1.0.0
  • Package version: 1.0.0
  • Build package: org.openapitools.codegen.languages.GoClientCodegen

Installation

Install the following dependencies:

go get github.com/stretchr/testify/assert
go get golang.org/x/oauth2
go get golang.org/x/net/context

Put the package under your project folder and add the following in import:

import petstore "github.com/GIT_USER_ID/GIT_REPO_ID"

To use a proxy, set the environment variable HTTP_PROXY:

os.Setenv("HTTP_PROXY", "http://proxy_name:proxy_port")

Configuration of Server URL

Default configuration comes with Servers field that contains server objects as defined in the OpenAPI specification.

Select Server Configuration

For using other server than the one defined on index 0 set context value sw.ContextServerIndex of type int.

ctx := context.WithValue(context.Background(), petstore.ContextServerIndex, 1)

Templated Server URL

Templated server URL is formatted using default variables from configuration or from context value sw.ContextServerVariables of type map[string]string.

ctx := context.WithValue(context.Background(), petstore.ContextServerVariables, map[string]string{
	"basePath": "v2",
})

Note, enum values are always validated and all unused variables are silently ignored.

URLs Configuration per Operation

Each operation can use different server URL defined using OperationServers map in the Configuration. An operation is uniquely identified by "{classname}Service.{nickname}" string. Similar rules for overriding default operation server index and variables applies by using sw.ContextOperationServerIndices and sw.ContextOperationServerVariables context maps.

ctx := context.WithValue(context.Background(), petstore.ContextOperationServerIndices, map[string]int{
	"{classname}Service.{nickname}": 2,
})
ctx = context.WithValue(context.Background(), petstore.ContextOperationServerVariables, map[string]map[string]string{
	"{classname}Service.{nickname}": {
		"port": "8443",
	},
})

Documentation for API Endpoints

All URIs are relative to http://petstore.swagger.io:80/v2

Class Method HTTP request Description
AnotherFakeApi Call123TestSpecialTags Patch /another-fake/dummy To test special tags
DefaultApi FooGet Get /foo
FakeApi FakeHealthGet Get /fake/health Health check endpoint
FakeApi FakeOuterBooleanSerialize Post /fake/outer/boolean
FakeApi FakeOuterCompositeSerialize Post /fake/outer/composite
FakeApi FakeOuterNumberSerialize Post /fake/outer/number
FakeApi FakeOuterStringSerialize Post /fake/outer/string
FakeApi TestBodyWithFileSchema Put /fake/body-with-file-schema
FakeApi TestBodyWithQueryParams Put /fake/body-with-query-params
FakeApi TestClientModel Patch /fake To test "client" model
FakeApi TestEndpointParameters Post /fake Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
FakeApi TestEnumParameters Get /fake To test enum parameters
FakeApi TestGroupParameters Delete /fake Fake endpoint to test group parameters (optional)
FakeApi TestInlineAdditionalProperties Post /fake/inline-additionalProperties test inline additionalProperties
FakeApi TestJsonFormData Get /fake/jsonFormData test json serialization of form data
FakeApi TestQueryDeepObject Get /fake/deep_object_test
FakeApi TestQueryParameterCollectionFormat Put /fake/test-query-parameters
FakeApi TestUniqueItemsHeaderAndQueryParameterCollectionFormat Put /fake/test-unique-parameters
FakeClassnameTags123Api TestClassname Patch /fake_classname_test To test class name in snake case
PetApi AddPet Post /pet Add a new pet to the store
PetApi DeletePet Delete /pet/{petId} Deletes a pet
PetApi FindPetsByStatus Get /pet/findByStatus Finds Pets by status
PetApi FindPetsByTags Get /pet/findByTags Finds Pets by tags
PetApi GetPetById Get /pet/{petId} Find pet by ID
PetApi UpdatePet Put /pet Update an existing pet
PetApi UpdatePetWithForm Post /pet/{petId} Updates a pet in the store with form data
PetApi UploadFile Post /pet/{petId}/uploadImage uploads an image
PetApi UploadFileWithRequiredFile Post /fake/{petId}/uploadImageWithRequiredFile uploads an image (required)
StoreApi DeleteOrder Delete /store/order/{order_id} Delete purchase order by ID
StoreApi GetInventory Get /store/inventory Returns pet inventories by status
StoreApi GetOrderById Get /store/order/{order_id} Find purchase order by ID
StoreApi PlaceOrder Post /store/order Place an order for a pet
UserApi CreateUser Post /user Create user
UserApi CreateUsersWithArrayInput Post /user/createWithArray Creates list of users with given input array
UserApi CreateUsersWithListInput Post /user/createWithList Creates list of users with given input array
UserApi DeleteUser Delete /user/{username} Delete user
UserApi GetUserByName Get /user/{username} Get user by user name
UserApi LoginUser Get /user/login Logs user into the system
UserApi LogoutUser Get /user/logout Logs out current logged in user session
UserApi UpdateUser Put /user/{username} Updated user

Documentation For Models

Documentation For Authorization

petstore_auth

Example

auth := context.WithValue(context.Background(), sw.ContextAccessToken, "ACCESSTOKENSTRING")
r, err := client.Service.Operation(auth, args)

Or via OAuth2 module to automatically refresh tokens and perform user authentication.

import "golang.org/x/oauth2"

/* Perform OAuth2 round trip request and obtain a token */

tokenSource := oauth2cfg.TokenSource(createContext(httpClient), &token)
auth := context.WithValue(oauth2.NoContext, sw.ContextOAuth2, tokenSource)
r, err := client.Service.Operation(auth, args)

api_key

  • Type: API key
  • API key parameter name: api_key
  • Location: HTTP header

Note, each API key must be added to a map of map[string]APIKey where the key is: api_key and passed in as the auth context for each request.

api_key_query

  • Type: API key
  • API key parameter name: api_key_query
  • Location: URL query string

Note, each API key must be added to a map of map[string]APIKey where the key is: api_key_query and passed in as the auth context for each request.

http_basic_test

  • Type: HTTP basic authentication

Example

auth := context.WithValue(context.Background(), sw.ContextBasicAuth, sw.BasicAuth{
    UserName: "username",
    Password: "password",
})
r, err := client.Service.Operation(auth, args)

bearer_test

  • Type: HTTP Bearer token authentication

Example

auth := context.WithValue(context.Background(), sw.ContextAccessToken, "BEARER_TOKEN_STRING")
r, err := client.Service.Operation(auth, args)

http_signature_test

  • Type: HTTP signature authentication

Example

	authConfig := client.HttpSignatureAuth{
		KeyId:                "my-key-id",
		PrivateKeyPath:       "rsa.pem",
		Passphrase:           "my-passphrase",
		SigningScheme:        sw.HttpSigningSchemeHs2019,
		SignedHeaders:        []string{
			sw.HttpSignatureParameterRequestTarget, // The special (request-target) parameter expresses the HTTP request target.
			sw.HttpSignatureParameterCreated,       // Time when request was signed, formatted as a Unix timestamp integer value.
			"Host",                                 // The Host request header specifies the domain name of the server, and optionally the TCP port number.
			"Date",                                 // The date and time at which the message was originated.
			"Content-Type",                         // The Media type of the body of the request.
			"Digest",                               // A cryptographic digest of the request body.
		},
		SigningAlgorithm:     sw.HttpSigningAlgorithmRsaPSS,
		SignatureMaxValidity: 5 * time.Minute,
	}
	var authCtx context.Context
	var err error
	if authCtx, err = authConfig.ContextWithValue(context.Background()); err != nil {
		// Process error
	}
	r, err = client.Service.Operation(auth, args)

Documentation for Utility Methods

Due to the fact that model structure members are all pointers, this package contains a number of utility functions to easily obtain pointers to values of basic types. Each of these functions takes a value of the given basic type and returns a pointer to it:

  • PtrBool
  • PtrInt
  • PtrInt32
  • PtrInt64
  • PtrFloat
  • PtrFloat32
  • PtrFloat64
  • PtrString
  • PtrTime

Author