jam-cloud/web/app/controllers/api_jamblasters_controller.rb

101 lines
3.0 KiB
Ruby

class ApiJamblastersController < ApiController
before_filter :api_signed_in_user, except: [:login, :store_token]
respond_to :json
def get_tokens
@jamblasters = current_user.jamblasters
end
def start_pairing
jamblaster = Jamblaster.find_by_client_id(params[:jbid])
if jamblaster && !current_user.jamblasters.include?(jamblaster)
render :json => {reason: "jamblaster_access", message: "current user does not have access to jamblaster #{jamblaster.id}"}, status: 403
return
end
@pairing = JamblasterPairingRequest.new
@pairing.user = current_user
@pairing.jamblaster_client_id = params[:jbid]
@pairing.jamblaster = jamblaster
@pairing.sibling_client_id = params[:scid]
@pairing.sibling_key = params[:key]
if !@pairing.save
respond_with_model(@pairing)
else
end
end
def login
scid = params[:scid]
jbid = params[:jbid]
key = params[:key]
serial_no = params[:serial_no]
pairing_request = JamblasterPairingRequest.where(jamblaster_client_id: jbid).where(sibling_client_id: scid).where(sibling_key: key).first
jamblaster = Jamblaster.find_by_serial_no(serial_no)
if jamblaster.nil?
render :json => { :message => 'No jamblaster found with serial_no ' + serial_no, reason: "serial_no" }, :status => 404
return
end
if pairing_request.nil?
render :json => { :message => "No pairing request found with jbid=#{jbid} && sibling_client_id=#{scid} && sibling_key=#{key}", reason: "no_pairing_request" }, :status => 404
return
end
render :json => {remember_token: pairing_request.user.remember_token}, :status => 200
end
def store_token
vtoken = params[:vtoken]
scid = params[:scid]
jbid = params[:jbid]
key = params[:key]
pairing_request = JamblasterPairingRequest.where(jamblaster_client_id: jbid).where(sibling_client_id: scid).where(sibling_key: key).first
if pairing_request.nil?
render :json => { :message => "No pairing request found with jbid=#{jbid} && sibling_client_id=#{scid} && sibling_key=#{key}", reason: "no_pairing_request" }, :status => 404
return
end
if vtoken.blank?
render :json => { :errors => { vtoken: ['is empty'] } }, :status => 422
return
end
@jamblaster = pairing_request.jamblaster
@jamblaster.vtoken = vtoken
if !@jamblaster.save
respond_with_model(@jamblaster)
else
end
end
def pair
vtoken = params[:vtoken]
scid = params[:scid]
jbid = params[:jbid]
jamblaster = Jamblaster.find_by_vtoken(vtoken)
if jamblaster.nil?
render :json => {reason: "no_vtoken", message: "No jamblaster found with vtoken:#{vtoken}" }, status: 404
return
end
if !current_user.jamblasters.include?(jamblaster)
render :json => {reason: "jamblaster_access", message: "current user does not have access to jamblaster #{jamblaster.id} with vtoken #{vtoken}"}, status: 403
return
end
Jamblaster.send_pair_attempt(jbid, scid, vtoken)
@jamblaster = jamblaster
end
end