[#468] Refactored OAuth scopes parsing / defaults handling.
[akkoma] / lib / pleroma / web / oauth.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.OAuth do
6 def parse_scopes(scopes, default) when is_list(scopes) do
7 scopes = Enum.filter(scopes, &(&1 not in [nil, ""]))
8
9 if Enum.any?(scopes),
10 do: scopes,
11 else: default
12 end
13
14 def parse_scopes(scopes, default) when is_binary(scopes) do
15 scopes
16 |> String.split(~r/[\s,]+/)
17 |> parse_scopes(default)
18 end
19
20 def parse_scopes(_, default) do
21 default
22 end
23 end