@@ -68,7 +68,7 @@ func (h *FSIHandlers) statusHandler(w http.ResponseWriter, r *http.Request) {
68
68
// InitHandler creates a new FSI-linked dataset
69
69
func (h * FSIHandlers ) InitHandler (w http.ResponseWriter , r * http.Request ) {
70
70
if h .ReadOnly {
71
- readOnlyResponse (w , "/fsi/ init" )
71
+ readOnlyResponse (w , "/init" )
72
72
return
73
73
}
74
74
@@ -97,3 +97,35 @@ func (h *FSIHandlers) initHandler(w http.ResponseWriter, r *http.Request) {
97
97
98
98
util .WriteResponse (w , map [string ]string {"ref" : name })
99
99
}
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