class SocialMediaParser::Link

Public Class Methods

new(attrs) click to toggle source
# File lib/social_media_parser/link.rb, line 6
def initialize(attrs)
  attrs.each do |k,v|
    instance_variable_set("@#{k}", v) unless v.nil?
  end
end

Public Instance Methods

attributes() click to toggle source
# File lib/social_media_parser/link.rb, line 24
def attributes
  {
    url: url,
    provider: provider,
    username: username,
  }
end
provider() click to toggle source
# File lib/social_media_parser/link.rb, line 16
def provider
  nil
end
url() click to toggle source
# File lib/social_media_parser/link.rb, line 20
def url
  url_from_attributes
end
username() click to toggle source
# File lib/social_media_parser/link.rb, line 12
def username
  nil
end

Private Instance Methods

invalid_url_format?(url) click to toggle source
# File lib/social_media_parser/link.rb, line 46
def invalid_url_format?(url)
  !valid_url_format url
end
url_from_attributes() click to toggle source
# File lib/social_media_parser/link.rb, line 34
def url_from_attributes
  valid_url_format(@url) or valid_url_format(@url_or_username)
end
valid_url_format(url) click to toggle source
# File lib/social_media_parser/link.rb, line 38
def valid_url_format(url)
  uri = URI.parse(url)
  return uri.to_s if %w(http https).include?(uri.scheme)
  return "http://#{url}" if PublicSuffix.valid?(URI.parse("http://#{url}").host)
rescue URI::BadURIError, URI::InvalidURIError
  nil
end