-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCollectionItem.go
121 lines (94 loc) · 2.54 KB
/
CollectionItem.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package main
import (
"bytes"
"html/template"
"sort"
)
type CollectionItem struct {
Name string `json:"name"`
Request CollectionItemRequest `json:"request"`
Responses CollectionItemResponses `json:"response"`
}
func (i CollectionItem) Markup() template.HTML {
tpl :=
`## {{ .Name }} [{{ .Request.ShortUrl }}{{ if .Request.UrlParameterListString }}{?{{ .Request.UrlParameterListString }}}{{ end }}]
### {{ .Name }} [{{ .Request.Method }}]
{{ if .Request.Description }}{{ .Request.Description }}{{ else }}DESCRIPTION{{ end }}
{{ if .Request.UrlParameterList }}
+ Parameters
{{ range .Request.UrlParameterList }}+ {{ . }} (string, required) - DESCRIPTION
{{ end }}{{ end }}
+ Request
+ Headers
{{ range .Request.Header }}{{ if not .Disabled }}
{{ .Key }}: {{ .Value }}{{ end }}{{ end }}
{{ if .Request.Body.Raw }}
+ Body
{{ .Request.Body.RawString }}
{{ end }}
{{ .ResponseSectionMarkup }}
`
t := template.New("Item Template")
t, _ = t.Parse(tpl)
var doc bytes.Buffer
t.Execute(&doc, i)
s := doc.String()
return template.HTML(s)
}
func (i CollectionItem) ResponseSectionMarkup() template.HTML {
tpl :=
`{{ range .ResponseList }}
+ Response {{ .Code }}{{ if .ContentType }} ({{ .ContentType }}){{ end }}
+ Headers
{{ range .Header }}{{ if not .Hidden }}
{{ .Key }}: {{ .Value }}{{ end }}{{ end }}
+ Body
{{ .BodyIncludeString $.Request }}
{{ end }}`
t := template.New("Response Section Template")
t, _ = t.Parse(tpl)
var doc bytes.Buffer
t.Execute(&doc, i)
s := doc.String()
return template.HTML(s)
}
func (i CollectionItem) ResponseList() CollectionItemResponses {
responses := CollectionItemResponses{}
dummyTwoHundredResponse := CollectionItemResponse{
Id: "1",
Name: "200",
Status: "OK",
Code: 200,
Header: []ResponseHeader{
{
Key: "Content-Type",
Value: "application/json",
Name: "Content-Typ",
Description: "The mime type of this content",
},
{
Key: "NAME",
Value: "VALUE",
Name: "NAME",
Description: "Dummy Header",
},
},
Body: "{}",
}
if len(i.Responses) == 0 {
responses = append(responses, dummyTwoHundredResponse)
return responses
}
responses = i.Responses
hasTwoHundred := false
for _, response := range responses {
if response.Code == 200 {
hasTwoHundred = true
}
}
if !hasTwoHundred {
responses = append(responses, dummyTwoHundredResponse)
}
sort.Sort(responses)
return responses
}