Packages
absinthe_relay
1.5.1
1.6.0
1.5.2
1.5.1
1.5.0
1.5.0-rc.0
1.5.0-beta.0
1.5.0-alpha.0
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.4.0-rc.1
1.4.0-rc.0
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.3.0-rc.0
1.3.0-beta.1
1.3.0-beta.0
1.2.0
1.2.0-alpha0
1.2.0-alpha.3
1.2.0-alpha.2
1.2.0-alpha.1
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
Relay framework support for Absinthe
Current section
Files
Jump to
Current section
Files
lib/absinthe/relay/node/id_translator/base64.ex
defmodule Absinthe.Relay.Node.IDTranslator.Base64 do
@behaviour Absinthe.Relay.Node.IDTranslator
@moduledoc """
A basic implementation of `Absinthe.Relay.Node.IDTranslator` using Base64 encoding.
"""
@impl true
def to_global_id(type_name, source_id, _schema) do
{:ok, Base.encode64("#{type_name}:#{source_id}")}
end
@impl true
def from_global_id(global_id, _schema) do
case Base.decode64(global_id) do
{:ok, decoded} ->
case String.split(decoded, ":", parts: 2) do
[type_name, source_id] when byte_size(type_name) > 0 and byte_size(source_id) > 0 ->
{:ok, type_name, source_id}
_ ->
{:error, "Could not extract value from decoded ID `#{inspect(decoded)}`"}
end
:error ->
{:error, "Could not decode ID value `#{global_id}'"}
end
end
end