summaryrefslogtreecommitdiffstats
path: root/web/params.go
diff options
context:
space:
mode:
authorMartin Kraft <martinkraft@gmail.com>2018-05-15 07:45:28 -0400
committerMartin Kraft <martinkraft@gmail.com>2018-05-15 07:45:28 -0400
commitf82cc7896dd57c4c96471bcbbd2b1a39f908e5e7 (patch)
treed3899b890408f6f16b2d5f543bf975475f1a5584 /web/params.go
parent51bd710ecdca6628461c9fa2679737073e4d5059 (diff)
parenta1656dffa98fbc8865e476b214e4e0c562547d39 (diff)
downloadchat-f82cc7896dd57c4c96471bcbbd2b1a39f908e5e7.tar.gz
chat-f82cc7896dd57c4c96471bcbbd2b1a39f908e5e7.tar.bz2
chat-f82cc7896dd57c4c96471bcbbd2b1a39f908e5e7.zip
Merge remote-tracking branch 'origin/master' into advanced-permissions-phase-2
Diffstat (limited to 'web/params.go')
-rw-r--r--web/params.go205
1 files changed, 205 insertions, 0 deletions
diff --git a/web/params.go b/web/params.go
new file mode 100644
index 000000000..cca306844
--- /dev/null
+++ b/web/params.go
@@ -0,0 +1,205 @@
+// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package web
+
+import (
+ "net/http"
+ "strconv"
+ "strings"
+
+ "github.com/gorilla/mux"
+)
+
+const (
+ PAGE_DEFAULT = 0
+ PER_PAGE_DEFAULT = 60
+ PER_PAGE_MAXIMUM = 200
+ LOGS_PER_PAGE_DEFAULT = 10000
+ LOGS_PER_PAGE_MAXIMUM = 10000
+)
+
+type Params struct {
+ UserId string
+ TeamId string
+ InviteId string
+ TokenId string
+ ChannelId string
+ PostId string
+ FileId string
+ Filename string
+ PluginId string
+ CommandId string
+ HookId string
+ ReportId string
+ EmojiId string
+ AppId string
+ Email string
+ Username string
+ TeamName string
+ ChannelName string
+ PreferenceName string
+ EmojiName string
+ Category string
+ Service string
+ JobId string
+ JobType string
+ ActionId string
+ RoleId string
+ RoleName string
+ SchemeId string
+ Scope string
+ Page int
+ PerPage int
+ LogsPerPage int
+ Permanent bool
+}
+
+func ParamsFromRequest(r *http.Request) *Params {
+ params := &Params{}
+
+ props := mux.Vars(r)
+ query := r.URL.Query()
+
+ if val, ok := props["user_id"]; ok {
+ params.UserId = val
+ }
+
+ if val, ok := props["team_id"]; ok {
+ params.TeamId = val
+ }
+
+ if val, ok := props["invite_id"]; ok {
+ params.InviteId = val
+ }
+
+ if val, ok := props["token_id"]; ok {
+ params.TokenId = val
+ }
+
+ if val, ok := props["channel_id"]; ok {
+ params.ChannelId = val
+ } else {
+ params.ChannelId = query.Get("channel_id")
+ }
+
+ if val, ok := props["post_id"]; ok {
+ params.PostId = val
+ }
+
+ if val, ok := props["file_id"]; ok {
+ params.FileId = val
+ }
+
+ params.Filename = query.Get("filename")
+
+ if val, ok := props["plugin_id"]; ok {
+ params.PluginId = val
+ }
+
+ if val, ok := props["command_id"]; ok {
+ params.CommandId = val
+ }
+
+ if val, ok := props["hook_id"]; ok {
+ params.HookId = val
+ }
+
+ if val, ok := props["report_id"]; ok {
+ params.ReportId = val
+ }
+
+ if val, ok := props["emoji_id"]; ok {
+ params.EmojiId = val
+ }
+
+ if val, ok := props["app_id"]; ok {
+ params.AppId = val
+ }
+
+ if val, ok := props["email"]; ok {
+ params.Email = val
+ }
+
+ if val, ok := props["username"]; ok {
+ params.Username = val
+ }
+
+ if val, ok := props["team_name"]; ok {
+ params.TeamName = strings.ToLower(val)
+ }
+
+ if val, ok := props["channel_name"]; ok {
+ params.ChannelName = strings.ToLower(val)
+ }
+
+ if val, ok := props["category"]; ok {
+ params.Category = val
+ }
+
+ if val, ok := props["service"]; ok {
+ params.Service = val
+ }
+
+ if val, ok := props["preference_name"]; ok {
+ params.PreferenceName = val
+ }
+
+ if val, ok := props["emoji_name"]; ok {
+ params.EmojiName = val
+ }
+
+ if val, ok := props["job_id"]; ok {
+ params.JobId = val
+ }
+
+ if val, ok := props["job_type"]; ok {
+ params.JobType = val
+ }
+
+ if val, ok := props["action_id"]; ok {
+ params.ActionId = val
+ }
+
+ if val, ok := props["role_id"]; ok {
+ params.RoleId = val
+ }
+
+ if val, ok := props["role_name"]; ok {
+ params.RoleName = val
+ }
+
+ if val, ok := props["scheme_id"]; ok {
+ params.SchemeId = val
+ }
+
+ params.Scope = query.Get("scope")
+
+ if val, err := strconv.Atoi(query.Get("page")); err != nil || val < 0 {
+ params.Page = PAGE_DEFAULT
+ } else {
+ params.Page = val
+ }
+
+ if val, err := strconv.ParseBool(query.Get("permanent")); err != nil {
+ params.Permanent = val
+ }
+
+ if val, err := strconv.Atoi(query.Get("per_page")); err != nil || val < 0 {
+ params.PerPage = PER_PAGE_DEFAULT
+ } else if val > PER_PAGE_MAXIMUM {
+ params.PerPage = PER_PAGE_MAXIMUM
+ } else {
+ params.PerPage = val
+ }
+
+ if val, err := strconv.Atoi(query.Get("logs_per_page")); err != nil || val < 0 {
+ params.LogsPerPage = LOGS_PER_PAGE_DEFAULT
+ } else if val > LOGS_PER_PAGE_MAXIMUM {
+ params.LogsPerPage = LOGS_PER_PAGE_MAXIMUM
+ } else {
+ params.LogsPerPage = val
+ }
+
+ return params
+}