defmodule Pinbacker do
@moduledoc """
Documentation for `Pinbacker`.
"""
alias Pinbacker.{PathParser, Downloader, Metadata}
require Logger
def fetch(url, parent) do
case PathParser.parse(url) do
{:ok, :pin, pin_id} ->
Downloader.save_single_pin(pin_id, parent)
{:ok, :section, section_path} ->
Downloader.save_section(section_path, parent)
{:ok, :board, board_path} ->
Downloader.save_board(board_path, parent)
{:ok, :username, username} ->
boards = Metadata.get_links(:username, [username])
Logger.info("Found #{length(boards)} boards for #{username}..")
for board <- boards do
Downloader.save_board([username, Map.get(board, "slug")], parent)
end
{:error, error} ->
Logger.error("Error: #{error}")
end
Logger.info("Done")
true
end
end