Files
danbooru/app/logical/reports/user_similarity.rb
2017-07-12 15:52:48 -07:00

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