Skip to content

Commit

Permalink
api: implement put vulnerability
Browse files Browse the repository at this point in the history
  • Loading branch information
jzelinskie committed Feb 24, 2016
1 parent 8209922 commit c05848e
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 4 deletions.
2 changes: 1 addition & 1 deletion api/v1/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func NewRouter(ctx *context.RouteContext) *httprouter.Router {
// Vulnerabilities
router.POST("/namespaces/:namespaceName/vulnerabilities", context.HTTPHandler(postVulnerability, ctx))
router.GET("/namespaces/:namespaceName/vulnerabilities/:vulnerabilityName", context.HTTPHandler(getVulnerability, ctx))
router.PATCH("/namespaces/:namespaceName/vulnerabilities/:vulnerabilityName", context.HTTPHandler(patchVulnerability, ctx))
router.PUT("/namespaces/:namespaceName/vulnerabilities/:vulnerabilityName", context.HTTPHandler(putVulnerability, ctx))
router.DELETE("/namespaces/:namespaceName/vulnerabilities/:vulnerabilityName", context.HTTPHandler(deleteVulnerability, ctx))

// Fixes
Expand Down
34 changes: 31 additions & 3 deletions api/v1/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,37 @@ func getVulnerability(w http.ResponseWriter, r *http.Request, p httprouter.Param
return writeHeader(w, http.StatusOK)
}

func patchVulnerability(w http.ResponseWriter, r *http.Request, p httprouter.Params, ctx *context.RouteContext) int {
// ez
return 0
func putVulnerability(w http.ResponseWriter, r *http.Request, p httprouter.Params, ctx *context.RouteContext) int {
request := VulnerabilityEnvelope{}
err := decodeJSON(r, &request)
if err != nil {
writeResponse(w, VulnerabilityEnvelope{Error: &Error{err.Error()}})
return writeHeader(w, http.StatusBadRequest)
}

if request.Vulnerability == nil {
writeResponse(w, VulnerabilityEnvelope{Error: &Error{"failed to provide vulnerability"}})
return writeHeader(w, http.StatusBadRequest)
}

if len(request.Vulnerability.FixedIn) != 0 {
writeResponse(w, VulnerabilityEnvelope{Error: &Error{"Vulnerability.FixedIn must be empty"}})
return writeHeader(w, http.StatusBadRequest)
}

vuln, err := request.Vulnerability.DatabaseModel()
if err != nil {
writeResponse(w, VulnerabilityEnvelope{Error: &Error{err.Error()}})
return writeHeader(w, http.StatusBadRequest)
}

err = ctx.Store.InsertVulnerabilities([]database.Vulnerability{vuln})
if err != nil {
writeResponse(w, VulnerabilityEnvelope{Error: &Error{err.Error()}})
return writeHeader(w, http.StatusInternalServerError)
}

return writeHeader(w, http.StatusOK)
}

func deleteVulnerability(w http.ResponseWriter, r *http.Request, p httprouter.Params, ctx *context.RouteContext) int {
Expand Down

0 comments on commit c05848e

Please sign in to comment.