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
a611480b
Commit
a611480b
authored
Aug 04, 2013
by
astaxie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix #121
parent
fd3c8834
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
40 deletions
+40
-40
controller.go
controller.go
+40
-40
No files found.
controller.go
View file @
a611480b
...
...
@@ -2,8 +2,8 @@ package beego
import
(
"bytes"
"compress/flate"
"compress/gzip"
"compress/zlib"
"crypto/hmac"
"crypto/sha1"
"encoding/base64"
...
...
@@ -109,39 +109,7 @@ func (c *Controller) Render() error {
return
err
}
else
{
c
.
Ctx
.
ResponseWriter
.
Header
()
.
Set
(
"Content-Type"
,
"text/html; charset=utf-8"
)
output_writer
:=
c
.
Ctx
.
ResponseWriter
.
(
io
.
Writer
)
if
EnableGzip
==
true
&&
c
.
Ctx
.
Request
.
Header
.
Get
(
"Accept-Encoding"
)
!=
""
{
splitted
:=
strings
.
SplitN
(
c
.
Ctx
.
Request
.
Header
.
Get
(
"Accept-Encoding"
),
","
,
-
1
)
encodings
:=
make
([]
string
,
len
(
splitted
))
for
i
,
val
:=
range
splitted
{
encodings
[
i
]
=
strings
.
TrimSpace
(
val
)
}
for
_
,
val
:=
range
encodings
{
if
val
==
"gzip"
{
c
.
Ctx
.
ResponseWriter
.
Header
()
.
Set
(
"Content-Encoding"
,
"gzip"
)
output_writer
,
_
=
gzip
.
NewWriterLevel
(
c
.
Ctx
.
ResponseWriter
,
gzip
.
BestSpeed
)
break
}
else
if
val
==
"deflate"
{
c
.
Ctx
.
ResponseWriter
.
Header
()
.
Set
(
"Content-Encoding"
,
"deflate"
)
output_writer
,
_
=
zlib
.
NewWriterLevel
(
c
.
Ctx
.
ResponseWriter
,
zlib
.
BestSpeed
)
break
}
}
}
else
{
c
.
Ctx
.
SetHeader
(
"Content-Length"
,
strconv
.
Itoa
(
len
(
rb
)),
true
)
}
output_writer
.
Write
(
rb
)
switch
output_writer
.
(
type
)
{
case
*
gzip
.
Writer
:
output_writer
.
(
*
gzip
.
Writer
)
.
Close
()
case
*
zlib
.
Writer
:
output_writer
.
(
*
zlib
.
Writer
)
.
Close
()
case
io
.
WriteCloser
:
output_writer
.
(
io
.
WriteCloser
)
.
Close
()
}
return
nil
c
.
writeToWriter
(
rb
)
}
return
nil
}
...
...
@@ -203,6 +171,41 @@ func (c *Controller) RenderBytes() ([]byte, error) {
return
[]
byte
{},
nil
}
func
(
c
*
Controller
)
writeToWriter
(
rb
[]
byte
)
{
output_writer
:=
c
.
Ctx
.
ResponseWriter
.
(
io
.
Writer
)
if
EnableGzip
==
true
&&
c
.
Ctx
.
Request
.
Header
.
Get
(
"Accept-Encoding"
)
!=
""
{
splitted
:=
strings
.
SplitN
(
c
.
Ctx
.
Request
.
Header
.
Get
(
"Accept-Encoding"
),
","
,
-
1
)
encodings
:=
make
([]
string
,
len
(
splitted
))
for
i
,
val
:=
range
splitted
{
encodings
[
i
]
=
strings
.
TrimSpace
(
val
)
}
for
_
,
val
:=
range
encodings
{
if
val
==
"gzip"
{
c
.
Ctx
.
ResponseWriter
.
Header
()
.
Set
(
"Content-Encoding"
,
"gzip"
)
output_writer
,
_
=
gzip
.
NewWriterLevel
(
c
.
Ctx
.
ResponseWriter
,
gzip
.
BestSpeed
)
break
}
else
if
val
==
"deflate"
{
c
.
Ctx
.
ResponseWriter
.
Header
()
.
Set
(
"Content-Encoding"
,
"deflate"
)
output_writer
,
_
=
flate
.
NewWriter
(
c
.
Ctx
.
ResponseWriter
,
flate
.
BestSpeed
)
break
}
}
}
else
{
c
.
Ctx
.
SetHeader
(
"Content-Length"
,
strconv
.
Itoa
(
len
(
rb
)),
true
)
}
output_writer
.
Write
(
rb
)
switch
output_writer
.
(
type
)
{
case
*
gzip
.
Writer
:
output_writer
.
(
*
gzip
.
Writer
)
.
Close
()
case
*
flate
.
Writer
:
output_writer
.
(
*
flate
.
Writer
)
.
Close
()
case
io
.
WriteCloser
:
output_writer
.
(
io
.
WriteCloser
)
.
Close
()
}
}
func
(
c
*
Controller
)
Redirect
(
url
string
,
code
int
)
{
c
.
Ctx
.
Redirect
(
code
,
url
)
}
...
...
@@ -217,9 +220,8 @@ func (c *Controller) ServeJson() {
http
.
Error
(
c
.
Ctx
.
ResponseWriter
,
err
.
Error
(),
http
.
StatusInternalServerError
)
return
}
c
.
Ctx
.
SetHeader
(
"Content-Length"
,
strconv
.
Itoa
(
len
(
content
)),
true
)
c
.
Ctx
.
ResponseWriter
.
Header
()
.
Set
(
"Content-Type"
,
"application/json;charset=UTF-8"
)
c
.
Ctx
.
ResponseWriter
.
Write
(
content
)
c
.
writeToWriter
(
content
)
}
func
(
c
*
Controller
)
ServeJsonp
()
{
...
...
@@ -237,9 +239,8 @@ func (c *Controller) ServeJsonp() {
callback_content
.
WriteString
(
"("
)
callback_content
.
Write
(
content
)
callback_content
.
WriteString
(
");
\r\n
"
)
c
.
Ctx
.
SetHeader
(
"Content-Length"
,
strconv
.
Itoa
(
callback_content
.
Len
()),
true
)
c
.
Ctx
.
ResponseWriter
.
Header
()
.
Set
(
"Content-Type"
,
"application/json;charset=UTF-8"
)
c
.
Ctx
.
ResponseWriter
.
Write
(
callback_content
.
Bytes
())
c
.
writeToWriter
(
callback_content
.
Bytes
())
}
func
(
c
*
Controller
)
ServeXml
()
{
...
...
@@ -248,9 +249,8 @@ func (c *Controller) ServeXml() {
http
.
Error
(
c
.
Ctx
.
ResponseWriter
,
err
.
Error
(),
http
.
StatusInternalServerError
)
return
}
c
.
Ctx
.
SetHeader
(
"Content-Length"
,
strconv
.
Itoa
(
len
(
content
)),
true
)
c
.
Ctx
.
ResponseWriter
.
Header
()
.
Set
(
"Content-Type"
,
"application/xml;charset=UTF-8"
)
c
.
Ctx
.
ResponseWriter
.
Write
(
content
)
c
.
writeToWriter
(
content
)
}
func
(
c
*
Controller
)
Input
()
url
.
Values
{
...
...
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