class Api::V3::ProtocolsController
Has to be authenticated with :user_email and :user_token
Information returns in <protocol_info>;
{ id: 144, name: "ePBR Phi2 (revised2)", slug: "epbr-phi2-revised2", description: "Testing Stirring with ePBR measuring Phi2", pre_selected: null, macro_id: 7, protocol_json: { pulses: [20,20,50,20], averages: 3, averages_delay: 5, get_ir_baseline: [15,14], pulsesize: 75, pulsedistance: 10000, act1_lights: [0,0,16,0], act2_lights: [0,0,15,0], act_intensities: [250,250,250,250], cal_intensities: [4095,0,0,0], meas_intensities: [4000,4000,4000,4000], detectors: [ [34],[34],[34],[34] ], meas_lights: [ [20],[20],[20],[20] ], measurements: 1, measurements_delay: 0, get_offset: 1, protocol_id: 144 }, created_at: "2015-03-19T19:52:11.283Z", updated_at: "2015-03-19T21:32:23.905Z", is_deleted: false, macro: { id: 7, name: "Chlorophyll Fluorescence", slug: "integrated-fluorescence", description: "This calculates baseline, fv/fm..... Note that Fv/Fm and Phi2 are equal under dark conditions!", default_y_axis: "", default_x_axis: "", javascript_code: "var data = json.data_raw;.....; return output;", json_data: "{....}", created_at: "2014-07-15T13:07:54.167Z", updated_at: "2015-02-03T20:07:20.360Z", is_deleted: false, creator: { name: "Greg Austic", id: 3, email: "gbathree@gmail.com", bio: "Project lead at PhotosynQ!", institute: "Michigan State University", profile_url: "http://localhost:3000/users/greg-austic", contributions: 2480, projects: 37, collaborations: 21, avatar: { original: "http://localhost:3000/uploads/user/avatar/3/012409_pbi_160_low_low_res_headshot.jpg", thumb: "http://localhost:3000/uploads/user/avatar/3/thumb_012409_pbi_160_low_low_res_headshot.jpg", medium: "http://localhost:3000/uploads/user/avatar/3/medium_012409_pbi_160_low_low_res_headshot.jpg" }, latest_activity: "2015-04-01T19:57:23.649Z", badges: [{ name: "", url: "" }] } }, creator: { name: "Christopher", id: 25, email: "czatzke@gmail.com", bio: "<i>I LOVE PHOTOSYNQ!!!</i>", institute: "Zatzke", profile_url: "http://localhost:3000/users/christopher", contributions: 158, projects: 1, collaborations: 0, avatar: { original: "http://localhost:3000/assets/avatar.png", thumb: "http://localhost:3000/assets/thumb_avatar.png", medium: "http://localhost:3000/assets/medium_avatar.png" }, latest_activity: "2015-03-18T17:34:43.026Z", badges: [{ name: "", url: "" }] } }
Public Instance Methods
Creates a protocol
POST /api/v3/protocols.json
Input params:
:protocol => { :name=>“???”, :description=>“???”, :protocol_catgegory_id=>“???”, :protocol_json =>“???”, :macro_id =>“???”}
Ex:
post :create, {:user_email => foo@bar.com, :user_token => "xxxxxxx", :protocol => {:name=>"Protocol-1", :description=>"Protocol Description", :protocol_catgegory_id=> "???" , :protocol_json =>"???", :macro_id =>"???"}, :format => :json}
Output:
On success - {:status => "success", :notice => "...", :protocol => <protocol_info>} On failed - {:status => "failed", :notice => "..."}
# File app/controllers/api/v3/protocols_controller.rb, line 225 def create @protocol = Protocol.new(params[:protocol]) @protocol.user_id = current_user.id @protocol.save end
Returns list of protocols
GET /api/v3/protocols.json
Input params:
:user_id
If :user_id is set; returns all the protocols the current user has created.
If :user_id is not set; returns all the protocols.
Ex:
get :index, {:include_deleted => true, :user_email => foo@bar.com, :user_token => "xxxxxxx", :user_id => "xx", :format => :json}
Output:
On success - {:status => "success", :protocols => [<protocol_info>, ...]} On failed - {:status => "failed", :notice => "..."}
Note: To list all protocols (including deleted), need to pass 'include_deleted=true'
GET /api/v3/protocols.json?include_deleted=true
To list the protocols for only given ids, need to pass 'ids' parameter with comma separated protocol ids
GET /api/v3/protocols.json?ids=72,57,44
To filter only the preselected protocols, need to pass 'preselected=true'
GET /api/v3/protocols.json?preselected=true
# File app/controllers/api/v3/protocols_controller.rb, line 138 def index if params[:include_deleted] == "true" @protocols = Protocol.unscoped.all else @protocols = Protocol.all end if params[:ids].present? protocol_ids = params[:ids].to_s.split(",").compact.uniq @protocols = @protocols.where(id: protocol_ids).order("id") return end if params[:user_id] @protocols = @protocols.where(user_id:params[:user_id]) end if params[:preselected] == "true" @protocols = @protocols.where(pre_selected: true) end @protocols end
Returns list of protocols with id & hash
GET /api/v3/protocols_hashes.json
Ex:
get :protocols_hashes, {:user_email => foo@bar.com, :user_token => "xxxxxxx", :format => :json}
Output:
On success - {:status => "success", :protocols => [{id: xx, md5hash: "1c..835"}, ...]} On failed - {:status => "failed", :notice => "..."}
# File app/controllers/api/v3/protocols_controller.rb, line 175 def protocols_hashes @protocols = Protocol.order("id").page(params[:page].to_i).per(1000) end
Returns an individual protocol
GET /api/v3/protocols/:id.json
Input params:
:id - protocol id requested
Ex:
get :show, {:user_email => foo@bar.com, :user_token => "xxxxxxx", :id => 1, :format => :json}
Output:
On success - {:status => "success", :protocol => <protocol_info>} On failed - {:status => "failed", :notice => "..."}
# File app/controllers/api/v3/protocols_controller.rb, line 198 def show @protocol = Protocol.unscoped.where(:id => params[:id]).first end
Updates a protocol
PUT /api/v3/protocols/:id.json
Input params:
:id // requested protocol_id, :protocol => { :name=>“???”, :description=>“???”, :protocol_catgegory_id=>“???”, :protocol_json =>“???”, :macro_id =>“???”}
Ex:
put :create, {:user_email => foo@bar.com, :user_token => "xxxxxxx", :id => "xxx", :protocol => {:name=>"Protocol-1", :description=>"Protocol Description", :protocol_catgegory_id=>"???", :protocol_json =>"???", :macro_id =>"???"}, :format => :json}
Output:
On success - {:status => "success", :notice => "...", :protocol => <protocol_info>} On failed - {:status => "failed", :notice => "..."}
# File app/controllers/api/v3/protocols_controller.rb, line 255 def update @protocol = Protocol.where(id: params[:id]).first if @protocol && @protocol.user_id.eql?(current_user.id) @protocol.update_attributes(params[:protocol]) end end