jam-cloud/web/lib/utils.rb

63 lines
1.8 KiB
Ruby

class Utils
USERNAME_SITES = %W{youtube facebook soundcloud bandcamp fandalism twitter reverbnation}
SITE_TYPES = ['url'].concat(USERNAME_SITES)
def self.username_url(username, site)
case site
when 'youtube'
"https://www.youtube.com/c/#{username}"
when 'facebook'
"https://www.facebook.com/#{username}"
when 'soundcloud'
"https://soundcloud.com/#{username}"
when 'bandcamp'
"http://#{username}.bandcamp.com"
when 'bandcamp-fan'
"http://bandcamp.com/#{username}"
when 'fandalism'
"http://fandalism.com/#{username}"
when 'twitter'
"https://twitter.com/#{username}"
when 'reverbnation'
"http://www.reverbnation.com/#{username}"
else
nil
end
end
def self.site_validator(url, site=nil)
uagent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36"
curl_args = "-A '#{uagent}' --silent --head --fail --show-error "
case site
when 'bandcamp'
cmd = "curl #{curl_args} '#{url}' 2>&1"
result = `#{cmd}`.chomp
if $?.success?
if /^HTTP\/\d+\.\d+ 2\d\d OK/ =~ result.lines[0]
return nil
else
if /http:\/\/(.*)\.bandcamp.com/ =~ url
return self.site_validator(self.username_url($1, 'bandcamp-fan'), 'bandcamp-fan')
end
return "Unrecognized url (#{url})"
end
else
result =~ /curl: \(\d+\) (.*)/
return "#{$1} (#{url})"
end
else
curl_args << "-L --output /dev/null "
cmd = "curl #{curl_args} '#{url}' 2>&1"
result = `#{cmd}`.chomp
end
if $?.success?
return nil
else
result =~ /curl: \(\d+\) (.*)/
return "#{$1} (#{url})"
end
end
end