diff options
author | Ivan Tashkinov <ivantashkinov@gmail.com> | 2019-02-14 17:03:19 +0300 |
---|---|---|
committer | Ivan Tashkinov <ivantashkinov@gmail.com> | 2019-02-14 17:03:19 +0300 |
commit | 027adbc9e5c60cd43b8857eb7a3124e6df1310c2 (patch) | |
tree | 8277e35b43db8feab0bfed0e39f6f2df08f9c3f8 /lib/pleroma/web/oauth.ex | |
parent | 949e35e26deaf6dc7c2e552b1b8db63de8a87445 (diff) | |
download | pleroma-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.ex | 23 |
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 |