request.go

 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
package common

import (
	"encoding/json"
	"html/template"
	"time"
)

type RequestType int

const (
	RequestInit = RequestType(iota)
	RequestReply
	RequestPatch
)

type PatchInfo struct {
	Title  string
	Author string
	Body   template.HTML

	CanBeApplied bool
}

type IssueRequest struct {
	Summary     string
	Description string
	Created     time.Time
	ID          string
	User        AuthInfo
	PatchRef    string
	RequestType RequestType
	Approved    bool
	Moderated   bool

	PatchInfo PatchInfo
}

func NewIssueRequest(summary string, description string, user AuthInfo) (IssueRequest, error) {
	ident, err := RandomIdent(24)
	return IssueRequest{
		Summary:     summary,
		Description: description,
		Created:     time.Now(),
		ID:          ident,
		User:        user,
		RequestType: RequestInit,
	}, err
}

func (ir IssueRequest) Serialize() []byte {
	// we safely ignore the error here
	data, _ := json.Marshal(ir)
	return data
}