@@ -68,7 +68,7 @@ func (h *FSIHandlers) statusHandler(w http.ResponseWriter, r *http.Request) {
6868// InitHandler creates a new FSI-linked dataset
6969func (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