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