docbrown/app/services/html/image_uri.rb
2023-05-17 17:09:47 -04:00

43 lines
822 B
Ruby

module Html
class ImageUri
GITHUB_CAMO = {
scheme: "https",
host: "camo.githubusercontent.com"
}.freeze
GITHUB_BADGE = {
scheme: "https",
host: "github.com",
filename: "badge.svg"
}.freeze
attr_reader :uri, :original_source
delegate :scheme, :host, :path, to: :uri
def initialize(src)
@uri = URI(src)
@original_source = src
end
def allowed?
github_camo_user_content? || github_badge?
end
def github_badge?
scheme == GITHUB_BADGE[:scheme] &&
host == GITHUB_BADGE[:host] &&
filename == GITHUB_BADGE[:filename]
end
def github_camo_user_content?
scheme == GITHUB_CAMO[:scheme] && host == GITHUB_CAMO[:host]
end
private
def filename
File.basename path
end
end
end