package api

import (
	"encoding/json"
	"net/http"

	"git.kirsle.net/apps/gosocial/pkg/session"
)

// LoginOK API tests the validity of a user's session cookie.
func LoginOK() http.HandlerFunc {
	type Response struct {
		Success  bool   `json:"success"`
		UserID   uint64 `json:"userId"`
		Username string `json:"username"`
	}

	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		// Check if we're logged in.
		var res Response
		if user, err := session.CurrentUser(r); err == nil {
			res = Response{
				Success:  true,
				UserID:   user.ID,
				Username: user.Username,
			}
		}

		buf, err := json.Marshal(res)
		if err != nil {
			http.Error(w, err.Error(), http.StatusInternalServerError)
			return
		}

		w.Header().Set("Content-Type", "application/json")
		w.Write(buf)
	})
}
