|
|
|
@ -8,14 +8,15 @@ package api
|
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"errors" |
|
|
|
|
"expvar" |
|
|
|
|
"net/http" |
|
|
|
|
|
|
|
|
|
"forge.chapril.org/armen/jw" |
|
|
|
|
"forge.chapril.org/armen/model" |
|
|
|
|
"forge.chapril.org/mls-361/jsonapi" |
|
|
|
|
"forge.chapril.org/mls-361/uuid" |
|
|
|
|
|
|
|
|
|
"forge.chapril.org/armen/armen/internal/components" |
|
|
|
|
"forge.chapril.org/armen/armen/internal/middleware" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
const ( |
|
|
|
@ -29,47 +30,51 @@ type api struct {
|
|
|
|
|
|
|
|
|
|
func newAPI(ccs *components.Components) *api { |
|
|
|
|
return &api{ |
|
|
|
|
logger: ccs.Logger, |
|
|
|
|
logger: ccs.Logger.NewLogger(uuid.New(), "api"), |
|
|
|
|
model: ccs.Model, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (api *api) createJob(rw http.ResponseWriter, r *http.Request) { |
|
|
|
|
func (api *api) createJob(r *jsonapi.Request) { |
|
|
|
|
job := new(jw.Job) |
|
|
|
|
|
|
|
|
|
if jsonapi.Decode(rw, r, _maxBodySize, job) != nil { |
|
|
|
|
if r.Decode(_maxBodySize, job) != nil { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
job, err := api.model.CreateJob(job) |
|
|
|
|
if err != nil { |
|
|
|
|
if errors.Is(err, model.ErrValidation) { |
|
|
|
|
jsonapi.BadRequest(rw, err) |
|
|
|
|
r.BadRequest(err) |
|
|
|
|
} else { |
|
|
|
|
jsonapi.InternalServerError(rw, err) |
|
|
|
|
r.InternalServerError(err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if job == nil { |
|
|
|
|
rw.WriteHeader(http.StatusOK) |
|
|
|
|
r.RenderOK() |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
jsonapi.Render(rw, r, http.StatusCreated, job, api.logger) |
|
|
|
|
r.RenderJSON(http.StatusCreated, job, api.logger) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (api *api) middleware(hf jsonapi.HandlerFunc) jsonapi.Handler { |
|
|
|
|
return middleware.Trace(hf, api.logger) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func Build(ccs *components.Components) { |
|
|
|
|
api := newAPI(ccs) |
|
|
|
|
router := ccs.Router |
|
|
|
|
|
|
|
|
|
router.Get("/debug", expvar.Handler()) |
|
|
|
|
router.Get("/status", http.HandlerFunc(func(rw http.ResponseWriter, _ *http.Request) { |
|
|
|
|
rw.WriteHeader(http.StatusOK) |
|
|
|
|
//router.Get("/debug", expvar.Handler()) //AFINIR
|
|
|
|
|
router.Get("/status", api.middleware(func(r *jsonapi.Request) { |
|
|
|
|
r.RenderOK() |
|
|
|
|
})) |
|
|
|
|
|
|
|
|
|
router.Post("/job/create", http.HandlerFunc(api.createJob)) |
|
|
|
|
router.Post("/job/create", api.middleware(api.createJob)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|