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}}