96 lines
3.1 KiB
Ruby
96 lines
3.1 KiB
Ruby
class ApiSearchController < ApiController
|
|
|
|
# have to be signed in currently to see this screen
|
|
before_filter :api_signed_in_user, :except => :jam_tracks
|
|
|
|
respond_to :json
|
|
|
|
def index
|
|
if 1 == params[Search::PARAM_MUSICIAN].to_i || 1 == params[Search::PARAM_BAND].to_i
|
|
query = params.clone
|
|
query[:remote_ip] = request.remote_ip
|
|
if 1 == query[Search::PARAM_MUSICIAN].to_i
|
|
@search = Search.musician_filter(query, current_user)
|
|
else
|
|
@search = Search.band_filter(query, current_user)
|
|
end
|
|
respond_with @search, responder: ApiResponder, :status => 200
|
|
elsif 1 == params[Search::PARAM_SESSION_INVITE].to_i
|
|
@search = Search.session_invite_search(params[:query], current_user)
|
|
else
|
|
@search = Search.text_search(params, current_user)
|
|
end
|
|
end
|
|
|
|
def musicians
|
|
if request.get?
|
|
if params[:results]
|
|
@search = MusicianSearch.user_search_filter(current_user).search_results_page
|
|
respond_with @search, responder: ApiResponder, status: 201, template: 'api_search/index'
|
|
else
|
|
render :json => MusicianSearch.search_filter_json(current_user), :status => 200
|
|
end
|
|
|
|
elsif request.post?
|
|
sobj = MusicianSearch.user_search_filter(current_user)
|
|
filter = params[:filter]
|
|
if filter == 'reset'
|
|
@search = sobj.reset_search_results
|
|
else
|
|
json = JSON.parse(filter, :create_additions => false)
|
|
@search = sobj.search_results_page(json, [params[:page].to_i, 1].max)
|
|
end
|
|
respond_with @search, responder: ApiResponder, status: 201, template: 'api_search/index'
|
|
end
|
|
end
|
|
|
|
def bands
|
|
if request.get?
|
|
if params[:results]
|
|
@search = BandSearch.user_search_filter(current_user).search_results_page(params[:subtype])
|
|
respond_with @search, responder: ApiResponder, status: 201, template: 'api_search/index'
|
|
else
|
|
render :json => BandSearch.search_filter_json(current_user, params[:subtype]), :status => 200
|
|
end
|
|
|
|
elsif request.post?
|
|
sobj = BandSearch.user_search_filter(current_user)
|
|
filter = params[:filter]
|
|
if filter == 'reset'
|
|
@search = sobj.reset_search_results(params[:subtype])
|
|
else
|
|
json = JSON.parse(filter, :create_additions => false)
|
|
@search = sobj.search_results_page(params[:subtype], json, [params[:page].to_i, 1].max)
|
|
end
|
|
respond_with @search, responder: ApiResponder, status: 201, template: 'api_search/index'
|
|
end
|
|
end
|
|
|
|
def jam_tracks
|
|
if request.get?
|
|
if params[:iso639]
|
|
render(json: JamTrackSearch.all_languages.to_json, status: 200)
|
|
|
|
elsif params[:indexed]
|
|
fname = "#{Rails.root}/tmp/jtx_indices.json"
|
|
|
|
unless File.exists?(fname) && File.size(fname) > 0
|
|
SampleApp::Application.load_tasks
|
|
Rake::Task["mobile:jam_tracks_json"].invoke
|
|
end
|
|
render(file: fname)
|
|
|
|
else
|
|
render(json: {}, status: 200)
|
|
end
|
|
|
|
elsif request.post?
|
|
jts = JamTrackSearch.new
|
|
filter = request.params[:api_search]
|
|
result = jts.search_results_page(filter)
|
|
render(json: result.to_json, status: 200)
|
|
end
|
|
end
|
|
|
|
end
|