class LimeSurvey::Api
Constants
- URL_ENDPOINT
Attributes
password[RW]
token[RW]
username[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/lime_survey/api.rb, line 9 def initialize(options = {}) @username = options.fetch(:username, default_username) @password = options.fetch(:password, default_password) @token = options.dig(:token) end
Public Instance Methods
activate_survey(survey_id:)
click to toggle source
LimeSurvey::Api.new
.activate_survey survey_id: 1
# File lib/lime_survey/api.rb, line 16 def activate_survey(survey_id:) authenticated_post "activate_survey", [survey_id].compact end
activate_tokens(survey_id:, attribute_fields: [])
click to toggle source
LimeSurvey::Api.new
.activate_tokens survey_id: 1, attribute_fields: [3,5,7]
# File lib/lime_survey/api.rb, line 21 def activate_tokens(survey_id:, attribute_fields: []) authenticated_post "activate_tokens", [survey_id, attribute_fields] end
add_group(survey_id:, group_title: , group_description: '' )
click to toggle source
LimeSurvey::Api.new
.add_group
# File lib/lime_survey/api.rb, line 26 def add_group(survey_id:, group_title: , group_description: '' ) authenticated_post "add_group", [survey_id, group_title, group_description] end
add_language(survey_id: , language: )
click to toggle source
# File lib/lime_survey/api.rb, line 30 def add_language(survey_id: , language: ) authenticated_post "add_language", [survey_id, language] end
add_participants(survey_id: , participant_data: [], create_token: true)
click to toggle source
# File lib/lime_survey/api.rb, line 34 def add_participants(survey_id: , participant_data: [], create_token: true) authenticated_post "add_participants", [survey_id, participant_data, create_token] end
add_response(survey_id: , response_data: [])
click to toggle source
# File lib/lime_survey/api.rb, line 38 def add_response(survey_id: , response_data: []) authenticated_post "add_response", [survey_id, response_data] end
add_survey(survey_id: , survey_title: , survey_language: , format: 'G' )
click to toggle source
Format can be A|G|S LimeSurvey::Api.new
.add_survey survey_id: 1234, survey_title: “Survey 1234”, survey_language: “en”, format: “A”
# File lib/lime_survey/api.rb, line 44 def add_survey(survey_id: , survey_title: , survey_language: , format: 'G' ) authenticated_post "add_survey", [survey_id, survey_title, survey_language, format] end
authenticated_post(method_name, params = [])
click to toggle source
# File lib/lime_survey/api.rb, line 217 def authenticated_post(method_name, params = []) check_authentication post method_name, params end
check_authentication()
click to toggle source
# File lib/lime_survey/api.rb, line 227 def check_authentication if token return self else authenticate! end end
copy_survey(survey_id: , survey_name: )
click to toggle source
# File lib/lime_survey/api.rb, line 48 def copy_survey(survey_id: , survey_name: ) authenticated_post "copy_survey", [survey_id, survey_name] end
cpd_import_participants(participants: [])
click to toggle source
# File lib/lime_survey/api.rb, line 52 def cpd_import_participants(participants: []) authenticated_post "cpd_importParticipants", [participants] end
delete_group(survey_id: , group_id: )
click to toggle source
# File lib/lime_survey/api.rb, line 56 def delete_group(survey_id: , group_id: ) authenticated_post "delete_group", [survey_id, group_id] end
delete_language(survey_id: , language: )
click to toggle source
# File lib/lime_survey/api.rb, line 60 def delete_language(survey_id: , language: ) authenticated_post "delete_language", [survey_id, language] end
delete_participants(survey_id: , participants: [])
click to toggle source
# File lib/lime_survey/api.rb, line 64 def delete_participants(survey_id: , participants: []) authenticated_post "delete_participants", [survey_id, participants] end
delete_question(question_id: )
click to toggle source
# File lib/lime_survey/api.rb, line 68 def delete_question(question_id: ) authenticated_post "delete_question", [question_id] end
delete_survey(survey_id: )
click to toggle source
# File lib/lime_survey/api.rb, line 72 def delete_survey(survey_id: ) authenticated_post "delete_survey", [survey_id] end
export_responses(survey_id: , document_type: 'json', language_code: 'en', completion_status: 'complete', heading_type: nil, response_type: nil, from_response_id: 0, to_response_id: 1_000_000, fields: nil)
click to toggle source
document types: pdf, csv, xls, doc, json-rpc
# File lib/lime_survey/api.rb, line 77 def export_responses(survey_id: , document_type: 'json', language_code: 'en', completion_status: 'complete', heading_type: nil, response_type: nil, from_response_id: 0, to_response_id: 1_000_000, fields: nil) authenticated_post "export_responses", [survey_id, document_type, language_code, completion_status, heading_type, response_type, from_response_id, to_response_id, fields] end
export_responses_by_token(survey_id: , document_type: 'json', token: , language_code: 'en', completion_status: 'complete', heading_type: 'code', response_type: 'long', fields: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 81 def export_responses_by_token(survey_id: , document_type: 'json', token: , language_code: 'en', completion_status: 'complete', heading_type: 'code', response_type: 'long', fields: nil) authenticated_post "export_responses_by_token", [survey_id, document_type, token, language_code, completion_status, heading_type, response_type, fields] end
export_statistics(survey_id: , document_type: , token: , language_code: , graph: 'no', group_ids: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 85 def export_statistics(survey_id: , document_type: , token: , language_code: , graph: 'no', group_ids: nil) authenticated_post "export_statistics", [survey_id, document_type, token, language_code, graph, group_ids] end
export_timeline(survey_id: , survey_type: 'day', start_time: , end_time: )
click to toggle source
# File lib/lime_survey/api.rb, line 89 def export_timeline(survey_id: , survey_type: 'day', start_time: , end_time: ) authenticated_post "export_timeline", [survey_id, survey_type, start_time, end_time] end
get_group_properties(group_id: , group_settings: [])
click to toggle source
# File lib/lime_survey/api.rb, line 93 def get_group_properties(group_id: , group_settings: []) authenticated_post "get_group_properties", [group_id, group_settings] end
get_language_properties(survey_id: , survey_locale_settings: nil, language: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 97 def get_language_properties(survey_id: , survey_locale_settings: nil, language: nil) authenticated_post "get_language_properties", [survey_id, survey_locale_settings, language] end
get_participant_properties(survey_id: , token_query_properties: nil, token_properties: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 101 def get_participant_properties(survey_id: , token_query_properties: nil, token_properties: nil) authenticated_post "get_participant_properties", [survey_id, token_query_properties, token_properties] end
get_question_properties(question_id: , question_settings: [], language: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 105 def get_question_properties(question_id: , question_settings: [], language: nil) authenticated_post "get_question_properties", [question_id, question_settings, language] end
get_response_ids(survey_id: , token: )
click to toggle source
# File lib/lime_survey/api.rb, line 109 def get_response_ids(survey_id: , token: ) authenticated_post "get_response_ids", [survey_id, token] end
get_session_key()
click to toggle source
# File lib/lime_survey/api.rb, line 113 def get_session_key response = post "get_session_key", [username, password] end
get_site_settings(setting_name: )
click to toggle source
# File lib/lime_survey/api.rb, line 117 def get_site_settings(setting_name: ) authenticated_post "get_site_settings", [setting_name] end
get_summary(survey_id: , stat_name: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 121 def get_summary(survey_id: , stat_name: nil) authenticated_post "get_summary", [survey_id, stat_name].compact end
get_survey_properties(survey_id: , survey_settings: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 125 def get_survey_properties(survey_id: , survey_settings: nil) authenticated_post "get_survey_properties", [survey_id, survey_settings].compact end
get_uploaded_files(survey_id: , token: )
click to toggle source
# File lib/lime_survey/api.rb, line 129 def get_uploaded_files(survey_id: , token: ) authenticated_post "get_uploaded_files", [survey_id, token] end
import_group(survey_id: , import_data: , import_data_type: , new_group_name: nil, new_group_description: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 133 def import_group(survey_id: , import_data: , import_data_type: , new_group_name: nil, new_group_description: nil) authenticated_post "import_group", [survey_id, import_data, import_data_type, new_group_name, new_group_description] end
import_question(survey_id: , group_id: , import_data: , import_data_type: , mandatory: 'no', new_question_title: nil, new_q_question: nil, new_question_help: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 137 def import_question(survey_id: , group_id: , import_data: , import_data_type: , mandatory: 'no', new_question_title: nil, new_q_question: nil, new_question_help: nil) authenticated_post "import_question", [survey_id, group_id, import_data, import_data_type, mandatory, new_question_title, new_q_question, new_question_help] end
import_survey(import_data: , import_data_type: , new_survey_name: nil, destination_survey_id: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 141 def import_survey(import_data: , import_data_type: , new_survey_name: nil, destination_survey_id: nil) authenticated_post "import_survey", [import_data, import_data_type, new_survey_name, destination_survey_id] end
invite_participants(survey_id: , token_ids: [], email: )
click to toggle source
email: TRUE / FALSE
# File lib/lime_survey/api.rb, line 145 def invite_participants(survey_id: , token_ids: [], email: ) authenticated_post "invite_participants", [survey_id, token_ids, email] end
list_groups(survey_id: )
click to toggle source
# File lib/lime_survey/api.rb, line 149 def list_groups(survey_id: ) authenticated_post "list_groups", [survey_id] end
list_participants(survey_id: , start: 0, limit: 10_000, unused: false, attributes: [], conditions: [])
click to toggle source
# File lib/lime_survey/api.rb, line 153 def list_participants(survey_id: , start: 0, limit: 10_000, unused: false, attributes: [], conditions: []) authenticated_post "list_participants", [survey_id, start, limit, unused, attributes, conditions] end
list_questions(survey_id: , group_id: nil, language: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 157 def list_questions(survey_id: , group_id: nil, language: nil) authenticated_post "list_questions", [survey_id, group_id, language] end
list_surveys(username: nil)
click to toggle source
LimeSurvey::Api.new
.list_surveys
# File lib/lime_survey/api.rb, line 162 def list_surveys(username: nil) authenticated_post "list_surveys", [username].compact end
list_users(user_id: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 166 def list_users(user_id: nil) authenticated_post "list_users", [user_id].compact end
mail_registered_participants(survey_id: , override_all_conditions: [])
click to toggle source
# File lib/lime_survey/api.rb, line 170 def mail_registered_participants(survey_id: , override_all_conditions: []) authenticated_post "mail_registered_participants", [survey_id, override_all_conditions] end
post(method_name, params = [])
click to toggle source
# File lib/lime_survey/api.rb, line 222 def post(method_name, params = []) response = self.class.post(url_endpoint, body: modify_body(method_name, params), timeout: 60, headers: headers) OpenStruct.new body: JSON::parse(response.body), request: response.request, code: response.code end
release_session_key()
click to toggle source
# File lib/lime_survey/api.rb, line 174 def release_session_key authenticated_post "release_session_key" @token = nil end
remind_participants(survey_id: , min_days_between: nil, max_reminders: nil, token_ids: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 179 def remind_participants(survey_id: , min_days_between: nil, max_reminders: nil, token_ids: nil) authenticated_post "remind_participants", [survey_id, min_days_between, max_reminders, token_ids] end
set_group_properties(group_id: , group_data: [])
click to toggle source
# File lib/lime_survey/api.rb, line 183 def set_group_properties(group_id: , group_data: []) authenticated_post "set_group_properties", [group_id, group_data] end
set_language_properties(survey_id: , survey_locale_data: [], language: nil)
click to toggle source
# File lib/lime_survey/api.rb, line 187 def set_language_properties(survey_id: , survey_locale_data: [], language: nil) authenticated_post "set_language_properties", [survey_id, survey_locale_data, language] end
set_participant_properties(survey_id: , token_query_properties: , token_data: )
click to toggle source
# File lib/lime_survey/api.rb, line 191 def set_participant_properties(survey_id: , token_query_properties: , token_data: ) authenticated_post "set_participant_properties", [survey_id, token_query_properties, token_data] end
set_question_properties(question_id: , question_data: , language: )
click to toggle source
# File lib/lime_survey/api.rb, line 195 def set_question_properties(question_id: , question_data: , language: ) authenticated_post "set_question_properties", [question_id, question_data, language] end
set_quota_properties(quota_id: , quota_data: )
click to toggle source
# File lib/lime_survey/api.rb, line 199 def set_quota_properties(quota_id: , quota_data: ) authenticated_post "set_quota_properties", [quota_id, quota_data] end
set_survey_properties(survey_id: , survey_data: )
click to toggle source
# File lib/lime_survey/api.rb, line 203 def set_survey_properties(survey_id: , survey_data: ) authenticated_post "set_survey_properties", [survey_id, suvey_data] end
update_response(survey_id: , response_data: )
click to toggle source
# File lib/lime_survey/api.rb, line 207 def update_response(survey_id: , response_data: ) authenticated_post "update_response", [survey_id, response_data] end
upload_file(survey_id: , field_name: , file_name: , file_data: )
click to toggle source
file_data is BASE64
# File lib/lime_survey/api.rb, line 212 def upload_file(survey_id: , field_name: , file_name: , file_data: ) authenticated_post "upload_file", params end
Private Instance Methods
argument_cleaner(required_params: , optional_params: , options: )
click to toggle source
# File lib/lime_survey/api.rb, line 248 def argument_cleaner(required_params: , optional_params: , options: ) missing_required = required_params - options.map {|k,v| k.to_sym } raise ArgumentError.new("Missing Required Arguments: #{missing_required.join(', ')}") if missing_required.any? all_params = (required_params + optional_params).flatten return options.select {|k,v| all_params.include?(k.to_sym)} end
authenticate!()
click to toggle source
# File lib/lime_survey/api.rb, line 241 def authenticate! response = get_session_key raise AuthenticationError.new(response.body.dig("result", "status")) if response.body.dig("result").is_a?(Hash) && response.body.dig("result", "status") == "Invalid user name or password" @token = response.body.dig("result") response end
default_base_url()
click to toggle source
# File lib/lime_survey/api.rb, line 284 def default_base_url ENV["LIMESURVEY_BASE_URL"] end
default_password()
click to toggle source
# File lib/lime_survey/api.rb, line 280 def default_password ENV["LIMESURVEY_PASSWORD"] end
default_username()
click to toggle source
# File lib/lime_survey/api.rb, line 276 def default_username ENV["LIMESURVEY_USERNAME"] end
headers()
click to toggle source
# File lib/lime_survey/api.rb, line 268 def headers @headers = { "Accept" => "application/json", "Content-Type" => "application/json", "Connection" => "Keep-Alive", } end
modify_body(method_name, params = [])
click to toggle source
# File lib/lime_survey/api.rb, line 255 def modify_body(method_name, params = []) default_params = { method: method_name, params: params, id: 'json-rpc' } default_params[:params] = [token] + params if token default_params.to_json end
url_endpoint()
click to toggle source
# File lib/lime_survey/api.rb, line 237 def url_endpoint ENV.fetch("LIMESURVEY_API_URL", "not-implemented") end