package http

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

type quotaData struct {
	InodeLimit uint64 `json:"inodeLimit"`
	InodeQuota uint64 `json:"inodeQuota"`
	InodeUsage uint64 `json:"inodeUsage"`
	SpaceLimit uint64 `json:"spaceLimit"`
	SpaceQuota uint64 `json:"spaceQuota"`
	SpaceUsage uint64 `json:"spaceUsage"`
}

var quotaGetHandler = withUser(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
	content, err := os.ReadFile(d.user.QuotaFile)
	if err != nil {
		return errToStatus(err), err
	}

	data := quotaData{}
	err = json.Unmarshal(content, &data)
	if err != nil {
		return errToStatus(err), err
	}

	res := map[string]map[string]uint64{
		"inodes": {
			"quota": data.InodeQuota,
			"usage": data.InodeUsage,
		},
		"space": {
			"quota": data.SpaceQuota,
			"usage": data.SpaceUsage,
		},
	}

	return renderJSON(w, r, res)
})