Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
二次元的罪恶王冠
beego
提交
46fbeaad
B
beego
项目概览
二次元的罪恶王冠
/
beego
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
beego
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
46fbeaad
编写于
11月 12, 2015
作者:
J
JessonChan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor accept encoder ,simplify the struct
上级
214030fa
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
32 addition
and
29 deletion
+32
-29
context/acceptencoder.go
context/acceptencoder.go
+32
-29
未找到文件。
context/acceptencoder.go
浏览文件 @
46fbeaad
...
...
@@ -25,6 +25,26 @@ import (
"strings"
)
type
acceptEncoder
struct
{
name
string
encode
func
(
io
.
Writer
,
int
)
(
io
.
Writer
,
error
)
}
var
(
noneCompressEncoder
=
acceptEncoder
{
""
,
func
(
wr
io
.
Writer
,
level
int
)
(
io
.
Writer
,
error
)
{
return
wr
,
nil
}}
gzipCompressEncoder
=
acceptEncoder
{
"gzip"
,
func
(
wr
io
.
Writer
,
level
int
)
(
io
.
Writer
,
error
)
{
return
gzip
.
NewWriterLevel
(
wr
,
level
)
}}
deflateCompressEncoder
=
acceptEncoder
{
"deflate"
,
func
(
wr
io
.
Writer
,
level
int
)
(
io
.
Writer
,
error
)
{
return
flate
.
NewWriter
(
wr
,
level
)
}}
)
var
(
encoderMap
=
map
[
string
]
acceptEncoder
{
// all the other compress methods will ignore
"gzip"
:
gzipCompressEncoder
,
"deflate"
:
deflateCompressEncoder
,
"*"
:
gzipCompressEncoder
,
// * means any compress will accept,we prefer gzip
"identity"
:
noneCompressEncoder
,
// identity means none-compress
}
)
// WriteFile reads from file and writes to writer by the specific encoding(gzip/deflate)
func
WriteFile
(
encoding
string
,
writer
io
.
Writer
,
file
*
os
.
File
)
(
bool
,
string
,
error
)
{
...
...
@@ -43,16 +63,23 @@ func WriteBody(encoding string, writer io.Writer, content []byte) (bool, string,
func
writeLevel
(
encoding
string
,
writer
io
.
Writer
,
reader
io
.
Reader
,
level
int
)
(
bool
,
string
,
error
)
{
var
outputWriter
io
.
Writer
var
err
error
var
ce
=
noneCompressEncoder
if
cf
,
ok
:=
encoderMap
[
encoding
];
ok
{
outputWriter
,
err
=
cf
.
encode
(
writer
,
level
)
}
else
{
encoding
=
""
outputWriter
,
err
=
noneCompress
(
writer
,
level
)
ce
=
cf
}
encoding
=
ce
.
name
outputWriter
,
err
=
ce
.
encode
(
writer
,
level
)
if
err
!=
nil
{
return
false
,
""
,
err
}
io
.
Copy
(
outputWriter
,
reader
)
_
,
err
=
io
.
Copy
(
outputWriter
,
reader
)
if
err
!=
nil
{
return
false
,
""
,
err
}
switch
outputWriter
.
(
type
)
{
case
io
.
WriteCloser
:
outputWriter
.
(
io
.
WriteCloser
)
.
Close
()
...
...
@@ -76,30 +103,6 @@ type q struct {
value
float64
}
func
noneCompress
(
wr
io
.
Writer
,
level
int
)
(
io
.
Writer
,
error
)
{
return
wr
,
nil
}
func
gzipCompress
(
wr
io
.
Writer
,
level
int
)
(
io
.
Writer
,
error
)
{
return
gzip
.
NewWriterLevel
(
wr
,
level
)
}
func
deflateCompress
(
wr
io
.
Writer
,
level
int
)
(
io
.
Writer
,
error
)
{
return
flate
.
NewWriter
(
wr
,
level
)
}
type
acceptEncoder
struct
{
name
string
encode
func
(
io
.
Writer
,
int
)
(
io
.
Writer
,
error
)
}
var
(
encoderMap
=
map
[
string
]
acceptEncoder
{
// all the other compress methods will ignore
"gzip"
:
acceptEncoder
{
"gzip"
,
gzipCompress
},
"deflate"
:
acceptEncoder
{
"deflate"
,
deflateCompress
},
"*"
:
acceptEncoder
{
"gzip"
,
gzipCompress
},
// * means any compress will accept,we prefer gzip
"identity"
:
acceptEncoder
{
""
,
noneCompress
},
// identity means none-compress
}
)
func
parseEncoding
(
r
*
http
.
Request
)
string
{
acceptEncoding
:=
r
.
Header
.
Get
(
"Accept-Encoding"
)
if
acceptEncoding
==
""
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录