Current section

Files

Jump to
contentful lib contentful_delivery assets.ex
Raw

lib/contentful_delivery/assets.ex

defmodule Contentful.Delivery.Assets do
@moduledoc """
Deals with the loading of assets from a given `Contentful.Space`
https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/assets
"""
alias Contentful.{Asset, Queryable, SysData}
@behaviour Queryable
@endpoint "/assets"
@doc """
Returns the endpoint for assets
"""
@impl Queryable
def endpoint do
@endpoint
end
@impl Queryable
def resolve_entity_response(%{
"fields" => %{
"description" => desc,
"file" => %{
"contentType" => content_type,
"details" => details,
"fileName" => file_name,
"url" => url
},
"title" => title
},
"sys" => %{"id" => id, "revision" => rev}
}) do
asset = %Asset{
sys: %SysData{id: id, revision: rev},
fields: %Asset.Fields{
title: title,
description: desc,
file: %{
content_type: content_type,
url: URI.parse(url),
file_name: file_name,
details: details
}
}
}
{:ok, asset}
end
@impl Queryable
def resolve_collection_response(%{"items" => items, "total" => total}) do
assets =
items
|> Enum.map(&resolve_entity_response/1)
|> Enum.map(fn {:ok, asset} -> asset end)
{:ok, assets, total: total}
end
end