diff options
author | Joram Wilander <jwawilander@gmail.com> | 2018-05-14 10:24:58 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-14 10:24:58 -0400 |
commit | 47250c6629416b628a19e5571ac89f7b4646418c (patch) | |
tree | 0ccfd50e06af7293e0f9e27c2d1c1200efa78a6a /web/params.go | |
parent | 7e7c55198719337e7cb39b07c0d5a48c0a6908de (diff) | |
download | chat-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.go | 197 |
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 +} |