summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2023-11-15 16:31:50 +0100
committerPhilipp Tanlak <philipp.tanlak@gmail.com>2023-11-15 23:54:03 +0100
commit94da9293f63e46712b0a890e1e0eab4153fdb3f9 (patch)
treede81e6d00f7e1a5215d18557e772e7f1131d218b /modules
parent3e01902887bdc52e743ef6cec53a5c89cb5637f0 (diff)
Add file download functionality
Diffstat (limited to 'modules')
-rw-r--r--modules/cache/cache.go13
-rw-r--r--modules/cache/sqlitestore.go2
2 files changed, 13 insertions, 2 deletions
diff --git a/modules/cache/cache.go b/modules/cache/cache.go
index 4750e55..401aa49 100644
--- a/modules/cache/cache.go
+++ b/modules/cache/cache.go
@@ -51,8 +51,11 @@ func (m *Module) AdaptTransport(t http.RoundTripper) http.RoundTripper {
return t
}
return flyscrape.RoundTripFunc(func(r *http.Request) (*http.Response, error) {
- key := r.Method + " " + r.URL.String()
+ if nocache(r) {
+ return t.RoundTrip(r)
+ }
+ key := r.Method + " " + r.URL.String()
if b, ok := m.store.Get(key); ok {
if resp, err := http.ReadResponse(bufio.NewReader(bytes.NewReader(b)), r); err == nil {
return resp, nil
@@ -86,6 +89,14 @@ func (m *Module) Finalize() {
}
}
+func nocache(r *http.Request) bool {
+ if r.Header.Get(flyscrape.HeaderBypassCache) != "" {
+ r.Header.Del(flyscrape.HeaderBypassCache)
+ return true
+ }
+ return false
+}
+
func replaceExt(filePath string, newExt string) string {
ext := filepath.Ext(filePath)
if ext != "" {
diff --git a/modules/cache/sqlitestore.go b/modules/cache/sqlitestore.go
index 50c8007..778699b 100644
--- a/modules/cache/sqlitestore.go
+++ b/modules/cache/sqlitestore.go
@@ -40,7 +40,7 @@ func (s *SQLiteStore) Get(key string) ([]byte, bool) {
func (s *SQLiteStore) Set(key string, value []byte) {
if _, err := s.db.Exec(`INSERT INTO cache (key, value) VALUES (?, ?)`, key, value); err != nil {
- log.Printf("cache: failed to insert cache key %q: %v\n", key, value)
+ log.Printf("cache: failed to insert cache key %q: %v\n", key, err)
}
}