Skip to content

Commit 2bb8eb9

Browse files
Implementation 2 for fetchDevfile chosen and added. See Issue #720 discussion at: devfile/api#720
1 parent 6ee2896 commit 2bb8eb9

File tree

1 file changed

+95
-100
lines changed

1 file changed

+95
-100
lines changed

index/server/pkg/server/endpoint.go

+95-100
Original file line numberDiff line numberDiff line change
@@ -140,109 +140,14 @@ func serveDevfile(c *gin.Context) {
140140
func serveDevfileStarterProject(c *gin.Context) {
141141
devfileName := c.Param("devfileName")
142142
starterProjectName := c.Param("starterProjectName")
143+
devfileBytes := fetchDevfile(c, devfileName)
143144

144-
/** source from serveDevfile **/
145-
devfileBytes, err := func(devfileName string) ([]byte, error) {
146-
var index []indexSchema.Schema
147-
bytes, err := ioutil.ReadFile(indexPath)
148-
if err != nil {
149-
return bytes, err
150-
}
151-
err = json.Unmarshal(bytes, &index)
152-
if err != nil {
153-
return make([]byte, 0), err
154-
}
155-
156-
// Reuse 'bytes' for devfile bytes
157-
bytes = make([]byte, 0)
158-
for _, devfileIndex := range index {
159-
if devfileIndex.Name == devfileName {
160-
if devfileIndex.Type == indexSchema.StackDevfileType {
161-
bytes, err = pullStackFromRegistry(devfileIndex)
162-
} else {
163-
// Retrieve the sample devfile stored under /registry/samples/<devfile>
164-
sampleDevfilePath := path.Join(samplesPath, devfileIndex.Name, devfileName)
165-
if _, err = os.Stat(sampleDevfilePath); err == nil {
166-
bytes, err = ioutil.ReadFile(sampleDevfilePath)
167-
}
168-
}
169-
170-
break
171-
}
172-
}
173-
174-
return bytes, err
175-
}(devfileName)
176-
if err != nil {
177-
log.Print(err.Error())
178-
c.JSON(http.StatusInternalServerError, gin.H{
179-
"error": err.Error(),
180-
"status": fmt.Sprintf("failed to pull the devfile of %s", devfileName),
181-
})
182-
return
183-
} else if err == nil && devfileBytes == nil {
184-
c.JSON(http.StatusNotFound, gin.H{
185-
"status": fmt.Sprintf("the devfile of %s didn't exist", devfileName),
186-
})
145+
if len(devfileBytes) == 0 {
146+
// fetchDevfile was unsuccessful (error or not found)
187147
return
148+
} else {
149+
// TODO: Add fetch start project and set response source.
188150
}
189-
190-
// devfileBytes := func(c *gin.Context, devfileName string) []byte {
191-
// var index []indexSchema.Schema
192-
// bytes, err := ioutil.ReadFile(indexPath)
193-
// if err != nil {
194-
// log.Print(err.Error())
195-
// c.JSON(http.StatusInternalServerError, gin.H{
196-
// "error": err.Error(),
197-
// "status": fmt.Sprintf("failed to pull the devfile of %s", devfileName),
198-
// })
199-
// return make([]byte, 0)
200-
// }
201-
// err = json.Unmarshal(bytes, &index)
202-
// if err != nil {
203-
// log.Print(err.Error())
204-
// c.JSON(http.StatusInternalServerError, gin.H{
205-
// "error": err.Error(),
206-
// "status": fmt.Sprintf("failed to pull the devfile of %s", devfileName),
207-
// })
208-
// return make([]byte, 0)
209-
// }
210-
//
211-
// // Reuse 'bytes' for devfile bytes
212-
// bytes = make([]byte, 0)
213-
// for _, devfileIndex := range index {
214-
// if devfileIndex.Name == devfileName {
215-
// var bytes []byte
216-
// if devfileIndex.Type == indexSchema.StackDevfileType {
217-
// bytes, err = pullStackFromRegistry(devfileIndex)
218-
// } else {
219-
// // Retrieve the sample devfile stored under /registry/samples/<devfile>
220-
// sampleDevfilePath := path.Join(samplesPath, devfileIndex.Name, devfileName)
221-
// if _, err = os.Stat(sampleDevfilePath); err == nil {
222-
// bytes, err = ioutil.ReadFile(sampleDevfilePath)
223-
// }
224-
// }
225-
// if err != nil {
226-
// log.Print(err.Error())
227-
// c.JSON(http.StatusInternalServerError, gin.H{
228-
// "error": err.Error(),
229-
// "status": fmt.Sprintf("failed to pull the devfile of %s", devfileName),
230-
// })
231-
// return make([]byte, 0)
232-
// }
233-
234-
// return bytes
235-
// }
236-
// }
237-
238-
// c.JSON(http.StatusNotFound, gin.H{
239-
// "status": fmt.Sprintf("the devfile of %s didn't exist", devfileName),
240-
// })
241-
242-
// return bytes
243-
// }(c, devfileName)
244-
245-
/****/
246151
}
247152

248153
func serveUI(c *gin.Context) {
@@ -366,3 +271,93 @@ func buildIndexAPIResponse(c *gin.Context) {
366271
}
367272
}
368273
}
274+
275+
// fetchDevfile retrieves a specified devfile stored under /registry/**/<devfileName>
276+
func fetchDevfile(c *gin.Context, devfileName string) []byte {
277+
var index []indexSchema.Schema
278+
bytes, err := ioutil.ReadFile(indexPath)
279+
if err != nil {
280+
log.Print(err.Error())
281+
c.JSON(http.StatusInternalServerError, gin.H{
282+
"error": err.Error(),
283+
"status": fmt.Sprintf("failed to pull the devfile of %s", devfileName),
284+
})
285+
return make([]byte, 0)
286+
}
287+
err = json.Unmarshal(bytes, &index)
288+
if err != nil {
289+
log.Print(err.Error())
290+
c.JSON(http.StatusInternalServerError, gin.H{
291+
"error": err.Error(),
292+
"status": fmt.Sprintf("failed to pull the devfile of %s", devfileName),
293+
})
294+
return make([]byte, 0)
295+
}
296+
297+
// Reuse 'bytes' for devfile bytes, assign empty
298+
bytes = make([]byte, 0)
299+
for _, devfileIndex := range index {
300+
if devfileIndex.Name == devfileName {
301+
var bytes []byte
302+
if devfileIndex.Type == indexSchema.StackDevfileType {
303+
bytes, err = pullStackFromRegistry(devfileIndex)
304+
} else {
305+
// Retrieve the sample devfile stored under /registry/samples/<devfile>
306+
sampleDevfilePath := path.Join(samplesPath, devfileIndex.Name, devfileName)
307+
if _, err = os.Stat(sampleDevfilePath); err == nil {
308+
bytes, err = ioutil.ReadFile(sampleDevfilePath)
309+
}
310+
}
311+
if err != nil {
312+
log.Print(err.Error())
313+
c.JSON(http.StatusInternalServerError, gin.H{
314+
"error": err.Error(),
315+
"status": fmt.Sprintf("failed to pull the devfile of %s", devfileName),
316+
})
317+
return make([]byte, 0)
318+
}
319+
320+
return bytes
321+
}
322+
}
323+
324+
c.JSON(http.StatusNotFound, gin.H{
325+
"status": fmt.Sprintf("the devfile of %s didn't exist", devfileName),
326+
})
327+
328+
return bytes
329+
}
330+
331+
/** source from serveDevfile **/
332+
// func fetchDevfile(devfileName string) ([]byte, error) {
333+
// var index []indexSchema.Schema
334+
// bytes, err := ioutil.ReadFile(indexPath)
335+
// if err != nil {
336+
// return bytes, err
337+
// }
338+
// err = json.Unmarshal(bytes, &index)
339+
// if err != nil {
340+
// return make([]byte, 0), err
341+
// }
342+
343+
// // Reuse 'bytes' for devfile bytes
344+
// bytes = make([]byte, 0)
345+
// for _, devfileIndex := range index {
346+
// if devfileIndex.Name == devfileName {
347+
// if devfileIndex.Type == indexSchema.StackDevfileType {
348+
// bytes, err = pullStackFromRegistry(devfileIndex)
349+
// } else {
350+
// // Retrieve the sample devfile stored under /registry/samples/<devfile>
351+
// sampleDevfilePath := path.Join(samplesPath, devfileIndex.Name, devfileName)
352+
// if _, err = os.Stat(sampleDevfilePath); err == nil {
353+
// bytes, err = ioutil.ReadFile(sampleDevfilePath)
354+
// }
355+
// }
356+
357+
// break
358+
// }
359+
// }
360+
361+
// return bytes, err
362+
// }
363+
/****/

0 commit comments

Comments
 (0)