VRFS-2698 implemented site_validator
This commit is contained in:
parent
90f3d9efe1
commit
e466ca0f5a
|
|
@ -711,7 +711,7 @@ class ApiUsersController < ApiController
|
|||
url = Utils.username_url(data, site)
|
||||
end
|
||||
unless url.blank?
|
||||
if errmsg = Utils.site_validator(url)
|
||||
if errmsg = Utils.site_validator(url, site)
|
||||
render json: { message: 'Invalid Site', errors: { site: [errmsg] } }, status: 200
|
||||
else
|
||||
render json: { message: 'Valid Site' }, status: 200
|
||||
|
|
|
|||
|
|
@ -7,12 +7,14 @@ class Utils
|
|||
case site
|
||||
when 'youtube'
|
||||
"https://www.youtube.com/c/#{username}"
|
||||
when 'facebook' #
|
||||
when 'facebook'
|
||||
"https://www.facebook.com/#{username}"
|
||||
when 'soundcloud' #
|
||||
when 'soundcloud'
|
||||
"https://soundcloud.com/#{username}"
|
||||
when 'bandcamp' #
|
||||
when 'bandcamp'
|
||||
"http://#{username}.bandcamp.com"
|
||||
when 'bandcamp-fan'
|
||||
"http://bandcamp.com/#{username}"
|
||||
when 'fandalism'
|
||||
"http://fandalism.com/#{username}"
|
||||
when 'twitter'
|
||||
|
|
@ -24,8 +26,31 @@ class Utils
|
|||
end
|
||||
end
|
||||
|
||||
def self.site_validator(url)
|
||||
result = `curl --output /dev/null --silent --head --fail --show-error '#{url}' 2>&1`.chomp
|
||||
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
|
||||
|
|
|
|||
Loading…
Reference in New Issue