github.com/gogf/gf/v2@v2.7.4/net/goai/goai_security.go (about)

     1  // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
     2  //
     3  // This Source Code Form is subject to the terms of the MIT License.
     4  // If a copy of the MIT was not distributed with this file,
     5  // You can obtain one at https://github.com/gogf/gf.
     6  
     7  package goai
     8  
     9  import (
    10  	"github.com/gogf/gf/v2/internal/json"
    11  )
    12  
    13  type SecurityScheme struct {
    14  	Type             string      `json:"type,omitempty"`
    15  	Description      string      `json:"description,omitempty"`
    16  	Name             string      `json:"name,omitempty"`
    17  	In               string      `json:"in,omitempty"`
    18  	Scheme           string      `json:"scheme,omitempty"`
    19  	BearerFormat     string      `json:"bearerFormat,omitempty"`
    20  	Flows            *OAuthFlows `json:"flows,omitempty"`
    21  	OpenIdConnectUrl string      `json:"openIdConnectUrl,omitempty"`
    22  }
    23  
    24  type SecuritySchemes map[string]SecuritySchemeRef
    25  
    26  type SecuritySchemeRef struct {
    27  	Ref   string
    28  	Value *SecurityScheme
    29  }
    30  
    31  type SecurityRequirements []SecurityRequirement
    32  
    33  type SecurityRequirement map[string][]string
    34  
    35  type OAuthFlows struct {
    36  	Implicit          *OAuthFlow `json:"implicit,omitempty"`
    37  	Password          *OAuthFlow `json:"password,omitempty"`
    38  	ClientCredentials *OAuthFlow `json:"clientCredentials,omitempty"`
    39  	AuthorizationCode *OAuthFlow `json:"authorizationCode,omitempty"`
    40  }
    41  
    42  type OAuthFlow struct {
    43  	AuthorizationURL string            `json:"authorizationUrl,omitempty"`
    44  	TokenURL         string            `json:"tokenUrl,omitempty"`
    45  	RefreshURL       string            `json:"refreshUrl,omitempty"`
    46  	Scopes           map[string]string `json:"scopes"`
    47  }
    48  
    49  func (r SecuritySchemeRef) MarshalJSON() ([]byte, error) {
    50  	if r.Ref != "" {
    51  		return formatRefToBytes(r.Ref), nil
    52  	}
    53  	return json.Marshal(r.Value)
    54  }