module Downloads
  module RewriteStrategies
    class ArtStation < Base
      def rewrite(url, headers, data = {})
        # example: https://cdnb3.artstation.com/p/assets/images/images/003/716/071/large/aoi-ogata-hate-city.jpg?1476754974
        if url =~ %r!^https?://cdn\w*\.artstation\.com/p/assets/images/images/\d+/\d+/\d+/(?:medium|small|large)/!
          original_url, headers = rewrite_large_url(url, headers)
          if http_exists?(original_url, headers)
            url = original_url
          end
        else
          url, headers = rewrite_html_url(url, headers)
        end

        return [url, headers, data]
      end

    protected
      def rewrite_html_url(url, headers)
        return [url, headers] unless Sources::Strategies::ArtStation.url_match?(url)

        source = Sources::Site.new(url)
        source.get
        [source.image_url, headers]
      end

      def rewrite_large_url(url, headers)
        # example: https://cdnb3.artstation.com/p/assets/images/images/003/716/071/original/aoi-ogata-hate-city.jpg?1476754974
        url = url.sub(%r!/(?:medium|small|large)/!, "/original/")
        return [url, headers]
      end
    end
  end
end
