Skip to content

Commit

Permalink
refactor: Using r.Context as a variable
Browse files Browse the repository at this point in the history
Signed-off-by: Vincent Boutour <[email protected]>
  • Loading branch information
ViBiOh committed Mar 16, 2024
1 parent cfb5a89 commit 89b1fdd
Show file tree
Hide file tree
Showing 11 changed files with 53 additions and 34 deletions.
6 changes: 4 additions & 2 deletions pkg/crud/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ import (
)

func (s Service) Create(w http.ResponseWriter, r *http.Request, request provider.Request) {
telemetry.SetRouteTag(r.Context(), "/mkdir")
ctx := r.Context()

telemetry.SetRouteTag(ctx, "/mkdir")

if !request.CanEdit {
s.error(w, r, request, model.WrapForbidden(ErrNotAuthorized))
Expand All @@ -35,7 +37,7 @@ func (s Service) Create(w http.ResponseWriter, r *http.Request, request provider

pathname := request.SubPath(name)

if err = s.storage.Mkdir(r.Context(), pathname, absto.DirectoryPerm); err != nil {
if err = s.storage.Mkdir(ctx, pathname, absto.DirectoryPerm); err != nil {
s.error(w, r, request, model.WrapInternal(err))
return
}
Expand Down
32 changes: 18 additions & 14 deletions pkg/crud/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,28 +62,30 @@ func (s Service) getWithMessage(w http.ResponseWriter, r *http.Request, request
}

func (s Service) handleFile(w http.ResponseWriter, r *http.Request, request provider.Request, item absto.Item, message renderer.Message) (renderer.Page, error) {
ctx := r.Context()

if query.GetBool(r, "thumbnail") {
telemetry.SetRouteTag(r.Context(), "/thumbnail")
telemetry.SetRouteTag(ctx, "/thumbnail")
s.thumbnail.Serve(w, r, item)
return renderer.Page{}, nil
}

if query.GetBool(r, "stream") {
telemetry.SetRouteTag(r.Context(), "/stream")
telemetry.SetRouteTag(ctx, "/stream")
s.thumbnail.Stream(w, r, item)
return renderer.Page{}, nil
}

if query.GetBool(r, "browser") {
telemetry.SetRouteTag(r.Context(), "/browse")
telemetry.SetRouteTag(ctx, "/browse")
provider.SetPrefsCookie(w, request)

go s.pushEvent(cntxt.WithoutDeadline(r.Context()), provider.NewAccessEvent(r.Context(), item, r))
go s.pushEvent(cntxt.WithoutDeadline(ctx), provider.NewAccessEvent(ctx, item, r))

return s.browse(r.Context(), request, item, message)
return s.browse(ctx, request, item, message)
}

telemetry.SetRouteTag(r.Context(), "/download")
telemetry.SetRouteTag(ctx, "/download")
return renderer.Page{}, s.serveFile(w, r, item)
}

Expand Down Expand Up @@ -112,6 +114,8 @@ func (s Service) serveFile(w http.ResponseWriter, r *http.Request, item absto.It
}

func (s Service) handleDir(w http.ResponseWriter, r *http.Request, request provider.Request, item absto.Item, message renderer.Message) (renderer.Page, error) {
ctx := r.Context()

if query.GetBool(r, "stats") {
return s.stats(r, request, message)
}
Expand All @@ -122,39 +126,39 @@ func (s Service) handleDir(w http.ResponseWriter, r *http.Request, request provi
}

if query.GetBool(r, "geojson") {
telemetry.SetRouteTag(r.Context(), "/geojsons")
telemetry.SetRouteTag(ctx, "/geojsons")
s.serveGeoJSON(w, r, request, item, items)
return renderer.Page{}, nil
}

if query.GetBool(r, "thumbnail") {
telemetry.SetRouteTag(r.Context(), "/thumbnails")
telemetry.SetRouteTag(ctx, "/thumbnails")
s.thumbnail.List(w, r, item, items)
return renderer.Page{}, nil
}

if query.GetBool(r, "download") {
telemetry.SetRouteTag(r.Context(), "/downloads")
telemetry.SetRouteTag(ctx, "/downloads")
s.Download(w, r, request, items)
return errorReturn(request, err)
}

go s.pushEvent(cntxt.WithoutDeadline(r.Context()), provider.NewAccessEvent(r.Context(), item, r))
go s.pushEvent(cntxt.WithoutDeadline(ctx), provider.NewAccessEvent(ctx, item, r))

if query.GetBool(r, "search") {
telemetry.SetRouteTag(r.Context(), "/searches")
telemetry.SetRouteTag(ctx, "/searches")
return s.search(r, request, item, items)
}

provider.SetPrefsCookie(w, request)

if request.IsStory() {
telemetry.SetRouteTag(r.Context(), "/stories")
telemetry.SetRouteTag(ctx, "/stories")
return s.story(r, request, item, items)
}

telemetry.SetRouteTag(r.Context(), "/directory")
return s.list(r.Context(), request, message, item, items)
telemetry.SetRouteTag(ctx, "/directory")
return s.list(ctx, request, message, item, items)
}

func (s Service) listFiles(r *http.Request, request provider.Request, item absto.Item) (items []absto.Item, err error) {
Expand Down
15 changes: 9 additions & 6 deletions pkg/crud/post.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,19 +68,20 @@ func (s Service) Post(w http.ResponseWriter, r *http.Request, request provider.R
}

func (s Service) handleFormURLEncoded(w http.ResponseWriter, r *http.Request, request provider.Request) {
ctx := r.Context()
method := r.FormValue("method")

switch r.FormValue("type") {
case "share":
telemetry.SetRouteTag(r.Context(), "/share")
telemetry.SetRouteTag(ctx, "/share")
s.handlePostShare(w, r, request, method)

case "webhook":
telemetry.SetRouteTag(r.Context(), "/webhook")
telemetry.SetRouteTag(ctx, "/webhook")
s.handlePostWebhook(w, r, request, method)

case "description":
telemetry.SetRouteTag(r.Context(), "/description")
telemetry.SetRouteTag(ctx, "/description")
s.handlePostDescription(w, r, request)

default:
Expand All @@ -89,6 +90,8 @@ func (s Service) handleFormURLEncoded(w http.ResponseWriter, r *http.Request, re
}

func (s Service) handleMultipart(w http.ResponseWriter, r *http.Request, request provider.Request) {
ctx := r.Context()

if !request.CanEdit {
s.error(w, r, request, model.WrapForbidden(ErrNotAuthorized))
return
Expand All @@ -114,14 +117,14 @@ func (s Service) handleMultipart(w http.ResponseWriter, r *http.Request, request

chunkNumber = fmt.Sprintf("%010d", chunkNumberValue)

telemetry.SetRouteTag(r.Context(), "/chunk")
telemetry.SetRouteTag(ctx, "/chunk")
s.uploadChunk(w, r, request, values["filename"], chunkNumber, file)
} else {
telemetry.SetRouteTag(r.Context(), "/merge")
telemetry.SetRouteTag(ctx, "/merge")
s.mergeChunk(w, r, request, values)
}
} else {
telemetry.SetRouteTag(r.Context(), "/upload")
telemetry.SetRouteTag(ctx, "/upload")
s.upload(w, r, request, values, file)
}
}
Expand Down
5 changes: 2 additions & 3 deletions pkg/crud/rename.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ func parseRenameParams(r *http.Request, request provider.Request) (string, strin
}

func (s Service) Rename(w http.ResponseWriter, r *http.Request, request provider.Request) {
telemetry.SetRouteTag(r.Context(), "/rename")
ctx := r.Context()
telemetry.SetRouteTag(ctx, "/rename")

if !request.CanEdit {
s.error(w, r, request, model.WrapForbidden(ErrNotAuthorized))
Expand All @@ -75,8 +76,6 @@ func (s Service) Rename(w http.ResponseWriter, r *http.Request, request provider
return
}

ctx := r.Context()

var oldItem absto.Item
var newItem absto.Item

Expand Down
3 changes: 2 additions & 1 deletion pkg/crud/share.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,10 @@ func (s Service) createShare(w http.ResponseWriter, r *http.Request, request pro
}

func (s Service) deleteShare(w http.ResponseWriter, r *http.Request, request provider.Request) {
ctx := r.Context()
id := r.FormValue("id")

if err := s.share.Delete(r.Context(), id); err != nil {
if err := s.share.Delete(ctx, id); err != nil {
s.error(w, r, request, model.WrapInternal(err))
return
}
Expand Down
3 changes: 2 additions & 1 deletion pkg/crud/stats.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ type entry struct {
}

func (s Service) stats(r *http.Request, request provider.Request, message renderer.Message) (renderer.Page, error) {
ctx := r.Context()
pathname := request.Filepath()

stats, err := s.computeStats(r.Context(), pathname)
stats, err := s.computeStats(ctx, pathname)
if err != nil {
return renderer.NewPage("", http.StatusInternalServerError, nil), err
}
Expand Down
4 changes: 3 additions & 1 deletion pkg/crud/upload.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,11 @@ func (s Service) upload(w http.ResponseWriter, r *http.Request, request provider
}

func (s Service) postUpload(w http.ResponseWriter, r *http.Request, request provider.Request, fileName string) {
ctx := r.Context()

if r.Header.Get("Accept") == "text/plain" {
w.WriteHeader(http.StatusCreated)
provider.SafeWrite(r.Context(), w, fileName)
provider.SafeWrite(ctx, w, fileName)

return
}
Expand Down
6 changes: 4 additions & 2 deletions pkg/crud/upload_chunk.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ import (
)

func (s Service) uploadChunk(w http.ResponseWriter, r *http.Request, request provider.Request, fileName, chunkNumber string, file io.Reader) {
ctx := r.Context()

if file == nil {
s.error(w, r, request, model.WrapInvalid(errors.New("no file provided for save")))
return
Expand Down Expand Up @@ -46,15 +48,15 @@ func (s Service) uploadChunk(w http.ResponseWriter, r *http.Request, request pro

defer func() {
if closeErr := writer.Close(); closeErr != nil {
slog.LogAttrs(r.Context(), slog.LevelError, "close chunk writer", slog.Any("error", closeErr))
slog.LogAttrs(ctx, slog.LevelError, "close chunk writer", slog.Any("error", closeErr))
}

if err == nil {
return
}

if removeErr := os.Remove(tempFile); removeErr != nil {
slog.LogAttrs(r.Context(), slog.LevelError, "remove chunk file", slog.String("file", tempFile), slog.Any("error", removeErr))
slog.LogAttrs(ctx, slog.LevelError, "remove chunk file", slog.String("file", tempFile), slog.Any("error", removeErr))
}
}()

Expand Down
3 changes: 2 additions & 1 deletion pkg/crud/webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,9 +119,10 @@ func checkWebhookForm(r *http.Request) (recursive bool, kind provider.WebhookKin
}

func (s Service) deleteWebhook(w http.ResponseWriter, r *http.Request, request provider.Request) {
ctx := r.Context()
id := r.FormValue("id")

if err := s.webhook.Delete(r.Context(), id); err != nil {
if err := s.webhook.Delete(ctx, id); err != nil {
s.error(w, r, request, model.WrapInternal(err))
return
}
Expand Down
6 changes: 4 additions & 2 deletions pkg/fibr/fibr.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ func New(crudService provider.Crud, rendererService *renderer.Service, shareServ
}

func (s Service) parseRequest(r *http.Request) (provider.Request, error) {
ctx := r.Context()

request := provider.Request{
Path: r.URL.Path,
CanEdit: false,
Expand All @@ -52,7 +54,7 @@ func (s Service) parseRequest(r *http.Request) (provider.Request, error) {
request.Path = "/" + request.Path
}

if err := s.parseShare(r.Context(), &request, r.Header.Get("Authorization")); err != nil {
if err := s.parseShare(ctx, &request, r.Header.Get("Authorization")); err != nil {
return request, model.WrapUnauthorized(err)
}

Expand Down Expand Up @@ -87,7 +89,7 @@ func (s Service) parseRequest(r *http.Request) (provider.Request, error) {
return request, convertAuthenticationError(err)
}

if s.login.IsAuthorized(authModel.StoreUser(r.Context(), user), "admin") {
if s.login.IsAuthorized(authModel.StoreUser(ctx, user), "admin") {
request.CanEdit = true
request.CanShare = true
request.CanWebhook = true
Expand Down
4 changes: 3 additions & 1 deletion pkg/fibr/renderer.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,10 @@ func (s Service) TemplateFunc(w http.ResponseWriter, r *http.Request) (renderer.
return renderer.Page{}, model.WrapMethodNotAllowed(errors.New("you lack of method for calling me"))
}

ctx := r.Context()

if r.URL.Path == "/sitemap.xml" {
telemetry.SetRouteTag(r.Context(), "/sitemap.xml")
telemetry.SetRouteTag(ctx, "/sitemap.xml")
return renderer.NewPage("sitemap", http.StatusOK, nil), nil
}

Expand Down

0 comments on commit 89b1fdd

Please sign in to comment.