package html
import (
"strconv"
"github.com/Gleipnir-Technology/nidus-sync/config"
)
type ContentURL struct {
Configuration contentURLConfiguration
OAuthRefreshArcGIS string
RMO contentURLRMO
Root string
Route string
Sidebar contentURLSidebar
Tegola string
Upload contentURLUpload
}
func NewContentURL() ContentURL {
return ContentURL{
Configuration: newContentURLConfiguration(),
OAuthRefreshArcGIS: config.MakeURLNidus("/arcgis/oauth/begin"),
RMO: newContentURLRMO(),
Root: config.MakeURLNidus("/"),
Route: config.MakeURLNidus("/route"),
Sidebar: newContentURLSidebar(),
Tegola: config.MakeURLTegola("/"),
Upload: newContentURLUpload(),
}
}
type contentURLConfiguration struct {
ArcGIS string
Fieldseeker string
Integration string
Organization string
Pesticide string
PesticideAdd string
Root string
User string
Upload string
UserAdd string
}
func newContentURLConfiguration() contentURLConfiguration {
return contentURLConfiguration{
ArcGIS: config.MakeURLNidus("/configuration/integration/arcgis"),
Fieldseeker: config.MakeURLNidus("/configuration/integration/fieldseeker"),
Integration: config.MakeURLNidus("/configuration/integration"),
Organization: config.MakeURLNidus("/configuration/organization"),
Pesticide: config.MakeURLNidus("/configuration/pesticide"),
PesticideAdd: config.MakeURLNidus("/configuration/pesticide/add"),
Root: config.MakeURLNidus("/configuration"),
User: config.MakeURLNidus("/configuration/user"),
Upload: config.MakeURLNidus("/configuration/upload"),
UserAdd: config.MakeURLNidus("/configuration/user/add"),
}
}
type contentURLRMO struct {
Mailer contentURLRMOMailer
}
func newContentURLRMO() contentURLRMO {
return contentURLRMO{
Mailer: newContentURLRMOMailer(),
}
}
type contentURLRMOMailer struct {
Confirm urlWithParams
Contribute urlWithParams
Evidence urlWithParams
Root urlWithParams
Schedule urlWithParams
Update urlWithParams
}
func newContentURLRMOMailer() contentURLRMOMailer {
return contentURLRMOMailer{
Confirm: makeURLWithParams(config.MakeURLReport, "/mailer/%s/confirm"),
Contribute: makeURLWithParams(config.MakeURLReport, "/mailer/%s/contribute"),
Evidence: makeURLWithParams(config.MakeURLReport, "/mailer/%s/evidence"),
Root: makeURLWithParams(config.MakeURLReport, "/mailer/%s"),
Schedule: makeURLWithParams(config.MakeURLReport, "/mailer/%s/schedule"),
Update: makeURLWithParams(config.MakeURLReport, "/mailer/%s/update"),
}
}
type contentURLSidebar struct {
Communication string
Configuration string
Intelligence string
Operations string
Planning string
Review string
}
func newContentURLSidebar() contentURLSidebar {
return contentURLSidebar{
Communication: config.MakeURLNidus("/communication"),
Configuration: config.MakeURLNidus("/configuration"),
Intelligence: config.MakeURLNidus("/intelligence"),
Operations: config.MakeURLNidus("/operations"),
Planning: config.MakeURLNidus("/planning"),
Review: config.MakeURLNidus("/review"),
}
}
type urlForID = func(int) string
type urlWithParams = func(...string) string
type urlMaker func(path string, args ...string) string
func makeURLForID(maker urlMaker, pattern string) urlForID {
return func(id int) string {
params := []string{
strconv.Itoa(id),
}
return maker(pattern, params...)
}
}
func makeURLWithParams(maker urlMaker, pattern string, args ...string) urlWithParams {
return func(args ...string) string {
return maker(pattern, args...)
}
}
type contentURLUpload struct {
Commit urlForID
Discard urlForID
Pool string
PoolCustom string
PoolFlyover string
SamplePoolCSV string
}
func newContentURLUpload() contentURLUpload {
return contentURLUpload{
Commit: makeURLForID(config.MakeURLNidus, "/configuration/upload/%s/commit"),
Discard: makeURLForID(config.MakeURLNidus, "/configuration/upload/%s/discard"),
Pool: config.MakeURLNidus("/configuration/upload/pool"),
PoolFlyover: config.MakeURLNidus("/configuration/upload/pool/flyover"),
PoolCustom: config.MakeURLNidus("/configuration/upload/pool/custom"),
SamplePoolCSV: config.MakeURLNidus("/static/file/sample-pool.csv"),
}
}