45 lines
1.1 KiB
Ruby
45 lines
1.1 KiB
Ruby
module Reports
|
|
class UserSimilarity
|
|
NOT_READY_STRING = "not ready"
|
|
|
|
attr_reader :user_id, :result
|
|
|
|
def initialize(user_id)
|
|
@user_id = user_id
|
|
end
|
|
|
|
def user
|
|
User.find(user_id)
|
|
end
|
|
|
|
def prime(endpoint = "user_similarity")
|
|
10.times do
|
|
@result = fetch_similar_user_ids(endpoint)
|
|
if @result == NOT_READY_STRING
|
|
sleep(60)
|
|
else
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
def fetch_similar_user_ids(endpoint = "user_similarity")
|
|
raise NotImplementedError.new("the Reportbooru service isn't configured. User similarity is not available.") unless Danbooru.config.reportbooru_server
|
|
|
|
params = {
|
|
"key" => Danbooru.config.reportbooru_key,
|
|
"user_id" => user_id
|
|
}
|
|
uri = URI.parse("#{Danbooru.config.reportbooru_server}/reports/#{endpoint}")
|
|
uri.query = URI.encode_www_form(params)
|
|
|
|
resp = HTTParty.get(uri, Danbooru.config.httparty_options)
|
|
if resp.success?
|
|
resp.body
|
|
else
|
|
raise "HTTP error code: #{resp.code} #{resp.message}"
|
|
end
|
|
end
|
|
end
|
|
end
|