Proper logging

This commit is contained in:
Ben Sarmiento
2023-10-20 01:38:05 +02:00
parent 1117e777ff
commit 464f522fea
5 changed files with 46 additions and 7 deletions

View File

@@ -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 {

View File

@@ -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
} }

View File

@@ -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)
} }
}) })

View File

@@ -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")

View File

@@ -81,7 +81,46 @@ func UnrestrictLink(accessToken, link string) (*UnrestrictResponse, error) {
return nil, err return nil, err
} }
return &response, nil if canFetchFirstByte(response.Download) {
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