github.com/phrase/openapi@v0.0.0-20240514140800-49e8a106740e/openapi-generator/templates/cli/api.handlebars (about)

     1  package cmd
     2  {{#operations}}
     3  import (
     4  	"context"
     5  	"encoding/json"
     6  	"fmt"
     7  	"os"
     8  	"strings"
     9  
    10  	"github.com/antihax/optional"
    11  	helpers "github.com/phrase/phrase-cli/helpers"
    12  	api "github.com/phrase/phrase-go/v3"
    13  	"github.com/spf13/cobra"
    14  	"github.com/spf13/viper"
    15  )
    16  
    17  func init() {
    18  	{{#operation}}init{{{nickname}}}()
    19  	{{/operation}}
    20  	rootCmd.AddCommand({{{classname}}}Cmd)
    21  }
    22  
    23  var {{{classname}}}Cmd = &cobra.Command{
    24  	Use:	 helpers.ToSnakeCase("{{{cut classname "Api"}}}"),
    25  	Short:	 "{{{join (cut classname "Api") "API" " "}}}",
    26  }
    27  {{#operation}}
    28  func init{{{nickname}}}() {
    29  	params := viper.New()
    30  	var use string
    31  	// this weird approach is due to mustache template limitations
    32  	use = strings.Join(strings.Split("{{operationIdOriginal}}", "/")[1:], "_")
    33  	var {{{nickname}}} = &cobra.Command{
    34  		Use:	 use,
    35  		Short: "{{#summary}}{{{.}}}{{/summary}}{{^summary}}Method for {{operationId}}{{/summary}}",
    36  		Long:  `{{#notes}}{{notes}}{{/notes}}`,
    37  		Run: func(cmd *cobra.Command, args []string) {
    38  			auth := Auth()
    39  
    40  			cfg := api.NewConfiguration()
    41  			cfg.SetUserAgent(Config.UserAgent)
    42  			if Config.Credentials.Host != "" {
    43  				cfg.BasePath = Config.Credentials.Host
    44  			}
    45  
    46  			client := api.NewAPIClient(cfg)
    47  			{{#hasOptionalParams}}localVarOptionals := api.{{#structPrefix}}{{&classname}}{{/structPrefix}}{{{nickname}}}Opts{}
    48  
    49  			if Config.Credentials.TFA && Config.Credentials.TFAToken != "" {
    50  				localVarOptionals.XPhraseAppOTP = optional.NewString(Config.Credentials.TFAToken)
    51  			}{{/hasOptionalParams}}
    52  
    53  
    54  			{{#allParams~}}
    55  				{{#required~}}
    56  					{{#isPrimitiveType~}}
    57  						{{#if (eq paramName "file")~}}
    58  							{{paramName}}, err := os.Open(params.GetString(helpers.ToSnakeCase("{{paramName}}")))
    59  							if err != nil {
    60  							HandleError(err)
    61  							}
    62  						{{else~}}
    63  							{{paramName}} := params.Get{{{capitalizeFirst dataType}}}(helpers.ToSnakeCase("{{{vendorExtensions.x-export-param-name}}}"))
    64  						{{/if}}
    65  					{{else~}}
    66  						var {{paramName}} api.{{{dataType}}}
    67  						if err := json.Unmarshal([]byte(params.GetString("data")), &{{paramName}}); err != nil {
    68  							HandleError(err)
    69  						}
    70  						if Config.Debug {
    71  							fmt.Printf("%+v\n", {{paramName}})
    72  						}
    73  					{{/isPrimitiveType~}}
    74  				{{else~}}
    75  					{{#if (or (eq paramName "file") (eq paramName "filename"))~}}
    76  						if params.IsSet(helpers.ToSnakeCase("{{paramName}}")) {
    77  							file, err := os.Open(params.GetString(helpers.ToSnakeCase("{{paramName}}")))
    78  							localVarOptionals.{{{vendorExtensions.x-export-param-name}}} = optional.NewInterface(file)
    79  							if err != nil {
    80  								HandleError(err)
    81  							}
    82  						}
    83  					{{else~}}
    84  						{{#isPrimitiveType~}}
    85  							if params.IsSet(helpers.ToSnakeCase("{{paramName}}")) {
    86  								localVarOptionals.{{{vendorExtensions.x-export-param-name}}} = optional.New{{capitalizeFirst dataType}}(params.Get{{{capitalizeFirst dataType}}}(helpers.ToSnakeCase("{{{vendorExtensions.x-export-param-name}}}")))
    87  							}
    88  						{{/isPrimitiveType~}}
    89  						{{#isModel~}}
    90  							var {{paramName}} map[string]interface{}
    91  							if err := json.Unmarshal([]byte(params.GetString("data")), &{{paramName}}); err != nil {
    92  								HandleError(err)
    93  							}
    94  							if Config.Debug {
    95  								fmt.Printf("%+v\n", {{paramName}})
    96  							}
    97  						{{/isModel~}}
    98  						{{^isPrimitiveType}}{{^isModel}}
    99  							if params.IsSet(helpers.ToSnakeCase("{{paramName}}")) {
   100  								var {{paramName}} map[string]interface{}
   101  								if err := json.Unmarshal([]byte(params.GetString(helpers.ToSnakeCase("{{{vendorExtensions.x-export-param-name}}}"))), &{{paramName}}); err != nil {
   102  									HandleError(err)
   103  								}
   104  								localVarOptionals.{{{vendorExtensions.x-export-param-name}}} = optional.NewInterface({{paramName}})
   105  							}
   106  						{{/isModel}}{{/isPrimitiveType}}
   107  					{{/if}}
   108  				{{/required~}}
   109  			{{/allParams~}}
   110  
   111  			data, api_response, err := client.{{classname}}.{{{nickname}}}(auth{{#hasParams}}, {{/hasParams}}{{#allParams}}{{#required}}{{paramName}}{{#unless @last}}, {{/unless}}{{/required}}{{/allParams}}{{#hasOptionalParams}}&localVarOptionals{{/hasOptionalParams}})
   112  
   113  			if err != nil {
   114  				switch castedError := err.(type) {
   115  					case api.GenericOpenAPIError:
   116  						fmt.Printf("\n%s\n\n", string(castedError.Body()))
   117  						HandleError(castedError)
   118  
   119  					default:
   120  						HandleError(castedError)
   121  				}
   122  			} else if api_response.StatusCode >= 200 && api_response.StatusCode < 300 {
   123  				{{#if returnType}}{{#if (eq returnType "*os.File")}}content, _ := ioutil.ReadAll(data)
   124  				fmt.Printf("%s", string(content))
   125  				data.Close()
   126  				os.Remove(data.Name()){{else}}jsonBuf, jsonErr := json.MarshalIndent(data, "", " ")
   127  				if jsonErr != nil {
   128  					fmt.Printf("%v\n", data)
   129  					HandleError(err)
   130  				}
   131  				fmt.Printf("%s\n", string(jsonBuf)){{/if}}{{else}}os.Stdout.Write(data){{/if}}
   132  
   133  				if Config.Debug {
   134  					fmt.Printf("%+v\n", api_response) // &{Response:0xc00011ccf0 NextPage:2 FirstPage:1 LastPage:4 Rate:{Limit:1000 Remaining:998 Reset:2020-04-25 00:35:00 +0200 CEST}}
   135  				}
   136  			}
   137  		},
   138  	}
   139  
   140  	{{{classname}}}Cmd.AddCommand({{{nickname}}})
   141  	{{#allParams}}{{#isPrimitiveType}}AddFlag({{{nickname}}}, "{{{dataType}}}", helpers.ToSnakeCase("{{{vendorExtensions.x-export-param-name}}}"), "", "{{#description}}{{{.}}}{{/description}}", {{#required}}true{{/required}}{{^required}}false{{/required}}){{/isPrimitiveType}}{{^isPrimitiveType}}{{#isModel}}AddFlag({{{nickname}}}, "string", "data", "d", "payload in JSON format", {{#required}}true{{/required}}{{^required}}false{{/required}}){{/isModel}}{{^isModel}}AddFlag({{{nickname}}}, "string", helpers.ToSnakeCase("{{{vendorExtensions.x-export-param-name}}}"), "", "payload in JSON format", {{#required}}true{{/required}}{{^required}}false{{/required}}){{/isModel}}{{/isPrimitiveType}}
   142    {{/allParams}}
   143  	params.BindPFlags({{{nickname}}}.Flags())
   144  }{{/operation}}
   145  {{/operations}}