101 lines
3.0 KiB
Ruby
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
|