Added option to disable chat
This commit is contained in:
@@ -10,13 +10,13 @@ import (
|
||||
)
|
||||
|
||||
|
||||
func CacheStream( path string, readStream func() ( io.ReadCloser, error ), expires int ) ( *bytes.Buffer, error ) {
|
||||
func CacheStream( path string, readStream func() ( io.ReadCloser, error ), expires time.Duration ) ( *bytes.Buffer, error ) {
|
||||
|
||||
cache, err := os.Stat( path )
|
||||
|
||||
// Check if cache exists and not expired
|
||||
if err == nil {
|
||||
expired := cache.ModTime().Add( 60 * 1e9 )
|
||||
expired := cache.ModTime().Add( expires * 1e9 )
|
||||
if time.Now().Before( expired ) {
|
||||
f, err := os.Open( path )
|
||||
if err == nil {
|
||||
@@ -33,8 +33,7 @@ func CacheStream( path string, readStream func() ( io.ReadCloser, error ), expir
|
||||
|
||||
err = os.MkdirAll( filepath.Dir( path ), 0750 )
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return nil, err }
|
||||
|
||||
writeBuff := bytes.NewBuffer( []byte{} )
|
||||
|
||||
@@ -66,3 +65,57 @@ func CacheStream( path string, readStream func() ( io.ReadCloser, error ), expir
|
||||
|
||||
return writeBuff, nil
|
||||
}
|
||||
|
||||
func ChangedStream( path string, readStream func() ( io.Reader, error ), dataModTime time.Time ) ( *bytes.Buffer, error ) {
|
||||
|
||||
cache, err := os.Stat( path )
|
||||
|
||||
// Check if cache exists and not expired
|
||||
if err == nil {
|
||||
if dataModTime.Before( cache.ModTime() ) {
|
||||
f, err := os.Open( path )
|
||||
if err == nil {
|
||||
defer f.Close()
|
||||
log.Printf( "Reading from file: %s", path )
|
||||
writeBuff := bytes.NewBuffer( []byte{} )
|
||||
_, err = io.Copy( writeBuff, f )
|
||||
if err == nil {
|
||||
return writeBuff, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
err = os.MkdirAll( filepath.Dir( path ), 0750 )
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
writeBuff := bytes.NewBuffer( []byte{} )
|
||||
|
||||
// Get the reader that return new data
|
||||
s, err := readStream()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = io.Copy( writeBuff, s )
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
f, err := os.OpenFile( path, os.O_CREATE | os.O_WRONLY | os.O_TRUNC, 0644 )
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer f.Close()
|
||||
|
||||
data := writeBuff.Bytes()
|
||||
_, err = io.Copy( f, bytes.NewReader( data ) )
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return writeBuff, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user