working compression support (yatwiki2-compatible)
This commit is contained in:
parent
8f2cb1e1d5
commit
e67257f95c
42
DB.go
42
DB.go
@ -1,10 +1,13 @@
|
||||
package yatwiki3
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"compress/flate"
|
||||
"crypto/md5"
|
||||
"database/sql"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
@ -121,23 +124,54 @@ func (this *WikiDB) ListTitles() ([]string, error) {
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (this *WikiDB) parseArticle(row *sql.Row) (*Article, error) {
|
||||
a := Article{}
|
||||
err := row.Scan(&a.ID, &a.TitleID, &a.Modified, &a.Body, &a.Author)
|
||||
func (this *WikiDB) gzinflate(gzBody []byte) ([]byte, error) {
|
||||
gzBodyReader := bytes.NewReader(gzBody)
|
||||
|
||||
gzReader := flate.NewReader(gzBodyReader)
|
||||
defer gzReader.Close()
|
||||
|
||||
buffer := bytes.Buffer{}
|
||||
_, err := io.Copy(&buffer, gzReader)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return buffer.Bytes(), nil
|
||||
}
|
||||
|
||||
func (this *WikiDB) parseArticle(row *sql.Row) (*Article, error) {
|
||||
a := Article{}
|
||||
var gzBody []byte
|
||||
err := row.Scan(&a.ID, &a.TitleID, &a.Modified, &gzBody, &a.Author)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
decompressed, err := this.gzinflate(gzBody)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
a.Body = decompressed
|
||||
|
||||
return &a, nil
|
||||
}
|
||||
|
||||
func (this *WikiDB) parseArticleWithTitle(row *sql.Row) (*ArticleWithTitle, error) {
|
||||
a := ArticleWithTitle{}
|
||||
err := row.Scan(&a.ID, &a.TitleID, &a.Modified, &a.Body, &a.Author, &a.Title)
|
||||
var gzBody []byte
|
||||
err := row.Scan(&a.ID, &a.TitleID, &a.Modified, &gzBody, &a.Author, &a.Title)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
decompressed, err := this.gzinflate(gzBody)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
a.Body = decompressed
|
||||
|
||||
return &a, nil
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user