···
···
func (h *Handler) HandleNewResourcePage(w http.ResponseWriter, r *http.Request) {
user, err := bsky.GetUserWithBskyProfile(h.Oauth, r)
-
log.Println("failed to get logged-in user:", err)
htmx.HxRedirect(w, "/login")
···
client, err := h.Oauth.AuthorizedClient(r)
-
log.Println("failed to get authorized client:", err)
htmx.HxRedirect(w, "/login")
newResource, err := parseResourceForm(r)
-
log.Println("invalid resource form:", err)
htmx.HxError(w, http.StatusBadRequest, "Failed to create resource, ensure all fields contain valid data.")
···
newResource.CreatedAt = time.Now().UTC()
if err := db.ValidateResource(newResource); err != nil {
-
log.Println("invalid resource definition:", err)
case errors.Is(err, db.ErrResourceTitleEmpty):
htmx.HxError(w, http.StatusBadRequest, "Resource must have a title.")
···
if newResource.Link != nil {
linkCheckResult := google.CheckResourceLinkSafety(*newResource.Link)
if linkCheckResult.Err != nil {
-
log.Println("invalid resource definition:", linkCheckResult.Err)
case errors.Is(linkCheckResult.Err, google.ErrResourceLinkSketchy):
···
-
log.Println("failed to create resource record:", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to create resource, try again later.")
err = SavePendingCreate(h, w, r, PendingResourceCreation, newResource)
-
log.Printf("failed to save yoten-session to add pending resource creation: %v", err)
···
Set("link_provided", newResource.Link != nil),
-
log.Println("failed to enqueue posthog event:", err)
···
func (h *Handler) HandleDeleteResource(w http.ResponseWriter, r *http.Request) {
user := h.Oauth.GetUser(r)
-
log.Println("failed to get logged-in user")
htmx.HxRedirect(w, "/login")
client, err := h.Oauth.AuthorizedClient(r)
-
log.Println("failed to get authorized client:", err)
htmx.HxError(w, http.StatusUnauthorized, "Failed to delete resource, try again later.")
···
rkey := chi.URLParam(r, "rkey")
resource, err := db.GetResourceByRkey(h.Db, user.Did, rkey)
-
log.Println("failed to get resource from db:", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to delete resource, try again later.")
if user.Did != resource.Did {
-
log.Printf("user '%s' does not own record '%s'", user.Did, rkey)
htmx.HxError(w, http.StatusUnauthorized, "You do not have permissions to delete this resource.")
···
-
log.Println("failed to delete resource from PDS:", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to delete resource, try again later.")
err = SavePendingDelete(h, w, r, PendingResourceDeletion, resource)
-
log.Printf("failed to save yoten-session to add pending resource deletion: %v", err)
···
Set("resource_type", resource.Type),
-
log.Println("failed to enqueue posthog event:", err)
···
func (h *Handler) HandleEditResourcePage(w http.ResponseWriter, r *http.Request) {
user, err := bsky.GetUserWithBskyProfile(h.Oauth, r)
-
log.Println("failed to get logged-in user:", err)
htmx.HxRedirect(w, "/login")
···
rkey := chi.URLParam(r, "rkey")
resource, err := db.GetResourceByRkey(h.Db, user.Did, rkey)
-
log.Println("failed to get resource from db:", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to update resource, try again later.")
if user.Did != resource.Did {
-
log.Printf("user '%s' does not own record '%s'", user.Did, rkey)
htmx.HxError(w, http.StatusUnauthorized, "You do not have permissions to edit this resource.")
···
client, err := h.Oauth.AuthorizedClient(r)
-
log.Println("failed to get authorized client:", err)
htmx.HxRedirect(w, "/login")
updatedResource, err := parseResourceForm(r)
-
log.Println("invalid resource form:", err)
htmx.HxError(w, http.StatusBadRequest, "Failed to create resource, ensure all fields contain valid data.")
···
updatedResource.CreatedAt = resource.CreatedAt
if err := db.ValidateResource(updatedResource); err != nil {
-
log.Println("invalid resource definition:", err)
case errors.Is(err, db.ErrResourceTitleEmpty):
htmx.HxError(w, http.StatusBadRequest, "Resource must have a title.")
···
if updatedResource.Link != nil && (resource.Link == nil || *updatedResource.Link != *resource.Link) {
linkCheckResult := google.CheckResourceLinkSafety(*updatedResource.Link)
if linkCheckResult.Err != nil {
-
log.Println("invalid resource definition:", linkCheckResult.Err)
case errors.Is(linkCheckResult.Err, google.ErrResourceLinkSketchy):
···
-
log.Println("failed to update resource record:", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to update resource, try again later.")
err = SavePendingUpdate(h, w, r, PendingResourceUpdates, updatedResource)
-
log.Printf("failed to save yoten-session to add pending resource updates: %v", err)
···
Set("link_provided", updatedResource.Link != nil),
-
log.Println("failed to enqueue posthog event:", err)
···
···
func (h *Handler) HandleNewResourcePage(w http.ResponseWriter, r *http.Request) {
+
l := h.Logger.With("handler", "HandleNewResourcePage")
user, err := bsky.GetUserWithBskyProfile(h.Oauth, r)
+
l.Error("failed to get logged-in user", "err", err)
htmx.HxRedirect(w, "/login")
···
client, err := h.Oauth.AuthorizedClient(r)
+
l.Error("failed to get authorized client", "err", err)
htmx.HxRedirect(w, "/login")
newResource, err := parseResourceForm(r)
+
l.Error("invalid resource form", "err", err)
htmx.HxError(w, http.StatusBadRequest, "Failed to create resource, ensure all fields contain valid data.")
···
newResource.CreatedAt = time.Now().UTC()
if err := db.ValidateResource(newResource); err != nil {
+
l.Error("invalid resource definition", "err", err)
case errors.Is(err, db.ErrResourceTitleEmpty):
htmx.HxError(w, http.StatusBadRequest, "Resource must have a title.")
···
if newResource.Link != nil {
linkCheckResult := google.CheckResourceLinkSafety(*newResource.Link)
if linkCheckResult.Err != nil {
+
l.Error("invalid resource definition", "err", linkCheckResult.Err)
case errors.Is(linkCheckResult.Err, google.ErrResourceLinkSketchy):
···
+
l.Error("failed to create resource record", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to create resource, try again later.")
err = SavePendingCreate(h, w, r, PendingResourceCreation, newResource)
+
l.Error("failed to save yoten-session to add pending resource creation", "err", err)
···
Set("link_provided", newResource.Link != nil),
+
l.Error("failed to enqueue posthog event", "err", err)
···
func (h *Handler) HandleDeleteResource(w http.ResponseWriter, r *http.Request) {
+
l := h.Logger.With("handler", "HandleDeleteResource")
user := h.Oauth.GetUser(r)
+
l.Error("failed to get logged-in user")
htmx.HxRedirect(w, "/login")
client, err := h.Oauth.AuthorizedClient(r)
+
l.Error("failed to get authorized client", "err", err)
htmx.HxError(w, http.StatusUnauthorized, "Failed to delete resource, try again later.")
···
rkey := chi.URLParam(r, "rkey")
resource, err := db.GetResourceByRkey(h.Db, user.Did, rkey)
+
l.Error("failed to get resource from db", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to delete resource, try again later.")
if user.Did != resource.Did {
+
l.Error("user does not own record", "did", user.Did, "resourceDid", resource.Did)
htmx.HxError(w, http.StatusUnauthorized, "You do not have permissions to delete this resource.")
···
+
l.Error("failed to delete resource from PDS", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to delete resource, try again later.")
err = SavePendingDelete(h, w, r, PendingResourceDeletion, resource)
+
l.Error("failed to save yoten-session to add pending resource deletion", "err", err)
···
Set("resource_type", resource.Type),
+
l.Error("failed to enqueue posthog event", "err", err)
···
func (h *Handler) HandleEditResourcePage(w http.ResponseWriter, r *http.Request) {
+
l := h.Logger.With("handler", "HandleEditResourcePage")
user, err := bsky.GetUserWithBskyProfile(h.Oauth, r)
+
l.Error("failed to get logged-in user", "err", err)
htmx.HxRedirect(w, "/login")
···
rkey := chi.URLParam(r, "rkey")
resource, err := db.GetResourceByRkey(h.Db, user.Did, rkey)
+
l.Error("failed to get resource from db", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to update resource, try again later.")
if user.Did != resource.Did {
+
l.Error("user does not own record", "did", user.Did, "resourceDid", resource.Did)
htmx.HxError(w, http.StatusUnauthorized, "You do not have permissions to edit this resource.")
···
client, err := h.Oauth.AuthorizedClient(r)
+
l.Error("failed to get authorized client", "err", err)
htmx.HxRedirect(w, "/login")
updatedResource, err := parseResourceForm(r)
+
l.Error("invalid resource form", "err", err)
htmx.HxError(w, http.StatusBadRequest, "Failed to create resource, ensure all fields contain valid data.")
···
updatedResource.CreatedAt = resource.CreatedAt
if err := db.ValidateResource(updatedResource); err != nil {
+
l.Error("invalid resource definition", "err", err)
case errors.Is(err, db.ErrResourceTitleEmpty):
htmx.HxError(w, http.StatusBadRequest, "Resource must have a title.")
···
if updatedResource.Link != nil && (resource.Link == nil || *updatedResource.Link != *resource.Link) {
linkCheckResult := google.CheckResourceLinkSafety(*updatedResource.Link)
if linkCheckResult.Err != nil {
+
l.Error("invalid resource link", "link", resource.Link, "threatType", linkCheckResult.ThreatType, "err", linkCheckResult.Err)
case errors.Is(linkCheckResult.Err, google.ErrResourceLinkSketchy):
···
+
l.Error("failed to update resource record", "err", err)
htmx.HxError(w, http.StatusInternalServerError, "Failed to update resource, try again later.")
err = SavePendingUpdate(h, w, r, PendingResourceUpdates, updatedResource)
+
l.Error("failed to save yoten-session to add pending resource updates", "err", err)
···
Set("link_provided", updatedResource.Link != nil),
+
l.Error("failed to enqueue posthog event", "err", err)