~huyngo/yue

ref: 3e299fe8a16227467ec2f6b945f8d9bce3576902 yue/structs.go -rw-r--r-- 1.7 KiB
3e299fe8Huy Ngo Split API objects from structs 10 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Definition of structs and struct-related operations.
// Structs used to represent data from API not included.
// Copyright (C) 2021 Ngô Ngọc Đức Huy
//
// This file is part of Yue.
//
// Yue is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Yue is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with Yue.  If not, see <https://www.gnu.org/licenses/>.

package main

import (
	"time"

	"github.com/leonelquinteros/gotext"
)

type RequestContext struct {
	Lang     string
	Loc      *gotext.Locale
	Page     *PageData
	Setting  *Preference
	LoggedIn *User
	Yue      *Meta
	Data     interface{}
}

type PageData struct {
	Title       string
	Description string
}

type Preference struct {
	Theme string
}

type Meta struct {
	Version string
}

func CreateRequestContext(lang string, title string,
	description string, theme string, data interface{}) RequestContext {
	if lang == "" {
		lang = gotext.GetLanguage()
	}
	locale := gotext.NewLocale("./locales", lang)
	pageData := PageData{
		Title:       locale.Get(title),
		Description: locale.Get(description),
	}
	setting := Preference{Theme: theme}
	meta := Meta{Version: CurrentVersion}
	return RequestContext{
		Lang:     lang,
		Loc:      locale,
		Page:     &pageData,
		Setting:  &setting,
		LoggedIn: nil,
		Yue:      &meta,
		Data:     data,
	}
}