Remove CDN purgin
parent
c0c480c660
commit
ed21c00622
27
cdn.go
27
cdn.go
|
@ -1,27 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Cdn interface {
|
|
||||||
// Purge url from CDN
|
|
||||||
Purge(url string)
|
|
||||||
}
|
|
||||||
|
|
||||||
// BunnyCDN
|
|
||||||
type BunnyCdn struct {
|
|
||||||
// Access Key
|
|
||||||
key string
|
|
||||||
}
|
|
||||||
|
|
||||||
var bunnyCdnUrl = "https://bunnycdn.com"
|
|
||||||
|
|
||||||
func (cdn *BunnyCdn) Purge(url string) {
|
|
||||||
client := http.DefaultClient
|
|
||||||
req, _ := http.NewRequest("POST", bunnyCdnUrl+"/api/purge?url="+url, nil)
|
|
||||||
req.Header.Add("Content-Type", "application/json")
|
|
||||||
req.Header.Add("Accept", "application/json")
|
|
||||||
req.Header.Add("AccessKey", cdn.key)
|
|
||||||
_, _ = client.Do(req)
|
|
||||||
}
|
|
30
cdn_test.go
30
cdn_test.go
|
@ -1,30 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestBunnyCdn_Purge(t *testing.T) {
|
|
||||||
cdn := &BunnyCdn{
|
|
||||||
key: "testkey",
|
|
||||||
}
|
|
||||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
if expectedUrl := "/api/purge?url=https://test.url/test"; r.URL.String() != expectedUrl {
|
|
||||||
t.Errorf("Wrong URL: Got %s, but expected %s", r.URL.String(), expectedUrl)
|
|
||||||
}
|
|
||||||
if expectedContentType := "application/json"; r.Header.Get("Content-Type") != expectedContentType {
|
|
||||||
t.Errorf("Wrong Content-Type Header: Got %s, but expected %s", r.Header.Get("Content-Type"), expectedContentType)
|
|
||||||
}
|
|
||||||
if expectedAccept := "application/json"; r.Header.Get("Accept") != expectedAccept {
|
|
||||||
t.Errorf("Wrong Accept Header: Got %s, but expected %s", r.Header.Get("Accept"), expectedAccept)
|
|
||||||
}
|
|
||||||
if r.Header.Get("AccessKey") != cdn.key {
|
|
||||||
t.Errorf("Wrong AccessKey Header: Got %s, but expected %s", r.Header.Get("AccessKey"), cdn.key)
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
defer ts.Close()
|
|
||||||
bunnyCdnUrl = ts.URL
|
|
||||||
cdn.Purge("https://test.url/test")
|
|
||||||
}
|
|
13
config.go
13
config.go
|
@ -15,7 +15,6 @@ var (
|
||||||
SyndicationTargets []SyndicationTarget
|
SyndicationTargets []SyndicationTarget
|
||||||
SelectedStorage Storage
|
SelectedStorage Storage
|
||||||
SelectedMediaStorage MediaStorage
|
SelectedMediaStorage MediaStorage
|
||||||
SelectedCdn Cdn
|
|
||||||
SelectedNotificationServices NotificationServices
|
SelectedNotificationServices NotificationServices
|
||||||
SelectedImageCompression ImageCompression
|
SelectedImageCompression ImageCompression
|
||||||
DefaultLanguage string
|
DefaultLanguage string
|
||||||
|
@ -41,7 +40,6 @@ type YamlConfig struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type BunnyCdnConfig struct {
|
type BunnyCdnConfig struct {
|
||||||
Key string `yaml:"key"`
|
|
||||||
StorageKey string `yaml:"storageKey"`
|
StorageKey string `yaml:"storageKey"`
|
||||||
StorageName string `yaml:"storageName"`
|
StorageName string `yaml:"storageName"`
|
||||||
}
|
}
|
||||||
|
@ -173,17 +171,6 @@ func initConfig() (err error) {
|
||||||
if SelectedMediaStorage == nil {
|
if SelectedMediaStorage == nil {
|
||||||
log.Println("no media storage configured")
|
log.Println("no media storage configured")
|
||||||
}
|
}
|
||||||
// Find selected CDN (optional)
|
|
||||||
SelectedCdn = func() Cdn {
|
|
||||||
// BunnyCDN
|
|
||||||
if len(cfg.BunnyCdn.Key) > 0 {
|
|
||||||
return &BunnyCdn{key: cfg.BunnyCdn.Key}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}()
|
|
||||||
if SelectedCdn == nil {
|
|
||||||
log.Println("no CDN configured")
|
|
||||||
}
|
|
||||||
// Find configured notification services (optional)
|
// Find configured notification services (optional)
|
||||||
SelectedNotificationServices = func() NotificationServices {
|
SelectedNotificationServices = func() NotificationServices {
|
||||||
var notificationServices []NotificationService = nil
|
var notificationServices []NotificationService = nil
|
||||||
|
|
|
@ -3,7 +3,6 @@ package main
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type MicropubConfig struct {
|
type MicropubConfig struct {
|
||||||
|
@ -65,14 +64,6 @@ func HandleMicroPub(w http.ResponseWriter, r *http.Request) {
|
||||||
} else {
|
} else {
|
||||||
w.Header().Add("Location", location+"?cache=0")
|
w.Header().Add("Location", location+"?cache=0")
|
||||||
w.WriteHeader(http.StatusAccepted)
|
w.WriteHeader(http.StatusAccepted)
|
||||||
// Purge CDN after 30 seconds, send webmentions, post to social media
|
|
||||||
go func() {
|
|
||||||
time.Sleep(30 * time.Second)
|
|
||||||
if SelectedCdn != nil {
|
|
||||||
SelectedCdn.Purge(location)
|
|
||||||
time.Sleep(10 * time.Second)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -157,12 +157,5 @@ func returnSuccess(target string, w http.ResponseWriter, r *http.Request) {
|
||||||
} else {
|
} else {
|
||||||
w.WriteHeader(http.StatusCreated)
|
w.WriteHeader(http.StatusCreated)
|
||||||
}
|
}
|
||||||
// Purge CDN after 30 seconds
|
|
||||||
go func() {
|
|
||||||
time.Sleep(30 * time.Second)
|
|
||||||
if SelectedCdn != nil {
|
|
||||||
SelectedCdn.Purge(target)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue