180 lines
4.3 KiB
Go
180 lines
4.3 KiB
Go
|
// Code generated by goa v3.6.0, DO NOT EDIT.
|
||
|
//
|
||
|
// host HTTP client CLI support package
|
||
|
//
|
||
|
// Command:
|
||
|
// $ goa gen goa_example/design
|
||
|
|
||
|
package cli
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"fmt"
|
||
|
service1c "goa_example/gen/http/service1/client"
|
||
|
"net/http"
|
||
|
"os"
|
||
|
|
||
|
goahttp "goa.design/goa/v3/http"
|
||
|
goa "goa.design/goa/v3/pkg"
|
||
|
)
|
||
|
|
||
|
// UsageCommands returns the set of commands and sub-commands using the format
|
||
|
//
|
||
|
// command (subcommand1|subcommand2|...)
|
||
|
//
|
||
|
func UsageCommands() string {
|
||
|
return `service1 (signin|secure)
|
||
|
`
|
||
|
}
|
||
|
|
||
|
// UsageExamples produces an example of a valid invocation of the CLI tool.
|
||
|
func UsageExamples() string {
|
||
|
return os.Args[0] + ` service1 signin --username "user" --password "password"` + "\n" +
|
||
|
""
|
||
|
}
|
||
|
|
||
|
// ParseEndpoint returns the endpoint and payload as specified on the command
|
||
|
// line.
|
||
|
func ParseEndpoint(
|
||
|
scheme, host string,
|
||
|
doer goahttp.Doer,
|
||
|
enc func(*http.Request) goahttp.Encoder,
|
||
|
dec func(*http.Response) goahttp.Decoder,
|
||
|
restore bool,
|
||
|
) (goa.Endpoint, interface{}, error) {
|
||
|
var (
|
||
|
service1Flags = flag.NewFlagSet("service1", flag.ContinueOnError)
|
||
|
|
||
|
service1SigninFlags = flag.NewFlagSet("signin", flag.ExitOnError)
|
||
|
service1SigninUsernameFlag = service1SigninFlags.String("username", "REQUIRED", "Username used to perform signin")
|
||
|
service1SigninPasswordFlag = service1SigninFlags.String("password", "REQUIRED", "Password used to perform signin")
|
||
|
|
||
|
service1SecureFlags = flag.NewFlagSet("secure", flag.ExitOnError)
|
||
|
service1SecureBodyFlag = service1SecureFlags.String("body", "REQUIRED", "")
|
||
|
service1SecureTokenFlag = service1SecureFlags.String("token", "REQUIRED", "")
|
||
|
)
|
||
|
service1Flags.Usage = service1Usage
|
||
|
service1SigninFlags.Usage = service1SigninUsage
|
||
|
service1SecureFlags.Usage = service1SecureUsage
|
||
|
|
||
|
if err := flag.CommandLine.Parse(os.Args[1:]); err != nil {
|
||
|
return nil, nil, err
|
||
|
}
|
||
|
|
||
|
if flag.NArg() < 2 { // two non flag args are required: SERVICE and ENDPOINT (aka COMMAND)
|
||
|
return nil, nil, fmt.Errorf("not enough arguments")
|
||
|
}
|
||
|
|
||
|
var (
|
||
|
svcn string
|
||
|
svcf *flag.FlagSet
|
||
|
)
|
||
|
{
|
||
|
svcn = flag.Arg(0)
|
||
|
switch svcn {
|
||
|
case "service1":
|
||
|
svcf = service1Flags
|
||
|
default:
|
||
|
return nil, nil, fmt.Errorf("unknown service %q", svcn)
|
||
|
}
|
||
|
}
|
||
|
if err := svcf.Parse(flag.Args()[1:]); err != nil {
|
||
|
return nil, nil, err
|
||
|
}
|
||
|
|
||
|
var (
|
||
|
epn string
|
||
|
epf *flag.FlagSet
|
||
|
)
|
||
|
{
|
||
|
epn = svcf.Arg(0)
|
||
|
switch svcn {
|
||
|
case "service1":
|
||
|
switch epn {
|
||
|
case "signin":
|
||
|
epf = service1SigninFlags
|
||
|
|
||
|
case "secure":
|
||
|
epf = service1SecureFlags
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
if epf == nil {
|
||
|
return nil, nil, fmt.Errorf("unknown %q endpoint %q", svcn, epn)
|
||
|
}
|
||
|
|
||
|
// Parse endpoint flags if any
|
||
|
if svcf.NArg() > 1 {
|
||
|
if err := epf.Parse(svcf.Args()[1:]); err != nil {
|
||
|
return nil, nil, err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var (
|
||
|
data interface{}
|
||
|
endpoint goa.Endpoint
|
||
|
err error
|
||
|
)
|
||
|
{
|
||
|
switch svcn {
|
||
|
case "service1":
|
||
|
c := service1c.NewClient(scheme, host, doer, enc, dec, restore)
|
||
|
switch epn {
|
||
|
case "signin":
|
||
|
endpoint = c.Signin()
|
||
|
data, err = service1c.BuildSigninPayload(*service1SigninUsernameFlag, *service1SigninPasswordFlag)
|
||
|
case "secure":
|
||
|
endpoint = c.Secure()
|
||
|
data, err = service1c.BuildSecurePayload(*service1SecureBodyFlag, *service1SecureTokenFlag)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if err != nil {
|
||
|
return nil, nil, err
|
||
|
}
|
||
|
|
||
|
return endpoint, data, nil
|
||
|
}
|
||
|
|
||
|
// service1Usage displays the usage of the service1 command and its subcommands.
|
||
|
func service1Usage() {
|
||
|
fmt.Fprintf(os.Stderr, `The secured service exposes endpoints that require valid authorization credentials.
|
||
|
Usage:
|
||
|
%[1]s [globalflags] service1 COMMAND [flags]
|
||
|
|
||
|
COMMAND:
|
||
|
signin: Signin implements signin.
|
||
|
secure: 这是一个需要JWT认证的接口
|
||
|
|
||
|
Additional help:
|
||
|
%[1]s service1 COMMAND --help
|
||
|
`, os.Args[0])
|
||
|
}
|
||
|
func service1SigninUsage() {
|
||
|
fmt.Fprintf(os.Stderr, `%[1]s [flags] service1 signin -username STRING -password STRING
|
||
|
|
||
|
Signin implements signin.
|
||
|
-username STRING: Username used to perform signin
|
||
|
-password STRING: Password used to perform signin
|
||
|
|
||
|
Example:
|
||
|
%[1]s service1 signin --username "user" --password "password"
|
||
|
`, os.Args[0])
|
||
|
}
|
||
|
|
||
|
func service1SecureUsage() {
|
||
|
fmt.Fprintf(os.Stderr, `%[1]s [flags] service1 secure -body JSON -token STRING
|
||
|
|
||
|
这是一个需要JWT认证的接口
|
||
|
-body JSON:
|
||
|
-token STRING:
|
||
|
|
||
|
Example:
|
||
|
%[1]s service1 secure --body '{
|
||
|
"fail": true
|
||
|
}' --token "Ducimus aut similique."
|
||
|
`, os.Args[0])
|
||
|
}
|