Y艒ten: A social tracker for your language learning journey built on the atproto.

feat(handlers/resource): use slogger #9

merged opened by brookjeynes.dev targeting master from push-trrpxxyxxmot
Labels

None yet.

Participants 1
AT URI
at://did:plc:4mj54vc4ha3lh32ksxwunnbh/sh.tangled.repo.pull/3m3bmdlgblk22
+31 -26
Diff #0
+31 -26
internal/server/handlers/resource.go
··· 3 3 import ( 4 4 "errors" 5 5 "fmt" 6 - "log" 7 6 "net/http" 8 7 "time" 9 8 ··· 63 62 } 64 63 65 64 func (h *Handler) HandleNewResourcePage(w http.ResponseWriter, r *http.Request) { 65 + l := h.Logger.With("handler", "HandleNewResourcePage") 66 + 66 67 user, err := bsky.GetUserWithBskyProfile(h.Oauth, r) 67 68 if err != nil { 68 - log.Println("failed to get logged-in user:", err) 69 + l.Error("failed to get logged-in user", "err", err) 69 70 htmx.HxRedirect(w, "/login") 70 71 return 71 72 } ··· 79 80 case http.MethodPost: 80 81 client, err := h.Oauth.AuthorizedClient(r) 81 82 if err != nil { 82 - log.Println("failed to get authorized client:", err) 83 + l.Error("failed to get authorized client", "err", err) 83 84 htmx.HxRedirect(w, "/login") 84 85 return 85 86 } 86 87 87 88 newResource, err := parseResourceForm(r) 88 89 if err != nil { 89 - log.Println("invalid resource form:", err) 90 + l.Error("invalid resource form", "err", err) 90 91 htmx.HxError(w, http.StatusBadRequest, "Failed to create resource, ensure all fields contain valid data.") 91 92 return 92 93 } ··· 95 96 newResource.CreatedAt = time.Now().UTC() 96 97 97 98 if err := db.ValidateResource(newResource); err != nil { 98 - log.Println("invalid resource definition:", err) 99 + l.Error("invalid resource definition", "err", err) 99 100 switch { 100 101 case errors.Is(err, db.ErrResourceTitleEmpty): 101 102 htmx.HxError(w, http.StatusBadRequest, "Resource must have a title.") ··· 118 119 if newResource.Link != nil { 119 120 linkCheckResult := google.CheckResourceLinkSafety(*newResource.Link) 120 121 if linkCheckResult.Err != nil { 121 - log.Println("invalid resource definition:", linkCheckResult.Err) 122 + l.Error("invalid resource definition", "err", linkCheckResult.Err) 122 123 switch { 123 124 case errors.Is(linkCheckResult.Err, google.ErrResourceLinkSketchy): 124 125 if !h.Config.Core.Dev { ··· 186 187 }, 187 188 }) 188 189 if err != nil { 189 - log.Println("failed to create resource record:", err) 190 + l.Error("failed to create resource record", "err", err) 190 191 htmx.HxError(w, http.StatusInternalServerError, "Failed to create resource, try again later.") 191 192 return 192 193 } 193 194 194 195 err = SavePendingCreate(h, w, r, PendingResourceCreation, newResource) 195 196 if err != nil { 196 - log.Printf("failed to save yoten-session to add pending resource creation: %v", err) 197 + l.Error("failed to save yoten-session to add pending resource creation", "err", err) 197 198 } 198 199 199 200 if !h.Config.Core.Dev { ··· 209 210 Set("link_provided", newResource.Link != nil), 210 211 }) 211 212 if err != nil { 212 - log.Println("failed to enqueue posthog event:", err) 213 + l.Error("failed to enqueue posthog event", "err", err) 213 214 } 214 215 } 215 216 ··· 218 219 } 219 220 220 221 func (h *Handler) HandleDeleteResource(w http.ResponseWriter, r *http.Request) { 222 + l := h.Logger.With("handler", "HandleDeleteResource") 223 + 221 224 user := h.Oauth.GetUser(r) 222 225 if user == nil { 223 - log.Println("failed to get logged-in user") 226 + l.Error("failed to get logged-in user") 224 227 htmx.HxRedirect(w, "/login") 225 228 return 226 229 } 227 230 client, err := h.Oauth.AuthorizedClient(r) 228 231 if err != nil { 229 - log.Println("failed to get authorized client:", err) 232 + l.Error("failed to get authorized client", "err", err) 230 233 htmx.HxError(w, http.StatusUnauthorized, "Failed to delete resource, try again later.") 231 234 return 232 235 } ··· 236 239 rkey := chi.URLParam(r, "rkey") 237 240 resource, err := db.GetResourceByRkey(h.Db, user.Did, rkey) 238 241 if err != nil { 239 - log.Println("failed to get resource from db:", err) 242 + l.Error("failed to get resource from db", "err", err) 240 243 htmx.HxError(w, http.StatusInternalServerError, "Failed to delete resource, try again later.") 241 244 return 242 245 } 243 246 244 247 if user.Did != resource.Did { 245 - log.Printf("user '%s' does not own record '%s'", user.Did, rkey) 248 + l.Error("user does not own record", "did", user.Did, "resourceDid", resource.Did) 246 249 htmx.HxError(w, http.StatusUnauthorized, "You do not have permissions to delete this resource.") 247 250 return 248 251 } ··· 253 256 Rkey: resource.Rkey, 254 257 }) 255 258 if err != nil { 256 - log.Println("failed to delete resource from PDS:", err) 259 + l.Error("failed to delete resource from PDS", "err", err) 257 260 htmx.HxError(w, http.StatusInternalServerError, "Failed to delete resource, try again later.") 258 261 return 259 262 } 260 263 261 264 err = SavePendingDelete(h, w, r, PendingResourceDeletion, resource) 262 265 if err != nil { 263 - log.Printf("failed to save yoten-session to add pending resource deletion: %v", err) 266 + l.Error("failed to save yoten-session to add pending resource deletion", "err", err) 264 267 } 265 268 266 269 if !h.Config.Core.Dev { ··· 272 275 Set("resource_type", resource.Type), 273 276 }) 274 277 if err != nil { 275 - log.Println("failed to enqueue posthog event:", err) 278 + l.Error("failed to enqueue posthog event", "err", err) 276 279 } 277 280 } 278 281 ··· 281 284 } 282 285 283 286 func (h *Handler) HandleEditResourcePage(w http.ResponseWriter, r *http.Request) { 287 + l := h.Logger.With("handler", "HandleEditResourcePage") 288 + 284 289 user, err := bsky.GetUserWithBskyProfile(h.Oauth, r) 285 290 if err != nil { 286 - log.Println("failed to get logged-in user:", err) 291 + l.Error("failed to get logged-in user", "err", err) 287 292 htmx.HxRedirect(w, "/login") 288 293 return 289 294 } ··· 291 296 rkey := chi.URLParam(r, "rkey") 292 297 resource, err := db.GetResourceByRkey(h.Db, user.Did, rkey) 293 298 if err != nil { 294 - log.Println("failed to get resource from db:", err) 299 + l.Error("failed to get resource from db", "err", err) 295 300 htmx.HxError(w, http.StatusInternalServerError, "Failed to update resource, try again later.") 296 301 return 297 302 } 298 303 299 304 if user.Did != resource.Did { 300 - log.Printf("user '%s' does not own record '%s'", user.Did, rkey) 305 + l.Error("user does not own record", "did", user.Did, "resourceDid", resource.Did) 301 306 htmx.HxError(w, http.StatusUnauthorized, "You do not have permissions to edit this resource.") 302 307 return 303 308 } ··· 312 317 case http.MethodPost: 313 318 client, err := h.Oauth.AuthorizedClient(r) 314 319 if err != nil { 315 - log.Println("failed to get authorized client:", err) 320 + l.Error("failed to get authorized client", "err", err) 316 321 htmx.HxRedirect(w, "/login") 317 322 return 318 323 } 319 324 320 325 updatedResource, err := parseResourceForm(r) 321 326 if err != nil { 322 - log.Println("invalid resource form:", err) 327 + l.Error("invalid resource form", "err", err) 323 328 htmx.HxError(w, http.StatusBadRequest, "Failed to create resource, ensure all fields contain valid data.") 324 329 return 325 330 } ··· 328 333 updatedResource.CreatedAt = resource.CreatedAt 329 334 330 335 if err := db.ValidateResource(updatedResource); err != nil { 331 - log.Println("invalid resource definition:", err) 336 + l.Error("invalid resource definition", "err", err) 332 337 switch { 333 338 case errors.Is(err, db.ErrResourceTitleEmpty): 334 339 htmx.HxError(w, http.StatusBadRequest, "Resource must have a title.") ··· 352 357 if updatedResource.Link != nil && (resource.Link == nil || *updatedResource.Link != *resource.Link) { 353 358 linkCheckResult := google.CheckResourceLinkSafety(*updatedResource.Link) 354 359 if linkCheckResult.Err != nil { 355 - log.Println("invalid resource definition:", linkCheckResult.Err) 360 + l.Error("invalid resource link", "link", resource.Link, "threatType", linkCheckResult.ThreatType, "err", linkCheckResult.Err) 356 361 switch { 357 362 case errors.Is(linkCheckResult.Err, google.ErrResourceLinkSketchy): 358 363 if !h.Config.Core.Dev { ··· 427 432 SwapRecord: cid, 428 433 }) 429 434 if err != nil { 430 - log.Println("failed to update resource record:", err) 435 + l.Error("failed to update resource record", "err", err) 431 436 htmx.HxError(w, http.StatusInternalServerError, "Failed to update resource, try again later.") 432 437 return 433 438 } 434 439 435 440 err = SavePendingUpdate(h, w, r, PendingResourceUpdates, updatedResource) 436 441 if err != nil { 437 - log.Printf("failed to save yoten-session to add pending resource updates: %v", err) 442 + l.Error("failed to save yoten-session to add pending resource updates", "err", err) 438 443 } 439 444 440 445 if !h.Config.Core.Dev { ··· 450 455 Set("link_provided", updatedResource.Link != nil), 451 456 }) 452 457 if err != nil { 453 - log.Println("failed to enqueue posthog event:", err) 458 + l.Error("failed to enqueue posthog event", "err", err) 454 459 } 455 460 } 456 461

History

1 round 0 comments
sign up or login to add to the discussion
brookjeynes.dev submitted #0
1 commit
expand
feat(handlers/resource): use slogger
expand 0 comments
pull request successfully merged