77 "encoding/json"
88 "errors"
99 "io/ioutil"
10- "log"
1110 "net/http"
1211 "net/url"
1312 "os"
@@ -37,6 +36,8 @@ type imgWaiterItem struct {
3736 wg sync.WaitGroup
3837}
3938
39+ var httpClient * http.Client
40+
4041// HTML template
4142var template string
4243var templateLock sync.RWMutex
@@ -57,10 +58,14 @@ var imgProxy *imageproxy.Proxy
5758// Used to detect possible image urls
5859var isImage = regexp .MustCompile (`\.(jpe?g|png|gifv?)$` )
5960
60- func (serv * UploadServer ) registerEmbedHandlers (r * gin.Engine , cfg Config ) error {
61+ func (serv * UploadServer ) registerWebPreviewHandlers (r * gin.Engine , cfg Config ) error {
6162 serv .log .Info ().
6263 Msg ("Starting embed handlers" )
6364
65+ httpClient = & http.Client {
66+ Timeout : time .Second * 30 ,
67+ }
68+
6469 // Prepare oEmbed provider
6570 oembedJSON , err := getProvidersCached ("https://oembed.com/providers.json" , "oembed-providers.json" , false )
6671 if err != nil {
@@ -127,7 +132,7 @@ func (serv *UploadServer) registerEmbedHandlers(r *gin.Engine, cfg Config) error
127132
128133 // Register our handler
129134 rg := r .Group ("/embed" )
130- rg .GET ("" , serv .handleEmbed )
135+ rg .GET ("" , serv .handleWebPreview )
131136
132137 // Create imageproxy and provide interface to shardedfilestore
133138 imgCache := NewImageProxyCache (serv .store , serv .log )
@@ -190,7 +195,7 @@ func (serv *UploadServer) handleImageCache(c *gin.Context) {
190195 }
191196}
192197
193- func (serv * UploadServer ) handleEmbed (c * gin.Context ) {
198+ func (serv * UploadServer ) handleWebPreview (c * gin.Context ) {
194199 queryURL := c .Query ("url" )
195200 if ! isValidURL (queryURL ) {
196201 c .AbortWithStatus (http .StatusBadRequest )
@@ -321,7 +326,7 @@ func getProvidersCached(url string, filePath string, force bool) (*[]byte, error
321326 var err error
322327 if _ , err = os .Stat (filePath ); force || os .IsNotExist (err ) {
323328 var httpResp * http.Response
324- httpResp , err = http .Get (url )
329+ httpResp , err = httpClient .Get (url )
325330 if err != nil {
326331 return nil , errors .New ("Failed to fetch providers: " + err .Error ())
327332 }
@@ -414,11 +419,11 @@ func (serv *UploadServer) cleanCache(cacheMaxAge time.Duration) {
414419
415420 cacheMutex .Lock ()
416421 for _ , hash := range expired {
417- if hash == "" {
418- break
419- }
420- log .Println ("Deleting cache item: " + hash )
421422 delete (cache , hash )
423+ serv .log .Info ().
424+ Str ("event" , "expired" ).
425+ Str ("hash" , hash ).
426+ Msg ("Pruned from HTML cache" )
422427 }
423428 cacheMutex .Unlock ()
424429 }
@@ -428,15 +433,15 @@ func (serv *UploadServer) cleanCache(cacheMaxAge time.Duration) {
428433 serv .log .Debug ().
429434 Msgf ("Cleaning %d item from img waiter cache" , len (expired ))
430435
431- cacheMutex .Lock ()
436+ imgWaiterMutex .Lock ()
432437 for _ , hash := range expiredWaiters {
433- if hash == "" {
434- break
435- }
436- log .Println ("Deleting cache item: " + hash )
437438 delete (imgWaiter , hash )
439+ serv .log .Info ().
440+ Str ("event" , "expired" ).
441+ Str ("hash" , hash ).
442+ Msg ("Pruned from image waiter" )
438443 }
439- cacheMutex .Unlock ()
444+ imgWaiterMutex .Unlock ()
440445 }
441446}
442447
0 commit comments