@@ -27,17 +27,13 @@ import (
27
27
"time"
28
28
29
29
cm_storage "github.com/chartmuseum/storage"
30
-
30
+ "github.com/gin-gonic/gin"
31
+ "go.uber.org/zap"
31
32
cm_logger "helm.sh/chartmuseum/pkg/chartmuseum/logger"
32
33
cm_repo "helm.sh/chartmuseum/pkg/repo"
33
-
34
34
"helm.sh/helm/v3/pkg/chart"
35
35
"helm.sh/helm/v3/pkg/chart/loader"
36
36
helm_repo "helm.sh/helm/v3/pkg/repo"
37
-
38
- "github.com/gin-gonic/gin"
39
-
40
- "go.uber.org/zap"
41
37
)
42
38
43
39
var (
@@ -157,6 +153,7 @@ func (server *MultiTenantServer) getStorageObjectRequestHandler(c *gin.Context)
157
153
}
158
154
c .Data (200 , storageObject .ContentType , storageObject .Content )
159
155
}
156
+
160
157
func (server * MultiTenantServer ) getStorageObjectTemplateRequestHandler (c * gin.Context ) {
161
158
repo := c .Param ("repo" )
162
159
name := c .Param ("name" )
@@ -186,6 +183,34 @@ func (server *MultiTenantServer) getStorageObjectTemplateRequestHandler(c *gin.C
186
183
})
187
184
}
188
185
186
+ func (server * MultiTenantServer ) getStorageObjectRawRequestHandler (c * gin.Context ) {
187
+ repo := c .Param ("repo" )
188
+ name := c .Param ("name" )
189
+ version := c .Param ("version" )
190
+
191
+ log := server .Logger .ContextLoggingFn (c )
192
+
193
+ fileName , err := server .getChartFileName (log , repo , name , version )
194
+ if err != nil {
195
+ c .JSON (http .StatusNotFound , gin.H {"error" : err .Message })
196
+ return
197
+ }
198
+
199
+ storageObject , err := server .getStorageObject (log , repo , fileName )
200
+ if err != nil {
201
+ c .JSON (err .Status , gin.H {"error" : err .Message })
202
+ return
203
+ }
204
+ chrt , err1 := loader .LoadArchive (bytes .NewReader (storageObject .Content ))
205
+ if err1 != nil {
206
+ c .JSON (http .StatusInternalServerError , gin.H {"error" : err1 })
207
+ return
208
+ }
209
+ c .JSON (200 , map [string ]interface {}{
210
+ "raw" : chrt .Raw ,
211
+ })
212
+ }
213
+
189
214
func (server * MultiTenantServer ) getStorageObjectValuesRequestHandler (c * gin.Context ) {
190
215
repo := c .Param ("repo" )
191
216
name := c .Param ("name" )
@@ -222,6 +247,7 @@ func (server *MultiTenantServer) getStorageObjectValuesRequestHandler(c *gin.Con
222
247
}
223
248
c .Data (200 , "application/yaml" , data )
224
249
}
250
+
225
251
func (server * MultiTenantServer ) getAllChartsRequestHandler (c * gin.Context ) {
226
252
repo := c .Param ("repo" )
227
253
offset := 0
@@ -368,7 +394,8 @@ func (server *MultiTenantServer) postPackageRequestHandler(c *gin.Context) {
368
394
chart , chartErr := cm_repo .ChartVersionFromStorageObject (cm_storage.Object {
369
395
Path : pathutil .Join (repo , filename ),
370
396
Content : content ,
371
- LastModified : time .Now ()})
397
+ LastModified : time .Now (),
398
+ })
372
399
if chartErr != nil {
373
400
log (cm_logger .ErrorLevel , "cannot get chart from content" , zap .Error (chartErr ), zap .Binary ("content" , content ))
374
401
}
@@ -430,9 +457,10 @@ func (server *MultiTenantServer) postPackageAndProvenanceRequestHandler(c *gin.C
430
457
if len (c .Errors ) > 0 {
431
458
return // this is a "request too large"
432
459
}
433
- c .JSON (http .StatusBadRequest , gin.H {"error" : fmt .Sprintf (
434
- "no package or provenance file found in form fields %s and %s" ,
435
- server .ChartPostFormFieldName , server .ProvPostFormFieldName ),
460
+ c .JSON (http .StatusBadRequest , gin.H {
461
+ "error" : fmt .Sprintf (
462
+ "no package or provenance file found in form fields %s and %s" ,
463
+ server .ChartPostFormFieldName , server .ProvPostFormFieldName ),
436
464
})
437
465
return
438
466
}
@@ -466,7 +494,8 @@ func (server *MultiTenantServer) postPackageAndProvenanceRequestHandler(c *gin.C
466
494
chart , chartErr := cm_repo .ChartVersionFromStorageObject (cm_storage.Object {
467
495
Path : path ,
468
496
Content : chartContent ,
469
- LastModified : time .Now ()})
497
+ LastModified : time .Now (),
498
+ })
470
499
if chartErr != nil {
471
500
log (cm_logger .ErrorLevel , "cannot get chart from content" , zap .Error (err ), zap .Binary ("content" , chartContent ))
472
501
}
0 commit comments