Skip to content

Commit 18980f9

Browse files
committed
feat(api): add checkout endpoint
1 parent 79cb4b8 commit 18980f9

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

api/api.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ func NewServerRoutes(s Server) *http.ServeMux {
292292
fsih := NewFSIHandlers(s.Instance, cfg.API.ReadOnly)
293293
m.Handle("/status/", s.middleware(fsih.StatusHandler))
294294
m.Handle("/init/", s.middleware(fsih.InitHandler))
295+
m.Handle("/checkout/", s.middleware(fsih.CheckoutHandler))
295296

296297
renderh := NewRenderHandlers(node.Repo)
297298
m.Handle("/render/", s.middleware(renderh.RenderHandler))

api/fsi.go

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (h *FSIHandlers) statusHandler(w http.ResponseWriter, r *http.Request) {
6868
// InitHandler creates a new FSI-linked dataset
6969
func (h *FSIHandlers) InitHandler(w http.ResponseWriter, r *http.Request) {
7070
if h.ReadOnly {
71-
readOnlyResponse(w, "/fsi/init")
71+
readOnlyResponse(w, "/init")
7272
return
7373
}
7474

@@ -97,3 +97,35 @@ func (h *FSIHandlers) initHandler(w http.ResponseWriter, r *http.Request) {
9797

9898
util.WriteResponse(w, map[string]string{"ref": name})
9999
}
100+
101+
// CheckoutHandler invokes checkout via an API call
102+
func (h *FSIHandlers) CheckoutHandler(w http.ResponseWriter, r *http.Request) {
103+
if h.ReadOnly {
104+
readOnlyResponse(w, "/checkout")
105+
return
106+
}
107+
108+
switch r.Method {
109+
case "OPTIONS":
110+
util.EmptyOkHandler(w, r)
111+
case "POST":
112+
h.checkoutHandler(w, r)
113+
default:
114+
util.NotFoundHandler(w,r)
115+
}
116+
}
117+
118+
func (h *FSIHandlers) checkoutHandler(w http.ResponseWriter, r *http.Request) {
119+
p := &lib.CheckoutParams{
120+
Dir: r.FormValue("dir"),
121+
Ref: r.FormValue("ref"),
122+
}
123+
124+
var res string
125+
if err := h.Checkout(p, &res); err != nil {
126+
util.WriteErrResponse(w, http.StatusInternalServerError, err)
127+
return
128+
}
129+
130+
util.WriteResponse(w, p)
131+
}

0 commit comments

Comments
 (0)