@@ -83,3 +83,131 @@ func GetTemplate(slug string) (*TemplateDetailResponse, error) {
8383
8484 return & response , nil
8585}
86+
87+ // ListTemplatesBySubmitter retrieves templates submitted by the authenticated user.
88+ func ListTemplatesBySubmitter () (* TemplateListResponse , error ) {
89+ var response TemplateListResponse
90+ err := doTemplatesJSON (http .MethodGet , "?submittedBy=me" , nil , & response )
91+ if err != nil {
92+ return nil , err
93+ }
94+
95+ formattedJSON , err := json .MarshalIndent (response .Templates , "" , " " )
96+ if err != nil {
97+ return nil , errors .New ("failed to format JSON" )
98+ }
99+
100+ fmt .Println (string (formattedJSON ))
101+
102+ return & response , nil
103+ }
104+
105+ // ValidateTemplate validates a git repo for template submission.
106+ func ValidateTemplate (gitURL , branch string ) (* ValidateTemplateResponse , error ) {
107+ body := SubmitTemplateBody {GitURL : gitURL }
108+ if branch != "" {
109+ body .Branch = branch
110+ }
111+
112+ var response ValidateTemplateResponse
113+ err := doTemplatesJSON (http .MethodPost , "/validate" , body , & response )
114+ if err != nil {
115+ return nil , err
116+ }
117+
118+ formattedJSON , err := json .MarshalIndent (response , "" , " " )
119+ if err != nil {
120+ return nil , errors .New ("failed to format JSON" )
121+ }
122+
123+ fmt .Println (string (formattedJSON ))
124+
125+ return & response , nil
126+ }
127+
128+ // SubmitTemplate submits a new template from a git repo URL.
129+ func SubmitTemplate (gitURL , branch string ) (* SubmitTemplateResponse , error ) {
130+ body := SubmitTemplateBody {GitURL : gitURL }
131+ if branch != "" {
132+ body .Branch = branch
133+ }
134+
135+ var response SubmitTemplateResponse
136+ err := doTemplatesJSON (http .MethodPost , "" , body , & response )
137+ if err != nil {
138+ return nil , err
139+ }
140+
141+ formattedJSON , err := json .MarshalIndent (response , "" , " " )
142+ if err != nil {
143+ return nil , errors .New ("failed to format JSON" )
144+ }
145+
146+ fmt .Println (string (formattedJSON ))
147+
148+ return & response , nil
149+ }
150+
151+ // UpdateTemplate updates an existing template submission by re-pulling from the repo.
152+ func UpdateTemplate (templateID , gitURL , branch string ) (* SubmitTemplateResponse , error ) {
153+ body := SubmitTemplateBody {}
154+ if gitURL != "" {
155+ body .GitURL = gitURL
156+ }
157+ if branch != "" {
158+ body .Branch = branch
159+ }
160+
161+ var response SubmitTemplateResponse
162+ err := doTemplatesJSON (http .MethodPut , "/" + templateID , body , & response )
163+ if err != nil {
164+ return nil , err
165+ }
166+
167+ formattedJSON , err := json .MarshalIndent (response , "" , " " )
168+ if err != nil {
169+ return nil , errors .New ("failed to format JSON" )
170+ }
171+
172+ fmt .Println (string (formattedJSON ))
173+
174+ return & response , nil
175+ }
176+
177+ // DeleteTemplate archives a template submission.
178+ func DeleteTemplate (templateID string ) (* DeleteTemplateResponse , error ) {
179+ var response DeleteTemplateResponse
180+ err := doTemplatesJSON (http .MethodDelete , "/" + templateID , nil , & response )
181+ if err != nil {
182+ return nil , err
183+ }
184+
185+ formattedJSON , err := json .MarshalIndent (response , "" , " " )
186+ if err != nil {
187+ return nil , errors .New ("failed to format JSON" )
188+ }
189+
190+ fmt .Println (string (formattedJSON ))
191+
192+ return & response , nil
193+ }
194+
195+ // ListBranches lists branches for a public git repository.
196+ func ListBranches (gitURL string ) (* BranchesResponse , error ) {
197+ body := BranchesBody {GitURL : gitURL }
198+
199+ var response BranchesResponse
200+ err := doTemplatesJSON (http .MethodPost , "/branches" , body , & response )
201+ if err != nil {
202+ return nil , err
203+ }
204+
205+ formattedJSON , err := json .MarshalIndent (response , "" , " " )
206+ if err != nil {
207+ return nil , errors .New ("failed to format JSON" )
208+ }
209+
210+ fmt .Println (string (formattedJSON ))
211+
212+ return & response , nil
213+ }
0 commit comments