Consistently use the correct public URI for public reports
This commit is contained in:
parent
32a0d895c4
commit
dba8b6c475
6 changed files with 45 additions and 33 deletions
|
|
@ -54,7 +54,7 @@ func (res *communicationR) List(ctx context.Context, r *http.Request, user platf
|
|||
comms := make([]communication, len(reports))
|
||||
for i, report := range reports {
|
||||
populateDistrictURI(report, res.router)
|
||||
populateReportURI(report, res.router)
|
||||
populateReportURI(report, res.router, false)
|
||||
comms[i] = communication{
|
||||
Created: report.Created,
|
||||
ID: report.PublicID,
|
||||
|
|
|
|||
|
|
@ -91,8 +91,14 @@ func populateDistrictURI(report *types.PublicReport, r *router) error {
|
|||
report.District = &district_uri
|
||||
return nil
|
||||
}
|
||||
func populateReportURI(report *types.PublicReport, r *router) error {
|
||||
uri, err := reportURI(r, report.Type, report.PublicID)
|
||||
func populateReportURI(report *types.PublicReport, r *router, is_public bool) error {
|
||||
var err error
|
||||
var uri string
|
||||
if is_public {
|
||||
uri, err = reportURIPublic(r, report.Type, report.PublicID)
|
||||
} else {
|
||||
uri, err = reportURI(r, report.Type, report.PublicID)
|
||||
}
|
||||
if err != nil {
|
||||
return fmt.Errorf("report uri: %w", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,19 +46,10 @@ type publicreportComplianceForm struct {
|
|||
}
|
||||
|
||||
func (res *complianceR) ByID(ctx context.Context, r *http.Request, u platform.User, query QueryParams) (*types.PublicReportCompliance, *nhttp.ErrorWithStatus) {
|
||||
return res.ByIDPublic(ctx, r, query)
|
||||
return res.byID(ctx, r, false)
|
||||
}
|
||||
func (res *complianceR) ByIDPublic(ctx context.Context, r *http.Request, query QueryParams) (*types.PublicReportCompliance, *nhttp.ErrorWithStatus) {
|
||||
vars := mux.Vars(r)
|
||||
public_id := vars["id"]
|
||||
if public_id == "" {
|
||||
return nil, nhttp.NewBadRequest("You must provid an ID")
|
||||
}
|
||||
report, err := platform.PublicReportByIDCompliance(ctx, public_id, true)
|
||||
if err != nil {
|
||||
return nil, nhttp.NewError("get report: %w", err)
|
||||
}
|
||||
return res.complianceHydrate(report)
|
||||
return res.byID(ctx, r, true)
|
||||
}
|
||||
func (res *complianceR) Create(ctx context.Context, r *http.Request, n publicreportComplianceForm) (*types.PublicReportCompliance, *nhttp.ErrorWithStatus) {
|
||||
if n.District.IsUnset() && n.MailerID.IsUnset() {
|
||||
|
|
@ -139,7 +130,7 @@ func (res *complianceR) Create(ctx context.Context, r *http.Request, n publicrep
|
|||
if err != nil {
|
||||
return nil, nhttp.NewError("get report after creation: %w", err)
|
||||
}
|
||||
return res.complianceHydrate(result)
|
||||
return res.complianceHydrate(result, true)
|
||||
}
|
||||
func (res *complianceR) Update(ctx context.Context, r *http.Request, prf publicreportComplianceForm) (*types.PublicReportCompliance, *nhttp.ErrorWithStatus) {
|
||||
vars := mux.Vars(r)
|
||||
|
|
@ -213,7 +204,7 @@ func (res *complianceR) Update(ctx context.Context, r *http.Request, prf publicr
|
|||
if err != nil {
|
||||
return nil, nhttp.NewError("get report after update: %w", err)
|
||||
}
|
||||
return res.complianceHydrate(report)
|
||||
return res.complianceHydrate(report, true)
|
||||
}
|
||||
|
||||
type publicreportComplianceFormSubmit struct {
|
||||
|
|
@ -232,9 +223,21 @@ func (res *complianceR) Submit(ctx context.Context, r *http.Request, prf publicr
|
|||
}
|
||||
return report, nil
|
||||
}
|
||||
func (res *complianceR) complianceHydrate(report *types.PublicReportCompliance) (*types.PublicReportCompliance, *nhttp.ErrorWithStatus) {
|
||||
func (res *complianceR) byID(ctx context.Context, r *http.Request, is_public bool) (*types.PublicReportCompliance, *nhttp.ErrorWithStatus) {
|
||||
vars := mux.Vars(r)
|
||||
public_id := vars["id"]
|
||||
if public_id == "" {
|
||||
return nil, nhttp.NewBadRequest("You must provid an ID")
|
||||
}
|
||||
report, err := platform.PublicReportByIDCompliance(ctx, public_id, true)
|
||||
if err != nil {
|
||||
return nil, nhttp.NewError("get report: %w", err)
|
||||
}
|
||||
return res.complianceHydrate(report, is_public)
|
||||
}
|
||||
func (res *complianceR) complianceHydrate(report *types.PublicReportCompliance, is_public bool) (*types.PublicReportCompliance, *nhttp.ErrorWithStatus) {
|
||||
populateDistrictURI(&report.PublicReport, res.router)
|
||||
populateReportURI(&report.PublicReport, res.router)
|
||||
populateReportURI(&report.PublicReport, res.router, is_public)
|
||||
for _, e := range report.Concerns {
|
||||
e.PopulateURL(res.router.router)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,21 +52,10 @@ type nuisanceForm struct {
|
|||
}
|
||||
|
||||
func (res *nuisanceR) ByID(ctx context.Context, r *http.Request, u platform.User, query QueryParams) (*types.PublicReportNuisance, *nhttp.ErrorWithStatus) {
|
||||
return res.ByIDPublic(ctx, r, query)
|
||||
return res.byID(ctx, r, false)
|
||||
}
|
||||
func (res *nuisanceR) ByIDPublic(ctx context.Context, r *http.Request, query QueryParams) (*types.PublicReportNuisance, *nhttp.ErrorWithStatus) {
|
||||
vars := mux.Vars(r)
|
||||
public_id := vars["id"]
|
||||
if public_id == "" {
|
||||
return nil, nhttp.NewBadRequest("You must provid an ID")
|
||||
}
|
||||
report, err := platform.PublicReportByIDNuisance(ctx, public_id, true)
|
||||
if err != nil {
|
||||
return nil, nhttp.NewError("get report: %w", err)
|
||||
}
|
||||
populateDistrictURI(&report.PublicReport, res.router)
|
||||
populateReportURI(&report.PublicReport, res.router)
|
||||
return report, nil
|
||||
return res.byID(ctx, r, true)
|
||||
}
|
||||
func (res *nuisanceR) Create(ctx context.Context, r *http.Request, n nuisanceForm) (*nuisance, *nhttp.ErrorWithStatus) {
|
||||
user_agent := r.Header.Get("User-Agent")
|
||||
|
|
@ -152,3 +141,17 @@ func (res *nuisanceR) Create(ctx context.Context, r *http.Request, n nuisanceFor
|
|||
URI: uri,
|
||||
}, nil
|
||||
}
|
||||
func (res *nuisanceR) byID(ctx context.Context, r *http.Request, is_public bool) (*types.PublicReportNuisance, *nhttp.ErrorWithStatus) {
|
||||
vars := mux.Vars(r)
|
||||
public_id := vars["id"]
|
||||
if public_id == "" {
|
||||
return nil, nhttp.NewBadRequest("You must provid an ID")
|
||||
}
|
||||
report, err := platform.PublicReportByIDNuisance(ctx, public_id, true)
|
||||
if err != nil {
|
||||
return nil, nhttp.NewError("get report: %w", err)
|
||||
}
|
||||
populateDistrictURI(&report.PublicReport, res.router)
|
||||
populateReportURI(&report.PublicReport, res.router, is_public)
|
||||
return report, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,6 +149,6 @@ func (res *waterR) byID(ctx context.Context, r *http.Request, is_public bool) (*
|
|||
return nil, nhttp.NewError("get report: %w", err)
|
||||
}
|
||||
populateDistrictURI(&report.PublicReport, res.router)
|
||||
populateReportURI(&report.PublicReport, res.router)
|
||||
populateReportURI(&report.PublicReport, res.router, is_public)
|
||||
return report, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue