aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/oauth.ex
diff options
context:
space:
mode:
authorIvan Tashkinov <ivantashkinov@gmail.com>2019-02-14 17:03:19 +0300
committerIvan Tashkinov <ivantashkinov@gmail.com>2019-02-14 17:03:19 +0300
commit027adbc9e5c60cd43b8857eb7a3124e6df1310c2 (patch)
tree8277e35b43db8feab0bfed0e39f6f2df08f9c3f8 /lib/pleroma/web/oauth.ex
parent949e35e26deaf6dc7c2e552b1b8db63de8a87445 (diff)
downloadpleroma-027adbc9e5c60cd43b8857eb7a3124e6df1310c2.tar.gz
[#468] Refactored OAuth scopes parsing / defaults handling.
Diffstat (limited to 'lib/pleroma/web/oauth.ex')
-rw-r--r--lib/pleroma/web/oauth.ex23
1 files changed, 11 insertions, 12 deletions
diff --git a/lib/pleroma/web/oauth.ex b/lib/pleroma/web/oauth.ex
index 761b80fde..8c78d1100 100644
--- a/lib/pleroma/web/oauth.ex
+++ b/lib/pleroma/web/oauth.ex
@@ -3,22 +3,21 @@
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.OAuth do
- def parse_scopes(nil) do
- nil
+ def parse_scopes(scopes, default) when is_list(scopes) do
+ scopes = Enum.filter(scopes, &(&1 not in [nil, ""]))
+
+ if Enum.any?(scopes),
+ do: scopes,
+ else: default
end
- def parse_scopes(scopes) when is_list(scopes) do
+ def parse_scopes(scopes, default) when is_binary(scopes) do
scopes
+ |> String.split(~r/[\s,]+/)
+ |> parse_scopes(default)
end
- def parse_scopes(scopes) do
- scopes =
- scopes
- |> to_string()
- |> String.trim()
-
- if scopes == "",
- do: [],
- else: String.split(scopes, [" ", ","])
+ def parse_scopes(_, default) do
+ default
end
end