mirror of
https://git.ptzo.gdn/feditools/relay.git
synced 2024-09-21 17:07:12 +00:00
130 lines
3.1 KiB
Go
130 lines
3.1 KiB
Go
package models
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
const LogEntryTypeBlockCreate LogEntryType = "BLOCK_CREATE"
|
|
|
|
var LogEntryTypeBlockCreateString = []string{
|
|
"Domain %s was blocked.", // 0
|
|
"Domain %s and it's subdomains were blocked.", // 1
|
|
}
|
|
|
|
type LogEntryBlockCreate struct {
|
|
Account string `json:"account"`
|
|
Domain string `json:"domain"`
|
|
BlockSubdomains bool `json:"subdomains"`
|
|
}
|
|
|
|
func (t *LogEntryBlockCreate) String() string {
|
|
if t.BlockSubdomains {
|
|
return fmt.Sprintf(LogEntryTypeBlockCreateString[1], t.Domain)
|
|
}
|
|
|
|
return fmt.Sprintf(LogEntryTypeBlockCreateString[0], t.Domain)
|
|
}
|
|
|
|
func (t *LogEntryBlockCreate) ToJSON() (metadata string, err error) {
|
|
jsonString, err := json.Marshal(t)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return string(jsonString), nil
|
|
}
|
|
|
|
func (t *LogEntryBlockCreate) FromJSON(metadata string) error {
|
|
return json.Unmarshal([]byte(metadata), t)
|
|
}
|
|
|
|
const LogEntryTypeBlockDelete LogEntryType = "BLOCK_DELETE"
|
|
|
|
var LogEntryTypeBlockDeleteString = []string{
|
|
"Domain %s was unblocked.", // 0
|
|
"Domain %s and it's subdomains were unblocked.", // 1
|
|
}
|
|
|
|
type LogEntryBlockDelete struct {
|
|
Account string `json:"account"`
|
|
Domain string `json:"domain"`
|
|
BlockSubdomains bool `json:"subdomains"`
|
|
}
|
|
|
|
func (t *LogEntryBlockDelete) String() string {
|
|
if t.BlockSubdomains {
|
|
return fmt.Sprintf(LogEntryTypeBlockDeleteString[1], t.Domain)
|
|
}
|
|
|
|
return fmt.Sprintf(LogEntryTypeBlockDeleteString[0], t.Domain)
|
|
}
|
|
|
|
func (t *LogEntryBlockDelete) ToJSON() (metadata string, err error) {
|
|
jsonString, err := json.Marshal(t)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return string(jsonString), nil
|
|
}
|
|
|
|
func (t *LogEntryBlockDelete) FromJSON(metadata string) error {
|
|
return json.Unmarshal([]byte(metadata), t)
|
|
}
|
|
|
|
const LogEntryTypeBlockUpdate LogEntryType = "BLOCK_UPDATE"
|
|
|
|
var LogEntryTypeBlockUpdateString = []string{
|
|
"Domain %s block was updated, %s.", // 0
|
|
"the field %s was changed from '%s' to '%s'", // 1
|
|
}
|
|
|
|
type LogEntryBlockUpdate struct {
|
|
Account string `json:"account"`
|
|
Domain string `json:"domain"`
|
|
Change []LogEntryBlockUpdateChange `json:"changes"`
|
|
}
|
|
|
|
type LogEntryBlockUpdateChange struct {
|
|
Field string `json:"field"`
|
|
Old string `json:"old"`
|
|
New string `json:"new"`
|
|
}
|
|
|
|
func (t *LogEntryBlockUpdate) String() string {
|
|
var fieldSB strings.Builder
|
|
|
|
lastChange := len(t.Change) - 1
|
|
for i, change := range t.Change {
|
|
if i > 0 && i < lastChange {
|
|
fieldSB.WriteString(", ")
|
|
}
|
|
if i != 0 && i == lastChange {
|
|
fieldSB.WriteString(" and ")
|
|
}
|
|
fieldSB.WriteString(fmt.Sprintf(
|
|
LogEntryTypeBlockUpdateString[1],
|
|
change.Field,
|
|
change.Old,
|
|
change.New,
|
|
))
|
|
}
|
|
|
|
return fmt.Sprintf(LogEntryTypeBlockUpdateString[0], t.Domain, fieldSB.String())
|
|
}
|
|
|
|
func (t *LogEntryBlockUpdate) ToJSON() (metadata string, err error) {
|
|
jsonString, err := json.Marshal(t)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return string(jsonString), nil
|
|
}
|
|
|
|
func (t *LogEntryBlockUpdate) FromJSON(metadata string) error {
|
|
return json.Unmarshal([]byte(metadata), t)
|
|
}
|