Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张磊
/
FileStorageBeego
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
828235b4
authored
2014-02-20 13:53:13 +0800
by
slene
Committed by
asta.xie
2014-03-12 15:56:04 +0800
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
httplib support set transport and proxy
1 parent
430a0a97
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
50 additions
and
8 deletions
httplib/httplib.go
httplib/httplib.go
View file @
828235b
...
...
@@ -24,7 +24,7 @@ func Get(url string) *BeegoHttpRequest {
req
.
Method
=
"GET"
req
.
Header
=
http
.
Header
{}
req
.
Header
.
Set
(
"User-Agent"
,
defaultUserAgent
)
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
false
,
60
*
time
.
Second
,
60
*
time
.
Second
,
nil
}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
false
,
60
*
time
.
Second
,
60
*
time
.
Second
,
nil
,
nil
,
nil
}
}
// Post returns *BeegoHttpRequest with POST method.
...
...
@@ -33,7 +33,7 @@ func Post(url string) *BeegoHttpRequest {
req
.
Method
=
"POST"
req
.
Header
=
http
.
Header
{}
req
.
Header
.
Set
(
"User-Agent"
,
defaultUserAgent
)
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
false
,
60
*
time
.
Second
,
60
*
time
.
Second
,
nil
}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
false
,
60
*
time
.
Second
,
60
*
time
.
Second
,
nil
,
nil
,
nil
}
}
// Put returns *BeegoHttpRequest with PUT method.
...
...
@@ -42,7 +42,7 @@ func Put(url string) *BeegoHttpRequest {
req
.
Method
=
"PUT"
req
.
Header
=
http
.
Header
{}
req
.
Header
.
Set
(
"User-Agent"
,
defaultUserAgent
)
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
false
,
60
*
time
.
Second
,
60
*
time
.
Second
,
nil
}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
false
,
60
*
time
.
Second
,
60
*
time
.
Second
,
nil
,
nil
,
nil
}
}
// Delete returns *BeegoHttpRequest DELETE GET method.
...
...
@@ -51,7 +51,7 @@ func Delete(url string) *BeegoHttpRequest {
req
.
Method
=
"DELETE"
req
.
Header
=
http
.
Header
{}
req
.
Header
.
Set
(
"User-Agent"
,
defaultUserAgent
)
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
false
,
60
*
time
.
Second
,
60
*
time
.
Second
,
nil
}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
false
,
60
*
time
.
Second
,
60
*
time
.
Second
,
nil
,
nil
,
nil
}
}
// Head returns *BeegoHttpRequest with HEAD method.
...
...
@@ -60,7 +60,7 @@ func Head(url string) *BeegoHttpRequest {
req
.
Method
=
"HEAD"
req
.
Header
=
http
.
Header
{}
req
.
Header
.
Set
(
"User-Agent"
,
defaultUserAgent
)
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
false
,
60
*
time
.
Second
,
60
*
time
.
Second
,
nil
}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
false
,
60
*
time
.
Second
,
60
*
time
.
Second
,
nil
,
nil
,
nil
}
}
// BeegoHttpRequest provides more useful methods for requesting one url than http.Request.
...
...
@@ -72,6 +72,8 @@ type BeegoHttpRequest struct {
connectTimeout
time
.
Duration
readWriteTimeout
time
.
Duration
tlsClientConfig
*
tls
.
Config
proxy
func
(
*
http
.
Request
)
(
*
url
.
URL
,
error
)
transport
http
.
RoundTripper
}
// Debug sets show debug or not when executing request.
...
...
@@ -105,6 +107,24 @@ func (b *BeegoHttpRequest) SetCookie(cookie *http.Cookie) *BeegoHttpRequest {
return
b
}
// Set transport to
func
(
b
*
BeegoHttpRequest
)
SetTransport
(
transport
http
.
RoundTripper
)
*
BeegoHttpRequest
{
b
.
transport
=
transport
return
b
}
// Set http proxy
// example:
//
// func(req *http.Request) (*url.URL, error) {
// u, _ := url.ParseRequestURI("http://127.0.0.1:8118")
// return u, nil
// }
func
(
b
*
BeegoHttpRequest
)
SetProxy
(
proxy
func
(
*
http
.
Request
)
(
*
url
.
URL
,
error
))
*
BeegoHttpRequest
{
b
.
proxy
=
proxy
return
b
}
// Param adds query param in to request.
// params build query string as ?key1=value1&key2=value2...
func
(
b
*
BeegoHttpRequest
)
Param
(
key
,
value
string
)
*
BeegoHttpRequest
{
...
...
@@ -171,12 +191,34 @@ func (b *BeegoHttpRequest) getResponse() (*http.Response, error) {
println
(
string
(
dump
))
}
client
:=
&
http
.
Client
{
Transport
:
&
http
.
Transport
{
trans
:=
b
.
transport
if
trans
==
nil
{
// create default transport
trans
=
&
http
.
Transport
{
TLSClientConfig
:
b
.
tlsClientConfig
,
Proxy
:
b
.
proxy
,
Dial
:
TimeoutDialer
(
b
.
connectTimeout
,
b
.
readWriteTimeout
),
},
}
}
else
{
// if b.transport is *http.Transport then set the settings.
if
t
,
ok
:=
trans
.
(
*
http
.
Transport
);
ok
{
if
t
.
TLSClientConfig
==
nil
{
t
.
TLSClientConfig
=
b
.
tlsClientConfig
}
if
t
.
Proxy
==
nil
{
t
.
Proxy
=
b
.
proxy
}
if
t
.
Dial
==
nil
{
t
.
Dial
=
TimeoutDialer
(
b
.
connectTimeout
,
b
.
readWriteTimeout
)
}
}
}
client
:=
&
http
.
Client
{
Transport
:
trans
,
}
resp
,
err
:=
client
.
Do
(
b
.
req
)
if
err
!=
nil
{
return
nil
,
err
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment