Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
beego
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
beego
Commits
de875293
Commit
de875293
authored
Aug 18, 2014
by
smallfish
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update httplib support read data from response buffer, add some testcases
parent
c4fa1792
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
90 additions
and
15 deletions
+90
-15
httplib.go
httplib/httplib.go
+23
-12
httplib_test.go
httplib/httplib_test.go
+67
-3
No files found.
httplib/httplib.go
View file @
de875293
...
...
@@ -16,7 +16,7 @@
//
// import "github.com/astaxie/beego/context"
//
// b
:=
httplib.Post("http://beego.me/")
// b
:=
httplib.Post("http://beego.me/")
// b.Param("username","astaxie")
// b.Param("password","123456")
// b.PostFile("uploadfile1", "httplib.pdf")
...
...
@@ -76,41 +76,46 @@ func SetDefaultSetting(setting BeegoHttpSettings) {
// Get returns *BeegoHttpRequest with GET method.
func
Get
(
url
string
)
*
BeegoHttpRequest
{
var
req
http
.
Request
var
resp
http
.
Response
req
.
Method
=
"GET"
req
.
Header
=
http
.
Header
{}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
map
[
string
]
string
{},
defaultSetting
}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
map
[
string
]
string
{},
defaultSetting
,
&
resp
,
nil
}
}
// Post returns *BeegoHttpRequest with POST method.
func
Post
(
url
string
)
*
BeegoHttpRequest
{
var
req
http
.
Request
var
resp
http
.
Response
req
.
Method
=
"POST"
req
.
Header
=
http
.
Header
{}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
map
[
string
]
string
{},
defaultSetting
}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
map
[
string
]
string
{},
defaultSetting
,
&
resp
,
nil
}
}
// Put returns *BeegoHttpRequest with PUT method.
func
Put
(
url
string
)
*
BeegoHttpRequest
{
var
req
http
.
Request
var
resp
http
.
Response
req
.
Method
=
"PUT"
req
.
Header
=
http
.
Header
{}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
map
[
string
]
string
{},
defaultSetting
}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
map
[
string
]
string
{},
defaultSetting
,
&
resp
,
nil
}
}
// Delete returns *BeegoHttpRequest DELETE GET method.
func
Delete
(
url
string
)
*
BeegoHttpRequest
{
var
req
http
.
Request
var
resp
http
.
Response
req
.
Method
=
"DELETE"
req
.
Header
=
http
.
Header
{}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
map
[
string
]
string
{},
defaultSetting
}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
map
[
string
]
string
{},
defaultSetting
,
&
resp
,
nil
}
}
// Head returns *BeegoHttpRequest with HEAD method.
func
Head
(
url
string
)
*
BeegoHttpRequest
{
var
req
http
.
Request
var
resp
http
.
Response
req
.
Method
=
"HEAD"
req
.
Header
=
http
.
Header
{}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
map
[
string
]
string
{},
defaultSetting
}
return
&
BeegoHttpRequest
{
url
,
&
req
,
map
[
string
]
string
{},
map
[
string
]
string
{},
defaultSetting
,
&
resp
,
nil
}
}
// BeegoHttpSettings
...
...
@@ -132,6 +137,8 @@ type BeegoHttpRequest struct {
params
map
[
string
]
string
files
map
[
string
]
string
setting
BeegoHttpSettings
resp
*
http
.
Response
body
[]
byte
}
// Change request settings
...
...
@@ -247,6 +254,9 @@ func (b *BeegoHttpRequest) Body(data interface{}) *BeegoHttpRequest {
}
func
(
b
*
BeegoHttpRequest
)
getResponse
()
(
*
http
.
Response
,
error
)
{
if
b
.
resp
.
StatusCode
!=
0
{
return
b
.
resp
,
nil
}
var
paramBody
string
if
len
(
b
.
params
)
>
0
{
var
buf
bytes
.
Buffer
...
...
@@ -365,6 +375,7 @@ func (b *BeegoHttpRequest) getResponse() (*http.Response, error) {
if
err
!=
nil
{
return
nil
,
err
}
b
.
resp
=
resp
return
resp
,
nil
}
...
...
@@ -382,6 +393,9 @@ func (b *BeegoHttpRequest) String() (string, error) {
// Bytes returns the body []byte in response.
// it calls Response inner.
func
(
b
*
BeegoHttpRequest
)
Bytes
()
([]
byte
,
error
)
{
if
b
.
body
!=
nil
{
return
b
.
body
,
nil
}
resp
,
err
:=
b
.
getResponse
()
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -394,6 +408,7 @@ func (b *BeegoHttpRequest) Bytes() ([]byte, error) {
if
err
!=
nil
{
return
nil
,
err
}
b
.
body
=
data
return
data
,
nil
}
...
...
@@ -406,15 +421,11 @@ func (b *BeegoHttpRequest) ToFile(filename string) error {
}
defer
f
.
Close
()
resp
,
err
:=
b
.
getResponse
()
data
,
err
:=
b
.
Bytes
()
if
err
!=
nil
{
return
err
}
if
resp
.
Body
==
nil
{
return
nil
}
defer
resp
.
Body
.
Close
()
_
,
err
=
io
.
Copy
(
f
,
resp
.
Body
)
_
,
err
=
f
.
Write
(
data
)
return
err
}
...
...
httplib/httplib_test.go
View file @
de875293
...
...
@@ -19,23 +19,41 @@ import (
"testing"
)
func
TestSimpleGet
(
t
*
testing
.
T
)
{
str
,
err
:=
Get
(
"http://httpbin.org/get"
)
.
String
()
func
TestResponse
(
t
*
testing
.
T
)
{
req
:=
Get
(
"http://httpbin.org/get"
)
resp
,
err
:=
req
.
Response
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
str
)
t
.
Log
(
resp
)
}
func
TestGet
(
t
*
testing
.
T
)
{
req
:=
Get
(
"http://httpbin.org/get"
)
b
,
err
:=
req
.
Bytes
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
b
)
s
,
err
:=
req
.
String
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
s
)
}
func
TestSimplePost
(
t
*
testing
.
T
)
{
v
:=
"smallfish"
req
:=
Post
(
"http://httpbin.org/post"
)
req
.
Param
(
"username"
,
v
)
str
,
err
:=
req
.
String
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
str
)
n
:=
strings
.
Index
(
str
,
v
)
if
n
==
-
1
{
t
.
Fatal
(
v
+
" not found in post"
)
...
...
@@ -47,17 +65,35 @@ func TestPostFile(t *testing.T) {
req
:=
Post
(
"http://httpbin.org/post"
)
req
.
Param
(
"username"
,
v
)
req
.
PostFile
(
"uploadfile"
,
"httplib_test.go"
)
str
,
err
:=
req
.
String
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
str
)
n
:=
strings
.
Index
(
str
,
v
)
if
n
==
-
1
{
t
.
Fatal
(
v
+
" not found in post"
)
}
}
func
TestSimplePut
(
t
*
testing
.
T
)
{
str
,
err
:=
Put
(
"http://httpbin.org/put"
)
.
String
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
str
)
}
func
TestSimpleDelete
(
t
*
testing
.
T
)
{
str
,
err
:=
Delete
(
"http://httpbin.org/delete"
)
.
String
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
str
)
}
func
TestWithCookie
(
t
*
testing
.
T
)
{
v
:=
"smallfish"
str
,
err
:=
Get
(
"http://httpbin.org/cookies/set?k1="
+
v
)
.
SetEnableCookie
(
true
)
.
String
()
...
...
@@ -65,11 +101,13 @@ func TestWithCookie(t *testing.T) {
t
.
Fatal
(
err
)
}
t
.
Log
(
str
)
str
,
err
=
Get
(
"http://httpbin.org/cookies"
)
.
SetEnableCookie
(
true
)
.
String
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
str
)
n
:=
strings
.
Index
(
str
,
v
)
if
n
==
-
1
{
t
.
Fatal
(
v
+
" not found in cookie"
)
...
...
@@ -83,6 +121,7 @@ func TestWithUserAgent(t *testing.T) {
t
.
Fatal
(
err
)
}
t
.
Log
(
str
)
n
:=
strings
.
Index
(
str
,
v
)
if
n
==
-
1
{
t
.
Fatal
(
v
+
" not found in user-agent"
)
...
...
@@ -102,8 +141,33 @@ func TestWithSetting(t *testing.T) {
t
.
Fatal
(
err
)
}
t
.
Log
(
str
)
n
:=
strings
.
Index
(
str
,
v
)
if
n
==
-
1
{
t
.
Fatal
(
v
+
" not found in user-agent"
)
}
}
func
TestToJson
(
t
*
testing
.
T
)
{
req
:=
Get
(
"http://httpbin.org/ip"
)
resp
,
err
:=
req
.
Response
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
resp
)
// httpbin will return http remote addr
type
Ip
struct
{
Origin
string
`json:"origin"`
}
var
ip
Ip
err
=
req
.
ToJson
(
&
ip
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
ip
.
Origin
)
if
n
:=
strings
.
Count
(
ip
.
Origin
,
"."
);
n
!=
3
{
t
.
Fatal
(
"response is not valid ip"
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment