Add mailer API and initial mailer view
This commit is contained in:
parent
0d8d7f3aeb
commit
eb27af7d90
10 changed files with 479 additions and 0 deletions
55
resource/mailer.go
Normal file
55
resource/mailer.go
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
package resource
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
nhttp "github.com/Gleipnir-Technology/nidus-sync/http"
|
||||
"github.com/Gleipnir-Technology/nidus-sync/platform"
|
||||
"github.com/Gleipnir-Technology/nidus-sync/platform/types"
|
||||
//"github.com/aarondl/opt/null"
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
|
||||
type mailerR struct {
|
||||
router *router
|
||||
}
|
||||
|
||||
func Mailer(r *router) *mailerR {
|
||||
return &mailerR{
|
||||
router: r,
|
||||
}
|
||||
}
|
||||
|
||||
func (res *mailerR) ByIDGet(ctx context.Context, r *http.Request, user platform.User, query QueryParams) (*types.Mailer, *nhttp.ErrorWithStatus) {
|
||||
vars := mux.Vars(r)
|
||||
id_str := vars["id"]
|
||||
id, err := strconv.Atoi(id_str)
|
||||
if err != nil {
|
||||
return nil, nhttp.NewBadRequest("'%s' is not a valid mailer ID: %w", id_str, err)
|
||||
}
|
||||
mailer, err := platform.MailerByID(ctx, user, int32(id))
|
||||
if err != nil {
|
||||
return nil, nhttp.NewError("mailer by id: %w", err)
|
||||
}
|
||||
return mailer, nil
|
||||
}
|
||||
func (res *mailerR) List(ctx context.Context, r *http.Request, user platform.User, query QueryParams) ([]*types.Mailer, *nhttp.ErrorWithStatus) {
|
||||
limit := 1000
|
||||
if query.Limit != nil {
|
||||
limit = *query.Limit
|
||||
}
|
||||
mailers, err := platform.MailerList(ctx, user, limit)
|
||||
if err != nil {
|
||||
return nil, nhttp.NewError("list signals: %w", err)
|
||||
}
|
||||
for _, mailer := range mailers {
|
||||
uri, err := res.router.IDToURI("mailer.ByIDGet", int(mailer.ID))
|
||||
if err != nil {
|
||||
return nil, nhttp.NewError("set uri: %w", err)
|
||||
}
|
||||
mailer.URI = uri
|
||||
}
|
||||
return mailers, nil
|
||||
}
|
||||
|
|
@ -50,6 +50,7 @@ type sessionURLAPI struct {
|
|||
Avatar string `json:"avatar"`
|
||||
Communication string `json:"communication"`
|
||||
Impersonation string `json:"impersonation"`
|
||||
Mailer string `json:"mailer"`
|
||||
PublicreportMessage string `json:"publicreport_message"`
|
||||
ReviewTask string `json:"review_task"`
|
||||
ServiceRequest string `json:"service_request"`
|
||||
|
|
@ -98,6 +99,7 @@ func (res *sessionR) Get(ctx context.Context, r *http.Request, user platform.Use
|
|||
Avatar: config.MakeURLNidus("/api/avatar"),
|
||||
Communication: urls.API.Communication,
|
||||
Impersonation: config.MakeURLNidus("/api/impersonation"),
|
||||
Mailer: config.MakeURLNidus("/api/mailer"),
|
||||
PublicreportMessage: urls.API.Publicreport.Message,
|
||||
ReviewTask: config.MakeURLNidus("/api/review-task"),
|
||||
ServiceRequest: config.MakeURLNidus("/api/service-request"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue