module Medivo class LabsController < ActionController::Base def index lab_data = Medivo::Lab.data_for_zip(params[:zip_code]) render :json=> lab_data end def find_appointment data = Medivo::Appointment.find(params[:lab_code], params[:date], params[:am_pm]) render :json=> {times: data} rescue => e appointment_error_handler(e) end def make_appointment data = Medivo::Appointment.make(params[:lab_code], params[:time], params[:user]) render :json=> data rescue Exception => e appointment_error_handler(e) end def appointment_error_handler(e) case e when RestClient::RequestTimeout, RestClient::InternalServerError render :status=> e.http_code, json: {message: "Could be lab_code is wrong, or labcorp server is down"} when RestClient::Exception render :status=> e.http_code, json: {message: e.response} else render :status=> 500, json: {message: e.message} end end end end