Packages
indieweb
0.0.35
0.0.66
0.0.65
0.0.64
0.0.63
0.0.62
0.0.61
0.0.60
0.0.59
0.0.58
0.0.56
0.0.55
0.0.54
0.0.53
0.0.51
0.0.50
0.0.49
0.0.48
0.0.47
0.0.46
0.0.42
0.0.41
0.0.40
0.0.39
0.0.38
0.0.37
0.0.36
0.0.35
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.29
0.0.28
0.0.27
0.0.26
0.0.25
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.3
0.0.2
0.0.1
Collection of common IndieWeb utilites like authorship resolution, Webmention, post type discovery and IndieAuth.
Current section
Files
Jump to
Current section
Files
lib/indieweb/auth/scope.ex
defmodule IndieWeb.Auth.Scope do
@moduledoc """
Handles scope information and referencing for the IndieAuth flow.
"""
@separator " "
@spec persist!(binary(), binary()) :: :ok
def persist!(code, scope)
def persist!(code, ""), do: persist!(code, "read")
def persist!(code, scope) when is_list(scope), do: persist!(code, __MODULE__.to_string(scope))
def persist!(code, scope) do
:ok = IndieWeb.Auth.adapter().scope_persist(code, scope)
end
@spec get(binary()) :: binary() | nil
def get(code) do
case IndieWeb.Auth.adapter().scope_get(code) do
scope when not is_nil(scope) -> scope |> from_string
_ -> nil
end
end
def from_string(scope_string) when is_binary(scope_string),
do: String.split(scope_string, @separator, trim: true)
def to_string(scopes) when is_list(scopes),
do: Enum.join(scopes, @separator)
def can_upload?(scope) when is_list(scope), do: Enum.member?(scope, "media")
end