Replace the mocked services in scripts/mocked_services with Rails-level mocked services. The scripts in scripts/mocked_services were a set of stub Sinatra servers used to mock the Reportbooru, Recommender, and IQDBs services during development. They return fake data so you can test pages that use these services. Implementing these services in Rails makes it easier to run them. It also lets us drop a dependency on Sinatra and drop a use of HTTParty. To use these services, set the following configuration in danbooru_local_config.rb or .env.local: * reportbooru_server: http://localhost:3000/mock/reportbooru * recommender_server: http://localhost:3000/mock/recommender * iqdbs_server: http://localhost:3000/mock/iqdb where `http://localhost:300` is the url for your local Danbooru server (may need to be changed depending on your configuration).
49 lines
1.0 KiB
Ruby
49 lines
1.0 KiB
Ruby
class MockServicesController < ApplicationController
|
|
skip_forgery_protection
|
|
respond_to :json
|
|
|
|
before_action do
|
|
raise User::PrivilegeError if Rails.env.production?
|
|
end
|
|
|
|
def recommender_recommend
|
|
@data = posts.map { |post| [post.id, rand(0.0..1.0)] }
|
|
render json: @data
|
|
end
|
|
|
|
def recommender_similar
|
|
@data = posts.map { |post| [post.id, rand(0.0..1.0)] }
|
|
render json: @data
|
|
end
|
|
|
|
def reportbooru_missed_searches
|
|
@data = tags.map { |tag| "#{tag.name} #{rand(1.0..1000.0)}" }.join("\n")
|
|
render json: @data
|
|
end
|
|
|
|
def reportbooru_post_searches
|
|
@data = tags.map { |tag| [tag.name, rand(1..1000)] }
|
|
render json: @data
|
|
end
|
|
|
|
def reportbooru_post_views
|
|
@data = posts.map { |post| [post.id, rand(1..1000)] }
|
|
render json: @data
|
|
end
|
|
|
|
def iqdbs_similar
|
|
@data = posts.map { |post| { post_id: post.id, score: rand(0..100)} }
|
|
render json: @data
|
|
end
|
|
|
|
private
|
|
|
|
def posts(limit = 10)
|
|
Post.last(limit)
|
|
end
|
|
|
|
def tags(limit = 10)
|
|
Tag.order(post_count: :desc).limit(limit)
|
|
end
|
|
end
|