Files
templates
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
# go-gitbook Go client for the GitBook API. {{^hideGenerationTimestamp}} Build date: {{generatedDate}} {{/hideGenerationTimestamp}} ## Installation ```shell go get {{gitHost}}/{{gitUserId}}/{{gitRepoId}}{{#isGoSubmodule}}/{{packageName}}{{/isGoSubmodule}} ``` ## Usage Import the package: ```golang import {{packageName}} "{{gitHost}}/{{gitUserId}}/{{gitRepoId}}{{#isGoSubmodule}}/{{packageName}}{{/isGoSubmodule}}/api" ``` To use a proxy, set the environment variable `HTTP_PROXY`: ```golang 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`. ```golang ctx := context.WithValue(context.Background(), {{packageName}}.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`. ```golang ctx := context.WithValue(context.Background(), {{packageName}}.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. ```golang ctx := context.WithValue(context.Background(), {{packageName}}.ContextOperationServerIndices, map[string]int{ "{classname}Service.{nickname}": 2, }) ctx = context.WithValue(context.Background(), {{packageName}}.ContextOperationServerVariables, map[string]map[string]string{ "{classname}Service.{nickname}": { "port": "8443", }, }) ``` ## Documentation for API Endpoints All URIs are relative to *{{basePath}}* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- {{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}*{{classname}}* | [**{{operationId}}**]({{apiDocPath}}{{classname}}.md#{{operationIdLowerCase}}) | **{{httpMethod}}** {{path}} | {{summary}} {{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} ## Documentation For Models {{#models}}{{#model}} - [{{{classname}}}]({{modelDocPath}}{{{classname}}}.md) {{/model}}{{/models}} ## Documentation For Authorization {{^authMethods}}Endpoints do not require authorization.{{/authMethods}} {{#hasAuthMethods}}Authentication schemes defined for the API:{{/hasAuthMethods}} {{#authMethods}} ### {{{name}}} {{#isApiKey}} - **Type**: API key - **API key parameter name**: {{{keyParamName}}} - **Location**: {{#isKeyInQuery}}URL query string{{/isKeyInQuery}}{{#isKeyInHeader}}HTTP header{{/isKeyInHeader}} Note, each API key must be added to a map of `map[string]APIKey` where the key is: {{keyParamName}} and passed in as the auth context for each request. {{/isApiKey}} {{#isBasic}} {{#isBasicBearer}} - **Type**: HTTP Bearer token authentication Example ```golang auth := context.WithValue(context.Background(), sw.ContextAccessToken, "BEARER_TOKEN_STRING") r, err := client.Service.Operation(auth, args) ``` {{/isBasicBearer}} {{#isBasicBasic}} - **Type**: HTTP basic authentication Example ```golang auth := context.WithValue(context.Background(), sw.ContextBasicAuth, sw.BasicAuth{ UserName: "username", Password: "password", }) r, err := client.Service.Operation(auth, args) ``` {{/isBasicBasic}} {{#isHttpSignature}} - **Type**: HTTP signature authentication Example ```golang 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) ``` {{/isHttpSignature}} {{/isBasic}} {{#isOAuth}} - **Type**: OAuth - **Flow**: {{{flow}}} - **Authorization URL**: {{{authorizationUrl}}} - **Scopes**: {{^scopes}}N/A{{/scopes}} {{#scopes}} - **{{{scope}}}**: {{{description}}} {{/scopes}} Example ```golang 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. ```golang 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) ``` {{/isOAuth}} {{/authMethods}} ## 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` --- © {{generatedYear}} GitBook, Inc.