Skip to content

Commit 9dded0a

Browse files
committed
Rename embed.go && fixes
1 parent 1eb851c commit 9dded0a

File tree

3 files changed

+30
-19
lines changed

3 files changed

+30
-19
lines changed

noembed/noembed.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ import (
88
"net/http"
99
"regexp"
1010
"strings"
11+
"time"
1112
)
1213

1314
var noembedURL = "https://noembed.com/embed?url={url}"
1415

1516
// NoEmbed represents this package
1617
type NoEmbed struct {
17-
data *Data
18+
data *Data
19+
httpClient *http.Client
1820
}
1921

2022
// Data represents the data for noembed providers
@@ -43,7 +45,11 @@ type Response struct {
4345

4446
// New returns a Noembed object
4547
func New() *NoEmbed {
46-
return &NoEmbed{}
48+
return &NoEmbed{
49+
httpClient: &http.Client{
50+
Timeout: time.Second * 30,
51+
},
52+
}
4753
}
4854

4955
// ParseProviders parses the raw json obtained from noembed.com
@@ -73,7 +79,7 @@ func (n *NoEmbed) Get(url string) (resp *Response, err error) {
7379
reqURL := strings.Replace(noembedURL, "{url}", url, 1)
7480

7581
var httpResp *http.Response
76-
httpResp, err = http.Get(reqURL)
82+
httpResp, err = n.httpClient.Get(reqURL)
7783
if err != nil {
7884
return
7985
}

server/uploadserver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func (serv *UploadServer) Run(replaceableHandler *ReplaceableHandler) error {
7878
return err
7979
}
8080

81-
err = serv.registerEmbedHandlers(serv.Router, serv.cfg)
81+
err = serv.registerWebPreviewHandlers(serv.Router, serv.cfg)
8282
if err != nil {
8383
return err
8484
}

server/embed.go renamed to server/web-preview.go

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
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
4142
var template string
4243
var templateLock sync.RWMutex
@@ -57,10 +58,14 @@ var imgProxy *imageproxy.Proxy
5758
// Used to detect possible image urls
5859
var 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

Comments
 (0)