@@ -61,6 +61,17 @@ func (h *DatasetHandlers) DatasetHandler(w http.ResponseWriter, r *http.Request)
6161 }
6262}
6363
64+ func (h * DatasetHandlers ) InitDatasetHandler (w http.ResponseWriter , r * http.Request ) {
65+ switch r .Method {
66+ case "OPTIONS" :
67+ util .EmptyOkHandler (w , r )
68+ case "POST" :
69+ h .initDatasetHandler (w , r )
70+ default :
71+ util .NotFoundHandler (w , r )
72+ }
73+ }
74+
6475func (h * DatasetHandlers ) StructuredDataHandler (w http.ResponseWriter , r * http.Request ) {
6576 switch r .Method {
6677 case "OPTIONS" :
@@ -134,7 +145,7 @@ func (h *DatasetHandlers) saveDatasetHandler(w http.ResponseWriter, r *http.Requ
134145 case "application/json" :
135146 h .saveStructureHandler (w , r )
136147 default :
137- h .initDatasetFileHandler (w , r )
148+ h .initDatasetHandler (w , r )
138149 }
139150}
140151
@@ -178,21 +189,28 @@ func (h *DatasetHandlers) saveStructureHandler(w http.ResponseWriter, r *http.Re
178189 util .WriteResponse (w , res )
179190}
180191
181- func (h * DatasetHandlers ) initDatasetFileHandler (w http.ResponseWriter , r * http.Request ) {
182- var f cafs.File
183- infile , header , err := r .FormFile ("file" )
184- if err != nil && err != http .ErrMissingFile {
185- util .WriteErrResponse (w , http .StatusBadRequest , err )
186- return
192+ func (h * DatasetHandlers ) initDatasetHandler (w http.ResponseWriter , r * http.Request ) {
193+ p := & core.InitDatasetParams {}
194+ if r .Header .Get ("Content-Type" ) == "application/json" {
195+ json .NewDecoder (r .Body ).Decode (p )
187196 } else {
188- f = memfs .NewMemfileReader (header .Filename , infile )
189- }
197+ var f cafs.File
198+ infile , header , err := r .FormFile ("file" )
199+ if err != nil && err != http .ErrMissingFile {
200+ util .WriteErrResponse (w , http .StatusBadRequest , err )
201+ return
202+ } else {
203+ f = memfs .NewMemfileReader (header .Filename , infile )
204+ }
190205
191- p := & core.InitDatasetParams {
192- Url : r .FormValue ("url" ),
193- Name : r .FormValue ("name" ),
194- Data : f ,
206+ p = & core.InitDatasetParams {
207+ Url : r .FormValue ("url" ),
208+ Name : r .FormValue ("name" ),
209+ DataFilename : header .Filename ,
210+ Data : f ,
211+ }
195212 }
213+
196214 res := & repo.DatasetRef {}
197215 if err := h .InitDataset (p , res ); err != nil {
198216 h .log .Infof ("error initializing dataset: %s" , err .Error ())
@@ -254,9 +272,17 @@ func (h *DatasetHandlers) getStructuredDataHandler(w http.ResponseWriter, r *htt
254272}
255273
256274func (h * DatasetHandlers ) addDatasetHandler (w http.ResponseWriter , r * http.Request ) {
257- p := & core.AddParams {
258- Name : r .URL .Query ().Get ("name" ),
259- Hash : r .URL .Path [len ("/add/" ):],
275+ p := & core.AddParams {}
276+ if r .Header .Get ("Content-Type" ) == "application/json" {
277+ if err := json .NewDecoder (r .Body ).Decode (p ); err != nil {
278+ util .WriteErrResponse (w , http .StatusBadRequest , err )
279+ return
280+ }
281+ } else {
282+ p = & core.AddParams {
283+ Name : r .URL .Query ().Get ("name" ),
284+ Hash : r .URL .Path [len ("/add/" ):],
285+ }
260286 }
261287
262288 res := & repo.DatasetRef {}
0 commit comments