summaryrefslogtreecommitdiffstats
path: root/web/params.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2018-05-14 10:24:58 -0400
committerGitHub <noreply@github.com>2018-05-14 10:24:58 -0400
commit47250c6629416b628a19e5571ac89f7b4646418c (patch)
tree0ccfd50e06af7293e0f9e27c2d1c1200efa78a6a /web/params.go
parent7e7c55198719337e7cb39b07c0d5a48c0a6908de (diff)
downloadchat-47250c6629416b628a19e5571ac89f7b4646418c.tar.gz
chat-47250c6629416b628a19e5571ac89f7b4646418c.tar.bz2
chat-47250c6629416b628a19e5571ac89f7b4646418c.zip
Refactor context out of API packages (#8755)
* Refactor context out of API packages * Update function names per feedback * Move webhook handlers to web and fix web tests * Move more webhook tests out of api package * Fix static handler
Diffstat (limited to 'web/params.go')
-rw-r--r--web/params.go197
1 files changed, 197 insertions, 0 deletions
diff --git a/web/params.go b/web/params.go
new file mode 100644
index 000000000..286c3f44f
--- /dev/null
+++ b/web/params.go
@@ -0,0 +1,197 @@
+// 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
+ 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, 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
+}