annotate pkg/controllers/routes.go @ 3721:ed4820efb7e6

Password reset: Send redirect to server starting page when reset succeeded.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 20 Jun 2019 18:04:53 +0200
parents 6693be57b7a2
children 2ac52d89619e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1017
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
1 // This is Free Software under GNU Affero General Public License v >= 3.0
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
2 // without warranty, see README.md and license for details.
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
3 //
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
4 // SPDX-License-Identifier: AGPL-3.0-or-later
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
5 // License-Filename: LICENSES/AGPL-3.0.txt
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
6 //
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
7 // Copyright (C) 2018 by via donau
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
8 // – Österreichische Wasserstraßen-Gesellschaft mbH
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
9 // Software engineering by Intevation GmbH
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
10 //
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
11 // Author(s):
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de>
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
13 // * Sascha Wilde <sascha.wilde@intevation.de>
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 978
diff changeset
14
226
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 package controllers
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 import (
2042
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
18 "encoding/json"
226
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 "net/http"
346
ad0e47c1fedf Use httputil.ReverseProxy for WFS proxying.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 335
diff changeset
20 "net/http/httputil"
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
21 "strings"
226
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22
414
c1047fd04a3a Moved project specific Go packages to new pkg folder.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 408
diff changeset
23 "github.com/gorilla/mux"
226
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24
414
c1047fd04a3a Moved project specific Go packages to new pkg folder.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 408
diff changeset
25 "gemma.intevation.de/gemma/pkg/auth"
1627
b10aa02d7819 Refactored: Moved REST /api/imports/scheduler to /api/imports/config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1592
diff changeset
26 "gemma.intevation.de/gemma/pkg/imports"
419
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
27 "gemma.intevation.de/gemma/pkg/middleware"
442
fc37e7072022 Moved some models used in controllers to to model package because they may be needed elsewhere (e.g. GeoServer config).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 441
diff changeset
28 "gemma.intevation.de/gemma/pkg/models"
226
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 )
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30
1693
cdc8933949f2 Controllers: Resolved the remaining golint issues with this package.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 1677
diff changeset
31 // BindRoutes binds all the API endpoints to the exposed router.
226
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 func BindRoutes(m *mux.Router) {
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 api := m.PathPrefix("/api").Subrouter()
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35
270
d1b0d964af09 Dont restrict listing/updating of users to sys_admins.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 254
diff changeset
36 var (
978
544a5cfe07cd Started with endpoint for uploading sounding result and trigger respective import job.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 872
diff changeset
37 sysAdmin = auth.EnsureRole("sys_admin")
544a5cfe07cd Started with endpoint for uploading sounding result and trigger respective import job.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 872
diff changeset
38 waterwayAdmin = auth.EnsureRole("waterway_admin")
544a5cfe07cd Started with endpoint for uploading sounding result and trigger respective import job.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 872
diff changeset
39 any = auth.EnsureRole("sys_admin", "waterway_admin", "waterway_user")
270
d1b0d964af09 Dont restrict listing/updating of users to sys_admins.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 254
diff changeset
40 )
226
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41
335
bd292a554b6e Made gemma a WFS proxy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 304
diff changeset
42 // User management.
472
39b5deee8810 Replaced 'all' by 'any' in routes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 443
diff changeset
43 api.Handle("/users", any(&JSONHandler{
250
deabc2712634 Implemented /users GET as list of users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 242
diff changeset
44 Handle: listUsers,
deabc2712634 Implemented /users GET as list of users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 242
diff changeset
45 })).Methods(http.MethodGet)
deabc2712634 Implemented /users GET as list of users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 242
diff changeset
46
deabc2712634 Implemented /users GET as list of users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 242
diff changeset
47 api.Handle("/users", sysAdmin(&JSONHandler{
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
48 Input: func(*http.Request) interface{} { return new(models.User) },
239
713234a04a87 Renamed JSONHandler.Process to JSONHandler.Handler as it sounds more symmetrical.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 237
diff changeset
49 Handle: createUser,
237
3771788d3dae Reduce boilerplate code when writing JSON parsing/generating endpoints.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 235
diff changeset
50 })).Methods(http.MethodPost)
3771788d3dae Reduce boilerplate code when writing JSON parsing/generating endpoints.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 235
diff changeset
51
472
39b5deee8810 Replaced 'all' by 'any' in routes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 443
diff changeset
52 api.Handle("/users/{user}", any(&JSONHandler{
254
de6fdb316b8f Implemented /users/{user} GET a listing of given user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 250
diff changeset
53 Handle: listUser,
de6fdb316b8f Implemented /users/{user} GET a listing of given user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 250
diff changeset
54 })).Methods(http.MethodGet)
de6fdb316b8f Implemented /users/{user} GET a listing of given user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 250
diff changeset
55
472
39b5deee8810 Replaced 'all' by 'any' in routes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 443
diff changeset
56 api.Handle("/users/{user}", any(&JSONHandler{
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
57 Input: func(*http.Request) interface{} { return new(models.User) },
239
713234a04a87 Renamed JSONHandler.Process to JSONHandler.Handler as it sounds more symmetrical.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 237
diff changeset
58 Handle: updateUser,
237
3771788d3dae Reduce boilerplate code when writing JSON parsing/generating endpoints.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 235
diff changeset
59 })).Methods(http.MethodPut)
226
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60
240
9012e4045da4 Implemented /user delete controller.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 239
diff changeset
61 api.Handle("/users/{user}", sysAdmin(&JSONHandler{
9012e4045da4 Implemented /user delete controller.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 239
diff changeset
62 Handle: deleteUser,
242
24eb518b0394 /users delete should be handled by HTTP DELETE not PUT.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 240
diff changeset
63 })).Methods(http.MethodDelete)
240
9012e4045da4 Implemented /user delete controller.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 239
diff changeset
64
822
8926c413db21 Started implementation of test mail end point.
Sascha Wilde <wilde@intevation.de>
parents: 812
diff changeset
65 // System notifications
8926c413db21 Started implementation of test mail end point.
Sascha Wilde <wilde@intevation.de>
parents: 812
diff changeset
66 api.Handle("/testmail/{user}", sysAdmin(&JSONHandler{
8926c413db21 Started implementation of test mail end point.
Sascha Wilde <wilde@intevation.de>
parents: 812
diff changeset
67 Handle: sendTestMail,
8926c413db21 Started implementation of test mail end point.
Sascha Wilde <wilde@intevation.de>
parents: 812
diff changeset
68 })).Methods(http.MethodGet)
8926c413db21 Started implementation of test mail end point.
Sascha Wilde <wilde@intevation.de>
parents: 812
diff changeset
69
722
815f5e2ed974 Added simple endpoint to view system logs.
Sascha Wilde <wilde@intevation.de>
parents: 710
diff changeset
70 // System Management
815f5e2ed974 Added simple endpoint to view system logs.
Sascha Wilde <wilde@intevation.de>
parents: 710
diff changeset
71 api.Handle("/system/log/{service}/{file}", sysAdmin(&JSONHandler{
815f5e2ed974 Added simple endpoint to view system logs.
Sascha Wilde <wilde@intevation.de>
parents: 710
diff changeset
72 Handle: showSystemLog,
815f5e2ed974 Added simple endpoint to view system logs.
Sascha Wilde <wilde@intevation.de>
parents: 710
diff changeset
73 NoConn: true,
815f5e2ed974 Added simple endpoint to view system logs.
Sascha Wilde <wilde@intevation.de>
parents: 710
diff changeset
74 })).Methods(http.MethodGet)
815f5e2ed974 Added simple endpoint to view system logs.
Sascha Wilde <wilde@intevation.de>
parents: 710
diff changeset
75
840
0f61bfc21041 Added end point to get style (colour) information for feature.
Sascha Wilde <wilde@intevation.de>
parents: 822
diff changeset
76 // System Settings
3104
19fc84a98479 Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2962
diff changeset
77 api.Handle("/system/config", any(&JSONHandler{
19fc84a98479 Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2962
diff changeset
78 Handle: getSystemConfig,
19fc84a98479 Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2962
diff changeset
79 NoConn: true,
19fc84a98479 Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2962
diff changeset
80 })).Methods(http.MethodGet)
19fc84a98479 Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2962
diff changeset
81
3625
a688a478e35f implemented configuration backend and frontend
Markus Kottlaender <markus@intevation.de>
parents: 3439
diff changeset
82 api.Handle("/system/settings", any(&JSONHandler{
a688a478e35f implemented configuration backend and frontend
Markus Kottlaender <markus@intevation.de>
parents: 3439
diff changeset
83 Handle: getSystemSettings,
a688a478e35f implemented configuration backend and frontend
Markus Kottlaender <markus@intevation.de>
parents: 3439
diff changeset
84 })).Methods(http.MethodGet)
a688a478e35f implemented configuration backend and frontend
Markus Kottlaender <markus@intevation.de>
parents: 3439
diff changeset
85
a688a478e35f implemented configuration backend and frontend
Markus Kottlaender <markus@intevation.de>
parents: 3439
diff changeset
86 api.Handle("/system/settings", any(&JSONHandler{
3628
6693be57b7a2 Re-worked the Go part a little bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3625
diff changeset
87 Input: func(*http.Request) interface{} { return &map[string]string{} },
3625
a688a478e35f implemented configuration backend and frontend
Markus Kottlaender <markus@intevation.de>
parents: 3439
diff changeset
88 Handle: setSystemSettings,
a688a478e35f implemented configuration backend and frontend
Markus Kottlaender <markus@intevation.de>
parents: 3439
diff changeset
89 })).Methods(http.MethodPut)
a688a478e35f implemented configuration backend and frontend
Markus Kottlaender <markus@intevation.de>
parents: 3439
diff changeset
90
840
0f61bfc21041 Added end point to get style (colour) information for feature.
Sascha Wilde <wilde@intevation.de>
parents: 822
diff changeset
91 api.Handle("/system/style/{feature}/{attr}", any(&JSONHandler{
0f61bfc21041 Added end point to get style (colour) information for feature.
Sascha Wilde <wilde@intevation.de>
parents: 822
diff changeset
92 Handle: getFeatureStyle,
0f61bfc21041 Added end point to get style (colour) information for feature.
Sascha Wilde <wilde@intevation.de>
parents: 822
diff changeset
93 })).Methods(http.MethodGet)
0f61bfc21041 Added end point to get style (colour) information for feature.
Sascha Wilde <wilde@intevation.de>
parents: 822
diff changeset
94
846
6902032757e4 Added end point to set style (colour) information for feature.
Sascha Wilde <wilde@intevation.de>
parents: 840
diff changeset
95 api.Handle("/system/style/{feature}/{attr}", any(&JSONHandler{
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
96 Input: func(*http.Request) interface{} { return new(models.Colour) },
846
6902032757e4 Added end point to set style (colour) information for feature.
Sascha Wilde <wilde@intevation.de>
parents: 840
diff changeset
97 Handle: setFeatureStyle,
6902032757e4 Added end point to set style (colour) information for feature.
Sascha Wilde <wilde@intevation.de>
parents: 840
diff changeset
98 })).Methods(http.MethodPut)
6902032757e4 Added end point to set style (colour) information for feature.
Sascha Wilde <wilde@intevation.de>
parents: 840
diff changeset
99
335
bd292a554b6e Made gemma a WFS proxy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 304
diff changeset
100 // Password resets.
302
0777aa6de45b Password reset. Part I
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 281
diff changeset
101 api.Handle("/users/passwordreset", &JSONHandler{
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
102 Input: func(*http.Request) interface{} { return new(models.PWResetUser) },
304
69e291f26bbd Password reset: Part II.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 302
diff changeset
103 Handle: passwordResetRequest,
710
3e9f0070c33e Password reset endpoints do not need impersonated db connections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 642
diff changeset
104 NoConn: true,
304
69e291f26bbd Password reset: Part II.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 302
diff changeset
105 }).Methods(http.MethodPost)
69e291f26bbd Password reset: Part II.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 302
diff changeset
106
3721
ed4820efb7e6 Password reset: Send redirect to server starting page when reset succeeded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3628
diff changeset
107 api.HandleFunc("/users/passwordreset/{hash}", passwordReset).
ed4820efb7e6 Password reset: Send redirect to server starting page when reset succeeded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3628
diff changeset
108 Methods(http.MethodGet)
302
0777aa6de45b Password reset. Part I
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 281
diff changeset
109
2147
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
110 // Print templates
3217
4c254651d80b Added template types "map", "diagram", "report".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3171
diff changeset
111 api.Handle("/templates", any(&JSONHandler{
2147
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
112 Handle: listPrintTemplates,
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
113 })).Methods(http.MethodGet)
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
114
3217
4c254651d80b Added template types "map", "diagram", "report".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3171
diff changeset
115 tTypes := "{type:" + strings.Join(templateTypes, "|") + "}"
4c254651d80b Added template types "map", "diagram", "report".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3171
diff changeset
116
4c254651d80b Added template types "map", "diagram", "report".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3171
diff changeset
117 api.Handle("/templates/"+tTypes, any(&JSONHandler{
4c254651d80b Added template types "map", "diagram", "report".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3171
diff changeset
118 Handle: listPrintTemplates,
4c254651d80b Added template types "map", "diagram", "report".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3171
diff changeset
119 })).Methods(http.MethodGet)
4c254651d80b Added template types "map", "diagram", "report".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3171
diff changeset
120
4c254651d80b Added template types "map", "diagram", "report".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3171
diff changeset
121 api.Handle("/templates/"+tTypes+"/{name}", any(&JSONHandler{
2147
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
122 Handle: fetchPrintTemplate,
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
123 })).Methods(http.MethodGet)
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
124
3217
4c254651d80b Added template types "map", "diagram", "report".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3171
diff changeset
125 api.Handle("/templates/"+tTypes+"/{name}", waterwayAdmin(&JSONHandler{
2161
7444b75d5497 Print templates endpoints: Get rid of useless models.PrintTemplateIn model.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2155
diff changeset
126 Input: func(*http.Request) interface{} { return &json.RawMessage{} },
2147
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
127 Handle: createPrintTemplate,
2155
51c5aead78c0 Print templates: Implemented /api/templates/print/{name} GET.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2147
diff changeset
128 Limit: maxPrintTemplateSize,
2147
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
129 })).Methods(http.MethodPost)
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
130
3217
4c254651d80b Added template types "map", "diagram", "report".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3171
diff changeset
131 api.Handle("/templates/"+tTypes+"/{name}", waterwayAdmin(&JSONHandler{
2147
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
132 Handle: deletePrintTemplate,
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
133 })).Methods(http.MethodDelete)
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
134
3217
4c254651d80b Added template types "map", "diagram", "report".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3171
diff changeset
135 api.Handle("/templates/"+tTypes+"/{name}", waterwayAdmin(&JSONHandler{
2162
0627565fb4d2 Print templates: Implemented /api/templates/print/{name} PATCH to update print templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2161
diff changeset
136 Input: func(*http.Request) interface{} { return &json.RawMessage{} },
2147
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
137 Handle: updatePrintTemplate,
2162
0627565fb4d2 Print templates: Implemented /api/templates/print/{name} PATCH to update print templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2161
diff changeset
138 Limit: maxPrintTemplateSize,
2147
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
139 })).Methods(http.MethodPatch)
b66cfcde8ff7 Print templates: Stubbed endpoints under /api/templates/print/{name}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2073
diff changeset
140
426
4a03d000c854 Fixed wrong comments.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 421
diff changeset
141 // External proxies.
1127
71ba4a66ec95 Return 404 if a proxied service is not found.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1051
diff changeset
142 external := middleware.NotFound(&httputil.ReverseProxy{
442
fc37e7072022 Moved some models used in controllers to to model package because they may be needed elsewhere (e.g. GeoServer config).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 441
diff changeset
143 Director: proxyDirector(models.ExternalServices.Find),
421
c37457f12b8e Differ between internal and external proxies.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 419
diff changeset
144 ModifyResponse: proxyModifyResponse("/api/external/"),
1127
71ba4a66ec95 Return 404 if a proxied service is not found.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1051
diff changeset
145 })
346
ad0e47c1fedf Use httputil.ReverseProxy for WFS proxying.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 335
diff changeset
146
472
39b5deee8810 Replaced 'all' by 'any' in routes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 443
diff changeset
147 externalAuth := any(external)
443
5e8ac1c67fe6 Even the usage of the external proxied WFS/WMS need to logged into gemma.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 442
diff changeset
148
5e8ac1c67fe6 Even the usage of the external proxied WFS/WMS need to logged into gemma.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 442
diff changeset
149 api.Handle("/external/{hash}/{url}", externalAuth).
408
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 359
diff changeset
150 Methods(
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 359
diff changeset
151 http.MethodGet, http.MethodPost,
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 359
diff changeset
152 http.MethodPut, http.MethodDelete)
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 359
diff changeset
153
443
5e8ac1c67fe6 Even the usage of the external proxied WFS/WMS need to logged into gemma.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 442
diff changeset
154 api.Handle("/external/{entry}", externalAuth).
335
bd292a554b6e Made gemma a WFS proxy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 304
diff changeset
155 Methods(
bd292a554b6e Made gemma a WFS proxy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 304
diff changeset
156 http.MethodGet, http.MethodPost,
bd292a554b6e Made gemma a WFS proxy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 304
diff changeset
157 http.MethodPut, http.MethodDelete)
bd292a554b6e Made gemma a WFS proxy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 304
diff changeset
158
426
4a03d000c854 Fixed wrong comments.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 421
diff changeset
159 // Internal proxies.
1127
71ba4a66ec95 Return 404 if a proxied service is not found.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1051
diff changeset
160 internal := middleware.NotFound(&httputil.ReverseProxy{
474
11d80120ed3d Renamed published services to internal services to be more symmetrical to external services.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 473
diff changeset
161 Director: proxyDirector(models.InternalServices.Find),
421
c37457f12b8e Differ between internal and external proxies.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 419
diff changeset
162 ModifyResponse: proxyModifyResponse("/api/internal/"),
1127
71ba4a66ec95 Return 404 if a proxied service is not found.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1051
diff changeset
163 })
419
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
164
472
39b5deee8810 Replaced 'all' by 'any' in routes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 443
diff changeset
165 internalAuth := any(
419
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
166 middleware.ModifyQuery(internal, middleware.InjectUser))
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
167
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
168 api.Handle("/internal/{hash}/{url}", internalAuth).
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
169 Methods(
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
170 http.MethodGet, http.MethodPost,
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
171 http.MethodPut, http.MethodDelete)
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
172
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
173 api.Handle("/internal/{entry}", internalAuth).
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
174 Methods(
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
175 http.MethodGet, http.MethodPost,
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
176 http.MethodPut, http.MethodDelete)
6627c48363a0 First attempt for user injection of proxy for using GeoServer with role based security.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
177
473
b2dea4e56ff1 /api/published (GET) returns a JSON document of the geo-services published by the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 472
diff changeset
178 api.Handle("/published", any(&JSONHandler{
b2dea4e56ff1 /api/published (GET) returns a JSON document of the geo-services published by the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 472
diff changeset
179 Handle: published,
486
b2dc9c2f69e0 First stab to use the metamorphic db to do all database stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 484
diff changeset
180 NoConn: true,
473
b2dea4e56ff1 /api/published (GET) returns a JSON document of the geo-services published by the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 472
diff changeset
181 })).Methods(http.MethodGet)
b2dea4e56ff1 /api/published (GET) returns a JSON document of the geo-services published by the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 472
diff changeset
182
1050
146245d2198f List all bottlenecks via GET /api/bottlenecks
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1037
diff changeset
183 // Survey selection
812
98a7776100fb Added end point lo list available surveys for a given bottleneck.
Sascha Wilde <wilde@intevation.de>
parents: 801
diff changeset
184 api.Handle("/surveys/{bottleneck}", any(&JSONHandler{
98a7776100fb Added end point lo list available surveys for a given bottleneck.
Sascha Wilde <wilde@intevation.de>
parents: 801
diff changeset
185 Handle: listSurveys,
98a7776100fb Added end point lo list available surveys for a given bottleneck.
Sascha Wilde <wilde@intevation.de>
parents: 801
diff changeset
186 })).Methods(http.MethodGet)
98a7776100fb Added end point lo list available surveys for a given bottleneck.
Sascha Wilde <wilde@intevation.de>
parents: 801
diff changeset
187
1050
146245d2198f List all bottlenecks via GET /api/bottlenecks
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1037
diff changeset
188 // Bottlenecks
1051
137a8144e581 Typo fix.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
189 api.Handle("/bottlenecks", any(&JSONHandler{
1050
146245d2198f List all bottlenecks via GET /api/bottlenecks
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1037
diff changeset
190 Handle: listBottlenecks,
146245d2198f List all bottlenecks via GET /api/bottlenecks
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1037
diff changeset
191 })).Methods(http.MethodGet)
146245d2198f List all bottlenecks via GET /api/bottlenecks
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1037
diff changeset
192
2570
c4242b9d59fe Morphological differences: Added endpoint stub POST /api/diff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2546
diff changeset
193 // difference calculation
c4242b9d59fe Morphological differences: Added endpoint stub POST /api/diff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2546
diff changeset
194 api.Handle("/diff", any(&JSONHandler{
c4242b9d59fe Morphological differences: Added endpoint stub POST /api/diff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2546
diff changeset
195 Input: func(*http.Request) interface{} { return new(models.DiffCalculationInput) },
c4242b9d59fe Morphological differences: Added endpoint stub POST /api/diff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2546
diff changeset
196 Handle: diffCalculation,
c4242b9d59fe Morphological differences: Added endpoint stub POST /api/diff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2546
diff changeset
197 })).Methods(http.MethodPost)
c4242b9d59fe Morphological differences: Added endpoint stub POST /api/diff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2546
diff changeset
198
633
6093016fac88 Cross sections: started with implementation of web service (WIP).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 486
diff changeset
199 // Cross sections
642
e95df6657023 Cross sections: call web endpoint simply 'cross' instead of 'cross-section'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 633
diff changeset
200 api.Handle("/cross", any(&JSONHandler{
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
201 Input: func(*http.Request) interface{} { return new(models.CrossSectionInput) },
633
6093016fac88 Cross sections: started with implementation of web service (WIP).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 486
diff changeset
202 Handle: crossSection,
6093016fac88 Cross sections: started with implementation of web service (WIP).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 486
diff changeset
203 })).Methods(http.MethodPost)
6093016fac88 Cross sections: started with implementation of web service (WIP).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 486
diff changeset
204
743
fdff2de616ad Added search function for river kilometer.
Sascha Wilde <wilde@intevation.de>
parents: 722
diff changeset
205 // Feature search
fdff2de616ad Added search function for river kilometer.
Sascha Wilde <wilde@intevation.de>
parents: 722
diff changeset
206 api.Handle("/search", any(&JSONHandler{
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
207 Input: func(*http.Request) interface{} { return new(models.SearchRequest) },
743
fdff2de616ad Added search function for river kilometer.
Sascha Wilde <wilde@intevation.de>
parents: 722
diff changeset
208 Handle: searchFeature,
fdff2de616ad Added search function for river kilometer.
Sascha Wilde <wilde@intevation.de>
parents: 722
diff changeset
209 })).Methods(http.MethodPost)
fdff2de616ad Added search function for river kilometer.
Sascha Wilde <wilde@intevation.de>
parents: 722
diff changeset
210
870
29c11f4bf9db Started with endpoint to upload geo style.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 846
diff changeset
211 // Geo styling
29c11f4bf9db Started with endpoint to upload geo style.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 846
diff changeset
212 api.Handle("/geo/style/{feature}",
872
b882b2c796c1 Only sys_admin should set the style of an feature.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 870
diff changeset
213 sysAdmin(http.HandlerFunc(uploadStyle))).Methods(http.MethodPost)
870
29c11f4bf9db Started with endpoint to upload geo style.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 846
diff changeset
214
978
544a5cfe07cd Started with endpoint for uploading sounding result and trigger respective import job.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 872
diff changeset
215 // Imports
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
216 api.Handle("/imports/sr-upload/{token}",
1228
17131f0f9fcb Added endpoint to explicitly delete a temp upload.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1224
diff changeset
217 waterwayAdmin(http.HandlerFunc(deleteSoundingUpload))).Methods(http.MethodDelete)
17131f0f9fcb Added endpoint to explicitly delete a temp upload.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1224
diff changeset
218
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
219 api.Handle("/imports/sr-upload", waterwayAdmin(&JSONHandler{
1224
bc4b642c8d04 Started with an upload sounding result to temp upload area.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1192
diff changeset
220 Handle: uploadSoundingResult,
bc4b642c8d04 Started with an upload sounding result to temp upload area.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1192
diff changeset
221 })).Methods(http.MethodPost)
bc4b642c8d04 Started with an upload sounding result to temp upload area.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1192
diff changeset
222
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
223 api.Handle("/imports/sr", waterwayAdmin(
1224
bc4b642c8d04 Started with an upload sounding result to temp upload area.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1192
diff changeset
224 http.HandlerFunc(importSoundingResult))).Methods(http.MethodPost)
978
544a5cfe07cd Started with endpoint for uploading sounding result and trigger respective import job.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 872
diff changeset
225
2073
e6dccc7a3ea1 Waterway profiles import: Added upload route.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2058
diff changeset
226 api.Handle("/imports/wp", waterwayAdmin(
2546
bf4a884fc306 Routing table: Removed superfluous type conversions for upload controllers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2537
diff changeset
227 importWaterwayProfiles())).Methods(http.MethodPost)
2073
e6dccc7a3ea1 Waterway profiles import: Added upload route.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2058
diff changeset
228
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2249
diff changeset
229 api.Handle("/imports/agm", waterwayAdmin(
2546
bf4a884fc306 Routing table: Removed superfluous type conversions for upload controllers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2537
diff changeset
230 importApprovedGaugeMeasurements())).Methods(http.MethodPost)
2256
0d272d7bcfb9 Uploaded imports: Unified agm, ubn, ufa and ugm import endpoints and removed a lot c&p code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2249
diff changeset
231
2191
4b9496752d89 Upload bottleneck import: Added stub.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2162
diff changeset
232 api.Handle("/imports/ubn", waterwayAdmin(
2546
bf4a884fc306 Routing table: Removed superfluous type conversions for upload controllers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2537
diff changeset
233 importUploadedBottleneck())).Methods(http.MethodPost)
2191
4b9496752d89 Upload bottleneck import: Added stub.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2162
diff changeset
234
2203
8d1a945d0c3b Uploaded fairway availabilty import: Implemented in terms of normal fairway availabilty import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2191
diff changeset
235 api.Handle("/imports/ufa", waterwayAdmin(
2546
bf4a884fc306 Routing table: Removed superfluous type conversions for upload controllers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2537
diff changeset
236 importUploadedFairwayAvailability())).Methods(http.MethodPost)
2203
8d1a945d0c3b Uploaded fairway availabilty import: Implemented in terms of normal fairway availabilty import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2191
diff changeset
237
2249
35db2e11c966 Uploaded gauge measurement: Implemented in terms of normal gauge measurement import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2203
diff changeset
238 api.Handle("/imports/ugm", waterwayAdmin(
2546
bf4a884fc306 Routing table: Removed superfluous type conversions for upload controllers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2537
diff changeset
239 importUploadedGaugeMeasurement())).Methods(http.MethodPost)
2249
35db2e11c966 Uploaded gauge measurement: Implemented in terms of normal gauge measurement import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2203
diff changeset
240
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
241 api.Handle("/imports/{kind:st}", sysAdmin(&JSONHandler{
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
242 Input: importModel,
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
243 Handle: manualImport,
1667
aaa05d3c4aac Deduplicated code for triggering manual imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1662
diff changeset
244 NoConn: true,
1662
d8ca44615bfc Implemented first version of fairway availability import.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1637
diff changeset
245 })).Methods(http.MethodPost)
d8ca44615bfc Implemented first version of fairway availability import.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1637
diff changeset
246
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
247 kinds := strings.Join([]string{
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
248 "bn", "gm", "fa", "wx", "wa",
2301
dc5a806dcfdc Routes: Fixed route to distance marks ashore.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
249 "wg", "dmv", "fd", "dma",
3171
c8ded555c2a8 Sections import: Added a sections import. Derived from the stretches import w/o the countries.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3119
diff changeset
250 "sec",
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
251 }, "|")
1808
77582da3adb0 Waterway gauges import: Added stub.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1785
diff changeset
252
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
253 api.Handle("/imports/{kind:"+kinds+"}", waterwayAdmin(&JSONHandler{
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
254 Input: importModel,
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
255 Handle: manualImport,
1901
71b722809b2b Stretch import: Added stub.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1862
diff changeset
256 NoConn: true,
71b722809b2b Stretch import: Added stub.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1862
diff changeset
257 })).Methods(http.MethodPost)
71b722809b2b Stretch import: Added stub.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1862
diff changeset
258
1583
caedd9b176f2 Added GET to /api/imports/scheduler.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1582
diff changeset
259 // Import scheduler configuration
1730
7c54babe10f7 Configured imports: Added GET /imports/config/{id:[0-9]+}/run" to run a configured import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1693
diff changeset
260 api.Handle("/imports/config/{id:[0-9]+}/run",
7c54babe10f7 Configured imports: Added GET /imports/config/{id:[0-9]+}/run" to run a configured import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1693
diff changeset
261 waterwayAdmin(&JSONHandler{
7c54babe10f7 Configured imports: Added GET /imports/config/{id:[0-9]+}/run" to run a configured import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1693
diff changeset
262 Handle: runImportConfig,
7c54babe10f7 Configured imports: Added GET /imports/config/{id:[0-9]+}/run" to run a configured import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1693
diff changeset
263 })).Methods(http.MethodGet)
7c54babe10f7 Configured imports: Added GET /imports/config/{id:[0-9]+}/run" to run a configured import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1693
diff changeset
264
1627
b10aa02d7819 Refactored: Moved REST /api/imports/scheduler to /api/imports/config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1592
diff changeset
265 api.Handle("/imports/config/{id:[0-9]+}",
1590
2fdd8e57542d Added DELETE /imports/scheduler/{id:[0-9]+} to delete a schedule from the scheduler.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1589
diff changeset
266 waterwayAdmin(&JSONHandler{
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
267 Input: func(*http.Request) interface{} { return &json.RawMessage{} },
1627
b10aa02d7819 Refactored: Moved REST /api/imports/scheduler to /api/imports/config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1592
diff changeset
268 Handle: modifyImportConfig,
1592
c12cec1d7692 Added PATCH /imports/scheduler/{id:[0-9]+} to modify a single import configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1591
diff changeset
269 })).Methods(http.MethodPatch)
c12cec1d7692 Added PATCH /imports/scheduler/{id:[0-9]+} to modify a single import configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1591
diff changeset
270
1627
b10aa02d7819 Refactored: Moved REST /api/imports/scheduler to /api/imports/config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1592
diff changeset
271 api.Handle("/imports/config/{id:[0-9]+}",
1592
c12cec1d7692 Added PATCH /imports/scheduler/{id:[0-9]+} to modify a single import configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1591
diff changeset
272 waterwayAdmin(&JSONHandler{
1627
b10aa02d7819 Refactored: Moved REST /api/imports/scheduler to /api/imports/config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1592
diff changeset
273 Handle: deleteImportConfig,
1590
2fdd8e57542d Added DELETE /imports/scheduler/{id:[0-9]+} to delete a schedule from the scheduler.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1589
diff changeset
274 })).Methods(http.MethodDelete)
2fdd8e57542d Added DELETE /imports/scheduler/{id:[0-9]+} to delete a schedule from the scheduler.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1589
diff changeset
275
1627
b10aa02d7819 Refactored: Moved REST /api/imports/scheduler to /api/imports/config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1592
diff changeset
276 api.Handle("/imports/config/{id:[0-9]+}",
1591
2d53065c95af Added GET /imports/scheduler/{id:[0-9]+} to show infos about single import configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1590
diff changeset
277 waterwayAdmin(&JSONHandler{
1627
b10aa02d7819 Refactored: Moved REST /api/imports/scheduler to /api/imports/config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1592
diff changeset
278 Handle: infoImportConfig,
1591
2d53065c95af Added GET /imports/scheduler/{id:[0-9]+} to show infos about single import configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1590
diff changeset
279 })).Methods(http.MethodGet)
2d53065c95af Added GET /imports/scheduler/{id:[0-9]+} to show infos about single import configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1590
diff changeset
280
1627
b10aa02d7819 Refactored: Moved REST /api/imports/scheduler to /api/imports/config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1592
diff changeset
281 api.Handle("/imports/config",
1583
caedd9b176f2 Added GET to /api/imports/scheduler.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1582
diff changeset
282 waterwayAdmin(&JSONHandler{
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
283 Input: func(*http.Request) interface{} { return new(imports.ImportConfigIn) },
1627
b10aa02d7819 Refactored: Moved REST /api/imports/scheduler to /api/imports/config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1592
diff changeset
284 Handle: addImportConfig,
1589
e0bd82f6ee14 Added PUT /api/imports/scheduler to add a import configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1583
diff changeset
285 })).Methods(http.MethodPost)
e0bd82f6ee14 Added PUT /api/imports/scheduler to add a import configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1583
diff changeset
286
1627
b10aa02d7819 Refactored: Moved REST /api/imports/scheduler to /api/imports/config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1592
diff changeset
287 api.Handle("/imports/config",
1589
e0bd82f6ee14 Added PUT /api/imports/scheduler to add a import configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1583
diff changeset
288 waterwayAdmin(&JSONHandler{
1627
b10aa02d7819 Refactored: Moved REST /api/imports/scheduler to /api/imports/config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1592
diff changeset
289 Handle: listImportConfigs,
1583
caedd9b176f2 Added GET to /api/imports/scheduler.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1582
diff changeset
290 })).Methods(http.MethodGet)
caedd9b176f2 Added GET to /api/imports/scheduler.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1582
diff changeset
291
1023
337a7f4c8a16 Add endpoint to list all or some import jobs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1017
diff changeset
292 // Import queue
337a7f4c8a16 Add endpoint to list all or some import jobs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1017
diff changeset
293 lsImports := waterwayAdmin(&JSONHandler{
337a7f4c8a16 Add endpoint to list all or some import jobs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1017
diff changeset
294 Handle: listImports,
337a7f4c8a16 Add endpoint to list all or some import jobs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1017
diff changeset
295 })
337a7f4c8a16 Add endpoint to list all or some import jobs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1017
diff changeset
296
337a7f4c8a16 Add endpoint to list all or some import jobs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1017
diff changeset
297 api.Handle("/imports", lsImports).
1315
24e4c60c2606 Simplified and fixed filtering of import queue listing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1228
diff changeset
298 Methods(http.MethodGet)
1023
337a7f4c8a16 Add endpoint to list all or some import jobs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1017
diff changeset
299
1026
3de54d7b7d30 Added endpoint to show the detail logs of an import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1023
diff changeset
300 api.Handle("/imports/{id:[0-9]+}", waterwayAdmin(&JSONHandler{
3de54d7b7d30 Added endpoint to show the detail logs of an import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1023
diff changeset
301 Handle: importLogs,
1037
a04126989d91 Added endpoint to delete job from import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1026
diff changeset
302 })).Methods(http.MethodGet)
a04126989d91 Added endpoint to delete job from import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1026
diff changeset
303
1468
5e1218b5a123 proof of concept
Thomas Junk <thomas.junk@intevation.de>
parents: 1315
diff changeset
304 api.Handle("/imports", waterwayAdmin(&JSONHandler{
2058
09f9ae3d0526 Imports: Handle manual imports with a single route using the shortnames of the imports to distiquish between them.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
305 Input: func(*http.Request) interface{} { return &[]models.Review{} },
1468
5e1218b5a123 proof of concept
Thomas Junk <thomas.junk@intevation.de>
parents: 1315
diff changeset
306 Handle: reviewImports,
5e1218b5a123 proof of concept
Thomas Junk <thomas.junk@intevation.de>
parents: 1315
diff changeset
307 })).Methods(http.MethodPatch)
5e1218b5a123 proof of concept
Thomas Junk <thomas.junk@intevation.de>
parents: 1315
diff changeset
308
1037
a04126989d91 Added endpoint to delete job from import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1026
diff changeset
309 api.Handle("/imports/{id:[0-9]+}", waterwayAdmin(&JSONHandler{
a04126989d91 Added endpoint to delete job from import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1026
diff changeset
310 Handle: deleteImport,
a04126989d91 Added endpoint to delete job from import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1026
diff changeset
311 })).Methods(http.MethodDelete)
1026
3de54d7b7d30 Added endpoint to show the detail logs of an import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1023
diff changeset
312
1192
3afa71405b87 Added REST endpoint to accept or decline an import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1189
diff changeset
313 // Handler to review an import which is pending.
3afa71405b87 Added REST endpoint to accept or decline an import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1189
diff changeset
314 api.Handle("/imports/{id:[0-9]+}/{state:(?:accepted|declined)}",
3afa71405b87 Added REST endpoint to accept or decline an import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1189
diff changeset
315 waterwayAdmin(&JSONHandler{
3afa71405b87 Added REST endpoint to accept or decline an import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1189
diff changeset
316 Handle: reviewImport,
3afa71405b87 Added REST endpoint to accept or decline an import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1189
diff changeset
317 })).Methods(http.MethodPut)
3afa71405b87 Added REST endpoint to accept or decline an import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1189
diff changeset
318
2694
0d7a4fdb9e12 Added GET /api/data/waterlevels/{gauge isrs}?from={time_a}&to={time_b} to fetch waterlevels of gauge.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2570
diff changeset
319 // Handler to serve data to the client.
0d7a4fdb9e12 Added GET /api/data/waterlevels/{gauge isrs}?from={time_a}&to={time_b} to fetch waterlevels of gauge.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2570
diff changeset
320
3439
d7ddb21f7017 Prepared to write the fairway availibilty as CSV, too. WIP.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
321 api.Handle("/data/{kind:stretch|section}/availability/{name}", any(
d7ddb21f7017 Prepared to write the fairway availibilty as CSV, too. WIP.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
322 middleware.DBConn(http.HandlerFunc(stretchAvailabilty)))).Methods(http.MethodGet)
3245
60f25cbe77fb Added API stubs from fairway availabilty for stretches and sections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3217
diff changeset
323
3405
2b5c22f6bb1f available fairway depth: Implemented backend for sections and stretches.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3245
diff changeset
324 api.Handle("/data/{kind:stretch|section}/fairway-depth/{name}", any(
3245
60f25cbe77fb Added API stubs from fairway availabilty for stretches and sections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3217
diff changeset
325 middleware.DBConn(http.HandlerFunc(stretchAvailableFairwayDepth)))).Methods(http.MethodGet)
60f25cbe77fb Added API stubs from fairway availabilty for stretches and sections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3217
diff changeset
326
3119
ad5a00ccd276 Display Available Fairway Depths: More controller code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3118
diff changeset
327 api.Handle("/data/bottleneck/fairway-depth/{objnam}", any(
ad5a00ccd276 Display Available Fairway Depths: More controller code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3118
diff changeset
328 middleware.DBConn(http.HandlerFunc(bottleneckAvailableFairwayDepth)))).Methods(http.MethodGet)
3118
4dcbf9e9013c Added stub for GET /api/data/fairway-depth/{gauge}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3104
diff changeset
329
3439
d7ddb21f7017 Prepared to write the fairway availibilty as CSV, too. WIP.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
330 api.Handle("/data/bottleneck/availability/{objnam}", any(
d7ddb21f7017 Prepared to write the fairway availibilty as CSV, too. WIP.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
331 middleware.DBConn(http.HandlerFunc(bottleneckAvailabilty)))).Methods(http.MethodGet)
d7ddb21f7017 Prepared to write the fairway availibilty as CSV, too. WIP.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
332
2694
0d7a4fdb9e12 Added GET /api/data/waterlevels/{gauge isrs}?from={time_a}&to={time_b} to fetch waterlevels of gauge.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2570
diff changeset
333 api.Handle("/data/waterlevels/{gauge}", any(
0d7a4fdb9e12 Added GET /api/data/waterlevels/{gauge isrs}?from={time_a}&to={time_b} to fetch waterlevels of gauge.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2570
diff changeset
334 middleware.DBConn(http.HandlerFunc(waterlevels)))).Methods(http.MethodGet)
0d7a4fdb9e12 Added GET /api/data/waterlevels/{gauge isrs}?from={time_a}&to={time_b} to fetch waterlevels of gauge.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2570
diff changeset
335
2800
db1052bc162a Added GET /data/longterm-waterlevels/{gauge}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2762
diff changeset
336 api.Handle("/data/longterm-waterlevels/{gauge}", any(
db1052bc162a Added GET /data/longterm-waterlevels/{gauge}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2762
diff changeset
337 middleware.DBConn(http.HandlerFunc(longtermWaterlevels)))).Methods(http.MethodGet)
db1052bc162a Added GET /data/longterm-waterlevels/{gauge}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2762
diff changeset
338
2803
46a9a7c1281f Added GET /api/data/year-waterlevels/{gauge}/{year}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2800
diff changeset
339 api.Handle("/data/year-waterlevels/{gauge}/{year:[0-9]+}", any(
46a9a7c1281f Added GET /api/data/year-waterlevels/{gauge}/{year}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2800
diff changeset
340 middleware.DBConn(http.HandlerFunc(yearWaterlevels)))).Methods(http.MethodGet)
46a9a7c1281f Added GET /api/data/year-waterlevels/{gauge}/{year}
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2800
diff changeset
341
2741
87aed4f9b1b8 Added calculation of Nash Sutcliffe efficiency coefficents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2694
diff changeset
342 api.Handle("/data/nash-sutcliffe/{gauge}", any(&JSONHandler{
87aed4f9b1b8 Added calculation of Nash Sutcliffe efficiency coefficents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2694
diff changeset
343 Handle: nashSutcliffe,
87aed4f9b1b8 Added calculation of Nash Sutcliffe efficiency coefficents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2694
diff changeset
344 })).Methods(http.MethodGet)
87aed4f9b1b8 Added calculation of Nash Sutcliffe efficiency coefficents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2694
diff changeset
345
335
bd292a554b6e Made gemma a WFS proxy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 304
diff changeset
346 // Token handling: Login/Logout.
231
694f959ba3e7 Fixed bad route to /logout controller.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 226
diff changeset
347 api.HandleFunc("/login", login).
484
2ac37419f593 Implemented wamos/issue114 (Improve code consistency: For login use json body, disallow GET).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 474
diff changeset
348 Methods(http.MethodPost)
231
694f959ba3e7 Fixed bad route to /logout controller.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 226
diff changeset
349 api.Handle("/logout", auth.SessionMiddleware(http.HandlerFunc(logout))).
226
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
350 Methods(http.MethodGet, http.MethodPost)
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
351 api.Handle("/renew", auth.SessionMiddleware(http.HandlerFunc(renew))).
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
352 Methods(http.MethodGet, http.MethodPost)
63dd5216eee4 Refactored gemma server to be more REST-like.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
353 }