7
7
"encoding/json"
8
8
"errors"
9
9
"io/ioutil"
10
- "log"
11
10
"net/http"
12
11
"net/url"
13
12
"os"
@@ -37,6 +36,8 @@ type imgWaiterItem struct {
37
36
wg sync.WaitGroup
38
37
}
39
38
39
+ var httpClient * http.Client
40
+
40
41
// HTML template
41
42
var template string
42
43
var templateLock sync.RWMutex
@@ -57,10 +58,14 @@ var imgProxy *imageproxy.Proxy
57
58
// Used to detect possible image urls
58
59
var isImage = regexp .MustCompile (`\.(jpe?g|png|gifv?)$` )
59
60
60
- func (serv * UploadServer ) registerEmbedHandlers (r * gin.Engine , cfg Config ) error {
61
+ func (serv * UploadServer ) registerWebPreviewHandlers (r * gin.Engine , cfg Config ) error {
61
62
serv .log .Info ().
62
63
Msg ("Starting embed handlers" )
63
64
65
+ httpClient = & http.Client {
66
+ Timeout : time .Second * 30 ,
67
+ }
68
+
64
69
// Prepare oEmbed provider
65
70
oembedJSON , err := getProvidersCached ("https://oembed.com/providers.json" , "oembed-providers.json" , false )
66
71
if err != nil {
@@ -127,7 +132,7 @@ func (serv *UploadServer) registerEmbedHandlers(r *gin.Engine, cfg Config) error
127
132
128
133
// Register our handler
129
134
rg := r .Group ("/embed" )
130
- rg .GET ("" , serv .handleEmbed )
135
+ rg .GET ("" , serv .handleWebPreview )
131
136
132
137
// Create imageproxy and provide interface to shardedfilestore
133
138
imgCache := NewImageProxyCache (serv .store , serv .log )
@@ -190,7 +195,7 @@ func (serv *UploadServer) handleImageCache(c *gin.Context) {
190
195
}
191
196
}
192
197
193
- func (serv * UploadServer ) handleEmbed (c * gin.Context ) {
198
+ func (serv * UploadServer ) handleWebPreview (c * gin.Context ) {
194
199
queryURL := c .Query ("url" )
195
200
if ! isValidURL (queryURL ) {
196
201
c .AbortWithStatus (http .StatusBadRequest )
@@ -321,7 +326,7 @@ func getProvidersCached(url string, filePath string, force bool) (*[]byte, error
321
326
var err error
322
327
if _ , err = os .Stat (filePath ); force || os .IsNotExist (err ) {
323
328
var httpResp * http.Response
324
- httpResp , err = http .Get (url )
329
+ httpResp , err = httpClient .Get (url )
325
330
if err != nil {
326
331
return nil , errors .New ("Failed to fetch providers: " + err .Error ())
327
332
}
@@ -414,11 +419,11 @@ func (serv *UploadServer) cleanCache(cacheMaxAge time.Duration) {
414
419
415
420
cacheMutex .Lock ()
416
421
for _ , hash := range expired {
417
- if hash == "" {
418
- break
419
- }
420
- log .Println ("Deleting cache item: " + hash )
421
422
delete (cache , hash )
423
+ serv .log .Info ().
424
+ Str ("event" , "expired" ).
425
+ Str ("hash" , hash ).
426
+ Msg ("Pruned from HTML cache" )
422
427
}
423
428
cacheMutex .Unlock ()
424
429
}
@@ -428,15 +433,15 @@ func (serv *UploadServer) cleanCache(cacheMaxAge time.Duration) {
428
433
serv .log .Debug ().
429
434
Msgf ("Cleaning %d item from img waiter cache" , len (expired ))
430
435
431
- cacheMutex .Lock ()
436
+ imgWaiterMutex .Lock ()
432
437
for _ , hash := range expiredWaiters {
433
- if hash == "" {
434
- break
435
- }
436
- log .Println ("Deleting cache item: " + hash )
437
438
delete (imgWaiter , hash )
439
+ serv .log .Info ().
440
+ Str ("event" , "expired" ).
441
+ Str ("hash" , hash ).
442
+ Msg ("Pruned from image waiter" )
438
443
}
439
- cacheMutex .Unlock ()
444
+ imgWaiterMutex .Unlock ()
440
445
}
441
446
}
442
447
0 commit comments