# frozen_string_literal: true

class Source::URL::HentaiFoundry < Source::URL
  attr_reader :username, :work_id, :file

  def self.match?(url)
    url.domain == "hentai-foundry.com"
  end

  def parse
    case [subdomain, domain, *path_segments]

    # https://pictures.hentai-foundry.com/a/Afrobull/795025/Afrobull-795025-kuroeda.png
    # https://pictures.hentai-foundry.com/_/-MadKaiser-/532792/-MadKaiser--532792-FFXIV_Miqote.png
    in "pictures", "hentai-foundry.com", _, username, /^\d+$/ => work_id, file
      @file = file
      @username = username
      @work_id = work_id

    # http://pictures.hentai-foundry.com//s/soranamae/363663.jpg
    in "pictures", "hentai-foundry.com", _, username, /^(\d+)\.\w+$/ => file
      @file = file
      @username = username
      @work_id = $1

    # http://www.hentai-foundry.com/piccies/d/dmitrys/1183.jpg
    in _, "hentai-foundry.com", "piccies", _, username, /^(\d+)\.\w+$/ => file
      @file = file
      @username = username
      @work_id = $1

    # https://www.hentai-foundry.com/pictures/user/Afrobull/795025
    # https://www.hentai-foundry.com/pictures/user/Afrobull/795025/kuroeda
    in _, "hentai-foundry.com", "pictures", "user", username, /^\d+$/ => work_id, *slug
      @username = username
      @work_id = work_id

    # http://www.hentai-foundry.com/pic-795025
    # http://www.hentai-foundry.com/pic-149160.html
    # http://www.hentai-foundry.com/pic-149160.php
    # http://www.hentai-foundry.com/pic_full-66045.php
    in _, "hentai-foundry.com", /^pic\w*-(\d+)/
      @work_id = $1

    # https://thumbs.hentai-foundry.com/thumb.php?pid=795025&size=350
    in "thumbs", "hentai-foundry.com", "thumb.php" if params[:pid].present?
      @work_id = params[:pid]

    # https://www.hentai-foundry.com/user/kajinman
    # https://www.hentai-foundry.com/user/kajinman/profile
    # https://www.hentai-foundry.com/user/J-likes-to-draw/profile
    in _, "hentai-foundry.com", "user", username, *slug
      @username = username

    # https://www.hentai-foundry.com/pictures/user/kajinman
    # https://www.hentai-foundry.com/pictures/user/kajinman/scraps
    in _, "hentai-foundry.com", "pictures", "user", username, *slug
      @username = username

    # http://www.hentai-foundry.com/user-RockCandy.php
    # http://www.hentai-foundry.com/profile-sawao.php
    in _, "hentai-foundry.com", /^(?:user|profile)-([^.]+)\.php$/
      @username = $1

    else
      nil
    end
  end

  def image_url?
    file.present? || host == "thumbs.hentai-foundry.com"
  end

  def page_url
    if username.present? && work_id.present?
      "https://www.hentai-foundry.com/pictures/user/#{username}/#{work_id}"
    elsif work_id.present?
      "https://www.hentai-foundry.com/pic-#{work_id}"
    end
  end

  def profile_url
    "https://www.hentai-foundry.com/user/#{username}" if username.present?
  end
end
