mirror of
https://github.com/axllent/mailpit.git
synced 2025-01-10 00:43:53 +02:00
53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
package apiv1
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"os"
|
|
"runtime"
|
|
|
|
"github.com/axllent/mailpit/config"
|
|
"github.com/axllent/mailpit/storage"
|
|
"github.com/axllent/mailpit/updater"
|
|
)
|
|
|
|
type appVersion struct {
|
|
Version string
|
|
LatestVersion string
|
|
Database string
|
|
DatabaseSize int64
|
|
Messages int
|
|
Memory uint64
|
|
}
|
|
|
|
// AppInfo returns some basic details about the running app, and latest release.
|
|
func AppInfo(w http.ResponseWriter, r *http.Request) {
|
|
|
|
info := appVersion{}
|
|
info.Version = config.Version
|
|
|
|
latest, _, _, err := updater.GithubLatest(config.Repo, config.RepoBinaryName)
|
|
if err == nil {
|
|
info.LatestVersion = latest
|
|
}
|
|
|
|
info.Database = config.DataFile
|
|
|
|
db, err := os.Stat(info.Database)
|
|
if err == nil {
|
|
info.DatabaseSize = db.Size()
|
|
}
|
|
|
|
info.Messages = storage.CountTotal()
|
|
|
|
var m runtime.MemStats
|
|
runtime.ReadMemStats(&m)
|
|
|
|
info.Memory = m.Sys - m.HeapReleased
|
|
|
|
bytes, _ := json.Marshal(info)
|
|
|
|
w.Header().Add("Content-Type", "application/json")
|
|
_, _ = w.Write(bytes)
|
|
}
|