Proper logging
This commit is contained in:
@@ -82,7 +82,7 @@ func Setup(app *aero.Application, c config.ConfigInterface, t *torrent.TorrentMa
|
|||||||
filenameV2, linkFragment := davextra.ExtractLinkFragment(filename)
|
filenameV2, linkFragment := davextra.ExtractLinkFragment(filename)
|
||||||
link := getLink(torrents, filenameV2, linkFragment)
|
link := getLink(torrents, filenameV2, linkFragment)
|
||||||
if link == "" {
|
if link == "" {
|
||||||
log.Println("Link not found")
|
log.Println("Link not found", filename)
|
||||||
return ctx.Error(http.StatusNotFound, "Cannot find file")
|
return ctx.Error(http.StatusNotFound, "Cannot find file")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ func Setup(app *aero.Application, c config.ConfigInterface, t *torrent.TorrentMa
|
|||||||
// TODO: Readd the file
|
// TODO: Readd the file
|
||||||
// when unrestricting fails, it means the file is not available anymore
|
// when unrestricting fails, it means the file is not available anymore
|
||||||
// if it's the only file, tough luck
|
// if it's the only file, tough luck
|
||||||
log.Println("Cannot unrestrict link")
|
log.Println("Cannot unrestrict link", link, filenameV2)
|
||||||
return ctx.Error(http.StatusNotFound, "Cannot find file")
|
return ctx.Error(http.StatusNotFound, "Cannot find file")
|
||||||
}
|
}
|
||||||
if resp.Filename != filenameV2 {
|
if resp.Filename != filenameV2 {
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ func HandleGetRequest(w http.ResponseWriter, r *http.Request, t *torrent.Torrent
|
|||||||
filenameV2, linkFragment := davextra.ExtractLinkFragment(filename)
|
filenameV2, linkFragment := davextra.ExtractLinkFragment(filename)
|
||||||
link := getLink(torrents, filenameV2, linkFragment)
|
link := getLink(torrents, filenameV2, linkFragment)
|
||||||
if link == "" {
|
if link == "" {
|
||||||
log.Println("Link not found")
|
log.Println("Link not found", filename)
|
||||||
http.Error(w, "Cannot find file", http.StatusNotFound)
|
http.Error(w, "Cannot find file", http.StatusNotFound)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ func HandleGetRequest(w http.ResponseWriter, r *http.Request, t *torrent.Torrent
|
|||||||
// TODO: Readd the file
|
// TODO: Readd the file
|
||||||
// when unrestricting fails, it means the file is not available anymore, but still in their database
|
// when unrestricting fails, it means the file is not available anymore, but still in their database
|
||||||
// if it's the only file, tough luck
|
// if it's the only file, tough luck
|
||||||
log.Println("Cannot unrestrict link")
|
log.Println("Cannot unrestrict link", link, filenameV2)
|
||||||
http.Error(w, "Cannot find file", http.StatusNotFound)
|
http.Error(w, "Cannot find file", http.StatusNotFound)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ func Router(mux *http.ServeMux, c config.ConfigInterface, t *torrent.TorrentMana
|
|||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
log.Println("Method not implemented")
|
log.Println("Method not implemented", r.Method)
|
||||||
http.Error(w, "Method not implemented", http.StatusMethodNotAllowed)
|
http.Error(w, "Method not implemented", http.StatusMethodNotAllowed)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
func convertRFC3339toRFC1123(input string) string {
|
func convertRFC3339toRFC1123(input string) string {
|
||||||
t, err := time.Parse(time.RFC3339, input)
|
t, err := time.Parse(time.RFC3339, input)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Error:", err)
|
log.Println("Conversion error", err)
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
return t.Format("Mon, 02 Jan 2006 15:04:05 GMT")
|
return t.Format("Mon, 02 Jan 2006 15:04:05 GMT")
|
||||||
|
|||||||
@@ -81,8 +81,47 @@ func UnrestrictLink(accessToken, link string) (*UnrestrictResponse, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if canFetchFirstByte(response.Download) {
|
||||||
return &response, nil
|
return &response, nil
|
||||||
}
|
}
|
||||||
|
return nil, fmt.Errorf("can't fetch first byte")
|
||||||
|
}
|
||||||
|
|
||||||
|
func canFetchFirstByte(url string) bool {
|
||||||
|
// Create a new HTTP request
|
||||||
|
req, err := http.NewRequest("GET", url, nil)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the Range header to request only the first byte
|
||||||
|
req.Header.Set("Range", "bytes=0-0")
|
||||||
|
|
||||||
|
// Execute the request
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
// If server supports partial content
|
||||||
|
if resp.StatusCode == http.StatusPartialContent {
|
||||||
|
buffer := make([]byte, 1)
|
||||||
|
_, err := resp.Body.Read(buffer)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// If server doesn't support partial content, try reading the first byte and immediately close
|
||||||
|
buffer := make([]byte, 1)
|
||||||
|
_, err = io.ReadFull(resp.Body, buffer)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// GetTorrents returns all torrents, paginated
|
// GetTorrents returns all torrents, paginated
|
||||||
// if customLimit is 0, the default limit of 2500 is used
|
// if customLimit is 0, the default limit of 2500 is used
|
||||||
|
|||||||
Reference in New Issue
Block a user