本文整理汇总了Golang中github.com/shibukawa/curl_as_dsl/common.CurlOptions类的典型用法代码示例。如果您正苦于以下问题:Golang CurlOptions类的具体用法?Golang CurlOptions怎么用?Golang CurlOptions使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CurlOptions类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: ProcessCurlCommand
/*
Dispatcher function of curl command
This is an exported function and called from httpgen.
*/
func ProcessCurlCommand(options *common.CurlOptions) (string, interface{}) {
generator := NewXHRGenerator(options)
for i, data := range options.ProcessedData {
fileName := data.FileName()
if fileName != "" {
isText := data.Type == common.DataAsciiType
file := &ExternalFile{
Data: &data,
FileName: fileName,
TextType: isText,
}
generator.ExternalFiles[i] = file
}
}
if len(generator.ExternalFiles) == 1 {
for _, externalFile := range generator.ExternalFiles {
externalFile.VariableName = "file"
}
} else {
for i, externalFile := range generator.ExternalFiles {
externalFile.VariableName = fmt.Sprintf("file_%d", i+1)
}
}
generator.processedHeaders = options.GroupedHeaders()
var templateName string
switch len(generator.ExternalFiles) {
case 0:
templateName = "simple"
case 1:
templateName = "external_file"
default:
templateName = "external_files"
}
if generator.Options.User != "" {
generator.specialHeaders = append(generator.specialHeaders, []string{"Authorization", fmt.Sprintf(`"Basic " + btoa("%s")`, generator.Options.User)})
}
if options.ProcessedData.HasData() {
if options.Get {
generator.SetDataForUrl()
} else {
generator.Options.InsertContentTypeHeader("application/x-www-form-urlencoded")
generator.SetDataForBody()
}
} else if options.ProcessedData.HasForm() {
generator.SetFormForBody()
} else if options.Method() == "GET" && len(generator.processedHeaders) == 0 && len(generator.specialHeaders) == 0 {
}
return templateName, *generator
}
示例2: ProcessCurlCommand
/*
Dispatcher function of curl command
This is an exported function and called from httpgen.
*/
func ProcessCurlCommand(options *common.CurlOptions) (string, interface{}) {
generator := NewNodeJsGenerator(options)
if options.Http2Flag {
generator.Modules["http2"] = true
generator.ClientModule = "http2"
} else if strings.HasPrefix(options.Url, "https") {
generator.Modules["https"] = true
generator.ClientModule = "https"
} else {
generator.Modules["http"] = true
generator.ClientModule = "http"
options.Insecure = false
}
for _, data := range options.ProcessedData {
fileName := data.FileName()
if fileName != "" {
isText := data.Type == common.DataAsciiType
generator.ExternalFiles = append(generator.ExternalFiles, ExternalFile{FileName: fileName, TextType: isText})
}
}
generator.processedHeaders = options.GroupedHeaders()
var templateName string
switch len(generator.ExternalFiles) {
case 0:
templateName = "full"
case 1:
templateName = "external_file"
default:
templateName = "external_files"
}
if generator.Options.User != "" {
generator.specialHeaders = append(generator.specialHeaders, fmt.Sprintf("\"Authorization\": \"Basic \" + new Buffer(\"%s\").toString(\"base64\")", generator.Options.User))
}
if options.ProcessedData.HasData() {
if options.Get {
generator.SetDataForUrl()
} else {
generator.Options.InsertContentTypeHeader("application/x-www-form-urlencoded")
generator.SetDataForBody()
}
} else if options.ProcessedData.HasForm() {
generator.SetFormForBody()
} else if options.Method() == "GET" && len(generator.processedHeaders) == 0 && len(generator.specialHeaders) == 0 {
if templateName == "full" && !options.Insecure {
templateName = "simple_get"
}
}
return templateName, *generator
}
示例3: ClientNeeded
func ClientNeeded(options *common.CurlOptions) bool {
if options.Http2Flag || options.Insecure || options.Proxy != "" || options.User != "" || len(options.Cookie) > 0 {
return true
}
if len(options.AWSV2) > 0 {
return true
}
if options.OnlyHasContentTypeHeader() {
method := options.Method()
if method != "GET" && method != "POST" {
return true
}
return false
}
return true
}
示例4: main
func main() {
var globalOptions GlobalOptions
var curlOptions common.CurlOptions
curlOptions.Init()
parser := flags.NewParser(&globalOptions, flags.Default)
curlCommand, err := parser.AddCommand("curl",
"Generate code from curl options",
"This command has almost same options of curl and generate code",
&curlOptions)
urls, err := parser.Parse()
if err != nil {
os.Exit(1)
}
if len(urls) > 1 {
fmt.Println("It accept only one url. Remained urls are ignored.")
}
if parser.Active == curlCommand {
// --url option has higher priority than params.
if curlOptions.Url == "" {
if len(urls) > 0 {
curlOptions.Url = urls[0]
} else {
log.Fatalln("Both --url option and url parameters are missing")
}
}
sourceCode, langName, templateName, option := generator.GenerateCode(globalOptions.Target, &curlOptions)
if templateName != "" {
if globalOptions.Debug {
st := reflect.TypeOf(option)
v := reflect.ValueOf(option)
fmt.Fprintf(os.Stderr, "Debug: template name=%s_%s\n", langName, templateName)
fmt.Fprintf(os.Stderr, "Debug: template context=%s\n", st.Name())
num := st.NumField()
for i := 0; i < num; i++ {
fmt.Fprintf(os.Stderr, " %s: %s\n", st.Field(i).Name, v.Field(i).String())
}
}
fmt.Println(sourceCode)
} else {
PrintLangHelp(globalOptions.Target)
os.Exit(1)
}
}
}
示例5: GenerateCode
func GenerateCode(target, options string) (string, string) {
var globalOptions GlobalOptions
var curlOptions common.CurlOptions
curlOptions.Init()
parser := flags.NewParser(&globalOptions, flags.Default)
curlCommand, err := parser.AddCommand("curl",
"Generate code from curl options",
"This command has almost same options of curl and generate code",
&curlOptions)
if !strings.HasPrefix(options, "curl ") {
options = "curl " + options
}
args := shell.Parse(options)
urls, err := parser.ParseArgs(args)
if err != nil {
console.Log(err)
return "", err.Error()
}
if len(urls) > 1 {
return "", "It accept only one url. Remained urls are ignored:" + strings.Join(urls, ", ")
}
if parser.Active == curlCommand {
// --url option has higher priority than params.
if curlOptions.Url == "" {
if len(urls) > 0 {
curlOptions.Url = urls[0]
} else {
console.Error("Both --url option and url parameters are missing")
return "", "Both --url option and url parameters are missing"
}
}
sourceCode, _, _, _ := generator.GenerateCode(target, &curlOptions)
return html.EscapeString(sourceCode), ""
}
return "", ""
}