first commit
commit
de94805d34
@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/simpleRequest.iml" filepath="$PROJECT_DIR$/.idea/simpleRequest.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="WEB_MODULE" version="4">
|
||||||
|
<component name="Go" enabled="true" />
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* @FileName: body.go
|
||||||
|
* @Author: JuneXu
|
||||||
|
* @CreateTime: 2022/3/2 上午1:23
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
|
||||||
|
package simpleRequest
|
||||||
|
|
||||||
|
var (
|
||||||
|
stringBodyType = "__STRING_BODY__"
|
||||||
|
)
|
||||||
|
|
||||||
|
type BodyConf struct {
|
||||||
|
simpleReq *SimpleRequest
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *BodyConf) Set(key string, value interface{}) *BodyConf {
|
||||||
|
s.simpleReq.tempBody[key] = value
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
func (s *BodyConf) Sets(data map[string]interface{}) *BodyConf {
|
||||||
|
for k, v := range data {
|
||||||
|
s.simpleReq.tempBody[k] = v
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
func (s *BodyConf) SetString(strData string) *BodyConf {
|
||||||
|
s.simpleReq.tempBody[stringBodyType] = strData
|
||||||
|
return s
|
||||||
|
}
|
@ -0,0 +1,161 @@
|
|||||||
|
/*
|
||||||
|
* @FileName: header.go
|
||||||
|
* @Author: JuneXu
|
||||||
|
* @CreateTime: 2022/3/1 下午9:44
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
|
||||||
|
package simpleRequest
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"math/rand"
|
||||||
|
"net/http"
|
||||||
|
"regexp"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
hdrUserAgentKey = http.CanonicalHeaderKey("User-Agent")
|
||||||
|
hdrAcceptKey = http.CanonicalHeaderKey("Accept")
|
||||||
|
hdrContentTypeKey = http.CanonicalHeaderKey("Content-Type")
|
||||||
|
hdrContentLengthKey = http.CanonicalHeaderKey("Content-Length")
|
||||||
|
hdrContentEncodingKey = http.CanonicalHeaderKey("Content-Encoding")
|
||||||
|
hdrLocationKey = http.CanonicalHeaderKey("Location")
|
||||||
|
|
||||||
|
plainTextType = "text/plain; charset=utf-8"
|
||||||
|
jsonContentType = "application/json"
|
||||||
|
formUrlencodedType = "application/x-www-form-urlencoded"
|
||||||
|
formDataType = "multipart/form-data"
|
||||||
|
xmlDataType = "application/xml"
|
||||||
|
textPlainType = "text/plain"
|
||||||
|
javaScriptType = "javascript"
|
||||||
|
|
||||||
|
jsonCheck = regexp.MustCompile(`(?i:(application|text)/(json|.*\+json|json\-.*)(;|$))`)
|
||||||
|
xmlCheck = regexp.MustCompile(`(?i:(application|text)/(xml|.*\+xml)(;|$))`)
|
||||||
|
bufPool = &sync.Pool{New: func() interface{} { return &bytes.Buffer{} }}
|
||||||
|
)
|
||||||
|
|
||||||
|
var userAgentList = [...]string{
|
||||||
|
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;",
|
||||||
|
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; 360SE)",
|
||||||
|
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1",
|
||||||
|
}
|
||||||
|
|
||||||
|
type HeadersConf struct {
|
||||||
|
simpleReq *SimpleRequest
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------
|
||||||
|
// Common key settings
|
||||||
|
|
||||||
|
//batch settings
|
||||||
|
func (s *HeadersConf) Sets(headers map[string]string) *HeadersConf {
|
||||||
|
for k, v := range headers {
|
||||||
|
s.simpleReq.headers.Set(k, v)
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
//single setting
|
||||||
|
func (s *HeadersConf) Set(header, value string) *HeadersConf {
|
||||||
|
s.simpleReq.headers.Set(header, value)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *HeadersConf) Add(header, value string) *HeadersConf {
|
||||||
|
s.simpleReq.headers.Add(header, value)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
//一般用不到
|
||||||
|
//func (s *HeadersConf) Values(keys string) *HeadersConf {
|
||||||
|
// s.simpleReq.headers.Values(keys)
|
||||||
|
// return s
|
||||||
|
//}
|
||||||
|
|
||||||
|
// SetHeaderMultiValues 支持多值传入,一般用不到
|
||||||
|
//func (s *HeadersConf) SetMultiValues(headers map[string][]string) *HeadersConf {
|
||||||
|
// for key, values := range headers {
|
||||||
|
// s.simpleReq.headers.Set(key, strings.Join(values, ", "))
|
||||||
|
// }
|
||||||
|
// return s
|
||||||
|
//}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------
|
||||||
|
// base Key settings
|
||||||
|
func (s *HeadersConf) SetUserAgent(value string) *HeadersConf {
|
||||||
|
s.simpleReq.headers.Set(hdrUserAgentKey, value)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
//set ContentType--------------------------------------------------
|
||||||
|
//func (s *HeadersConf) SetConentType(value string) *HeadersConf {
|
||||||
|
// s.simpleReq.headers.Set(hdrContentTypeKey, value)
|
||||||
|
// return s
|
||||||
|
//}
|
||||||
|
|
||||||
|
func (s *HeadersConf) ConentType_json() *HeadersConf {
|
||||||
|
jsonData, err := json.Marshal(s.simpleReq.tempBody)
|
||||||
|
if err == nil {
|
||||||
|
s.simpleReq.body = bytes.NewReader(jsonData)
|
||||||
|
}
|
||||||
|
s.simpleReq.body = bytes.NewReader(jsonData)
|
||||||
|
s.simpleReq.headers.Set(hdrContentTypeKey, jsonContentType)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *HeadersConf) ConentType_formData() *HeadersConf {
|
||||||
|
//tmp := url.Values{}
|
||||||
|
|
||||||
|
//for k, v := range s.simpleReq.tempBody {
|
||||||
|
// tmp.Add(k, fmt.Sprintf("%v", v))
|
||||||
|
//}
|
||||||
|
s.simpleReq.headers.Set(hdrContentTypeKey, formDataType)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
func (s *HeadersConf) ConentType_formUrlencoded() *HeadersConf {
|
||||||
|
s.simpleReq.headers.Set(hdrContentTypeKey, formUrlencodedType)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
func (s *HeadersConf) ConentType_textPlain() *HeadersConf {
|
||||||
|
s.simpleReq.headers.Set(hdrContentTypeKey, plainTextType)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
func (s *HeadersConf) SetConentLength(value string) *HeadersConf {
|
||||||
|
s.simpleReq.headers.Set(hdrContentLengthKey, value)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
func (s *HeadersConf) SetConentEncoding(value string) *HeadersConf {
|
||||||
|
s.simpleReq.headers.Set(hdrContentEncodingKey, value)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
func (s *HeadersConf) SetConentLocation(value string) *HeadersConf {
|
||||||
|
s.simpleReq.headers.Set(hdrLocationKey, value)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------
|
||||||
|
// Extended settings
|
||||||
|
//随机请求头的User-Agent参数
|
||||||
|
func (s *HeadersConf) getRandomUerAgent() string {
|
||||||
|
rand.Seed(time.Now().UnixNano())
|
||||||
|
index := rand.Intn(len(userAgentList))
|
||||||
|
return userAgentList[index]
|
||||||
|
}
|
||||||
|
|
||||||
|
//设置为随机 User-Agent
|
||||||
|
func (s *HeadersConf) SetRandomUerAgent() *HeadersConf {
|
||||||
|
s.simpleReq.headers.Set(hdrUserAgentKey, s.getRandomUerAgent())
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
//set Authorization
|
||||||
|
func (s *HeadersConf) SetAuthorization(value string) *HeadersConf {
|
||||||
|
s.simpleReq.headers.Set("Authorization", value)
|
||||||
|
return s
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* @FileName: param.go
|
||||||
|
* @Author: JuneXu
|
||||||
|
* @CreateTime: 2022/3/1 下午9:07
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
|
||||||
|
package simpleRequest
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
type QueryParams struct {
|
||||||
|
simpleReq *SimpleRequest
|
||||||
|
}
|
||||||
|
|
||||||
|
//batch settings
|
||||||
|
func (s *QueryParams) Sets(data map[string]interface{}) *QueryParams {
|
||||||
|
for k, v := range data {
|
||||||
|
s.simpleReq.queryParams.Set(k, fmt.Sprintf("%v", v))
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
//single settings
|
||||||
|
func (s *QueryParams) Set(key string, value interface{}) *QueryParams {
|
||||||
|
s.simpleReq.queryParams.Set(key, fmt.Sprintf("%v", value))
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
//get all queryParams
|
||||||
|
func (s *QueryParams) Gets() *url.Values {
|
||||||
|
return &s.simpleReq.queryParams
|
||||||
|
}
|
Loading…
Reference in New Issue