Crowdin / Upload translations / upload-translations (push) Skipped
Historical data migration test / test (14-alpine) (push) Canceled after 0s
Historical data migration test / test (15-alpine) (push) Canceled after 0s
Historical data migration test / test (16-alpine) (push) Canceled after 0s
Historical data migration test / test (17-alpine) (push) Canceled after 0s
Bundler Audit / security (push) Canceled after 0s
Haml Linting / lint (push) Canceled after 0s
JavaScript Linting / lint (push) Canceled after 0s
Ruby Linting / lint (push) Canceled after 0s
JavaScript Testing / test (push) Canceled after 0s
Ruby Testing / build (production) (push) Canceled after 0s
Ruby Testing / test (.ruby-version) (push) Canceled after 0s
Ruby Testing / test (3.3) (push) Canceled after 0s
Ruby Testing / test (3.4) (push) Canceled after 0s
Ruby Testing / End to End testing (.ruby-version) (push) Canceled after 0s
Ruby Testing / End to End testing (3.3) (push) Canceled after 0s
Ruby Testing / End to End testing (3.4) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:7.17.29) (push) Canceled after 0s
Check i18n / check-i18n (push) Canceled after 0s
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (javascript) (push) Canceled after 0s
CodeQL / Analyze (ruby) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (.ruby-version, opensearchproject/opensearch:2) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (3.3, docker.elastic.co/elasticsearch/elasticsearch:7.17.29) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (3.4, docker.elastic.co/elasticsearch/elasticsearch:7.17.29) (push) Canceled after 0s
Check formatting / lint (push) Canceled after 0s
CSS Linting / lint (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:8.19.2) (push) Canceled after 0s
Chromatic / Check for relevant changes (push) Canceled after 0s
Chromatic / Run Chromatic (push) Canceled after 0s
Snapshot of upstream tag v4.7.3 (commit 8ff11c2bb7b9f0714e947b10fa3629c6542c7121) from https://github.com/mastodon/mastodon, unmodified.
53 lines
1.1 KiB
Ruby
53 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class Api::V1::Peers::SearchController < Api::BaseController
|
|
before_action :require_enabled_api!
|
|
before_action :set_domains
|
|
|
|
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
|
|
skip_around_action :set_locale
|
|
|
|
LIMIT = 10
|
|
|
|
vary_by ''
|
|
|
|
def index
|
|
cache_even_if_authenticated!
|
|
render json: @domains
|
|
end
|
|
|
|
private
|
|
|
|
def require_enabled_api!
|
|
head 404 unless Setting.peers_api_enabled && !limited_federation_mode?
|
|
end
|
|
|
|
def set_domains
|
|
return if params[:q].blank?
|
|
|
|
if Chewy.enabled?
|
|
@domains = InstancesIndex.query(function_score: {
|
|
query: {
|
|
prefix: {
|
|
domain: normalized_domain,
|
|
},
|
|
},
|
|
|
|
field_value_factor: {
|
|
field: 'accounts_count',
|
|
modifier: 'log2p',
|
|
},
|
|
}).limit(LIMIT).pluck(:domain)
|
|
else
|
|
domain = normalized_domain
|
|
@domains = Instance.searchable.domain_starts_with(domain).limit(LIMIT).pluck(:domain)
|
|
end
|
|
rescue Addressable::URI::InvalidURIError
|
|
@domains = []
|
|
end
|
|
|
|
def normalized_domain
|
|
TagManager.instance.normalize_domain(params[:q])
|
|
end
|
|
end
|