-
Notifications
You must be signed in to change notification settings - Fork 34
rc_api_init_login_request
Constructs an rc_api_request_t
for logging a user into the RetroAchievements API.
int rc_api_init_login_request(
rc_api_request_t* request,
const rc_api_login_request_t* api_params
);
request
The rc_api_request_t
to construct.
api_params
Pointer to a rc_api_login_request_t
object containing the parameters required for the login.
struct rc_api_login_request_t
{
const char* username;
const char* api_token;
const char* password;
};
username
The name of the user being logged in.
api_token
The API token generated by a previous log in for the user.
password
The password for the user being logged in.
If the function succeeds, the return value is RC_OK
. Otherwise, the error code can be converted to a string using rc_error_str.
-
RC_INVALID_STATE
- one or more required parameters was not provided. -
RC_OUT_OF_MEMORY
- enough memory could not be allocated to complete the operation.
Only password
or api_token
should be provided. If both are provided, api_token
will be ignored.
The rc_api_request_t
must be destroyed by rc_api_destroy_request after the HTTP request has been made.
Minimum version: 10.0.0
The following process applies to all of the rc_api_
functions.
- Zero out the params object and populate the appropriate fields.
rc_api_login_request_t api_params;
memset(&api_params, 0, sizeof(api_params));
api_params.username = "Username";
api_params.api_token = "AU6EDN4hASd3rAGi";
- Convert the API parameters to an HTTP request.
rc_api_request_t api_request;
rc_api_init_login_request(&api_request, &api_params);
- Send the request to the server (
send_http_request
is used for illustrative purposes and is not provided by rcheevos).
int status_code;
const char* response_body = send_http_request(api_request.url, api_request.post_data, &status_code);
rc_api_request_destroy(&api_request);
- Handle the response (
handle_error
andhandle_success
are used for illustrative purposes only and are not provided by rcheevos).
if (response_body == NULL)
{
handle_error(status_code, "empty response");
}
else
{
rc_api_login_response_t api_response;
int result = rc_api_process_login_response(&api_response, response_body);
if (result != RC_OK)
{
handle_error(status_code, rc_error_str(result));
}
else if (!api_response.response.succeeded)
{
handle_error(status_code, api_response.response.error_message);
}
else
{
handle_success(&api_response);
}
rc_api_destroy_login_response(&api_response);
free(response_body);
}
- rc_client_abort_async
- rc_client_create
- rc_client_destroy
- rc_client_enable_logging
- rc_client_get_encore_mode_enabled
- rc_client_get_hardcore_enabled
- rc_client_get_spectator_mode_enabled
- rc_client_get_unofficial_enabled
- rc_client_get_user_agent_clause
- rc_client_get_userdata
- rc_client_set_encore_mode_enabled
- rc_client_set_hardcore_enabled
- rc_client_set_host
- rc_client_set_spectator_mode_enabled
- rc_client_set_unofficial_enabled
- rc_client_set_userdata
- rc_client_begin_login_with_password
- rc_client_begin_login_with_token
- rc_client_get_user_info
- rc_client_get_user_game_summary
- rc_client_logout
- rc_client_user_get_image_url
- rc_client_achievement_get_image_url
- rc_client_begin_change_media
- rc_client_begin_change_media_from_hash
- rc_client_begin_fetch_leaderboard_entries
- rc_client_begin_fetch_leaderboard_entries_around_user
- rc_client_begin_identify_and_load_game
- rc_client_begin_load_game
- rc_client_create_achievement_list
- rc_client_create_leaderboard_list
- rc_client_destroy_achievement_list
- rc_client_destroy_leaderboard_entry_list
- rc_client_destroy_leaderboard_list
- rc_client_game_get_image_url
- rc_client_get_achievement_info
- rc_client_get_game_info
- rc_client_get_leaderboard_info
- rc_client_get_load_game_state
- rc_client_get_rich_presence_message
- rc_client_has_achievements
- rc_client_has_leaderboards
- rc_client_has_rich_presence
- rc_client_is_game_loaded
- rc_client_leaderboard_entry_get_user_image_url
- rc_client_unload_game
- rc_client_can_pause
- rc_client_deserialize_progress
- rc_client_do_frame
- rc_client_idle
- rc_client_is_processing_required
- rc_client_progress_size
- rc_client_reset
- rc_client_serialize_progress
- rc_client_set_event_handler
- rc_client_set_read_memory_function
- rc_client_begin_load_raintegration
- rc_client_raintegration_activate_menu_item
- rc_client_raintegration_get_achievement_state
- rc_client_raintegration_get_menu
- rc_client_raintegration_has_modifications
- rc_client_raintegration_rebuild_submenu
- rc_client_raintegration_set_console_id
- rc_client_raintegration_set_event_handler
- rc_client_raintegration_set_get_game_name_function
- rc_client_raintegration_set_write_memory_function
- rc_client_raintegration_update_main_window_handle
- rc_client_raintegration_update_menu_item
- rc_client_unload_raintegration
- rc_runtime_activate_achievement
- rc_runtime_activate_lboard
- rc_runtime_activate_richpresence
- rc_runtime_deactivate_achievement
- rc_runtime_deactivate_lboard
- rc_runtime_deserialize_progress
- rc_runtime_destroy
- rc_runtime_do_frame
- rc_runtime_format_achievement_measured
- rc_runtime_format_lboard_value
- rc_runtime_get_achievement
- rc_runtime_get_achievement_measured
- rc_runtime_get_lboard
- rc_runtime_get_richpresence
- rc_runtime_init
- rc_runtime_invalidate_address
- rc_runtime_progress_size
- rc_runtime_reset
- rc_runtime_serialize_progress
- rc_runtime_validate_addresses
- rc_hash_destroy_iterator
- rc_hash_generate_from_buffer
- rc_hash_generate_from_file
- rc_hash_init_custom_cdreader
- rc_hash_init_custom_filereader
- rc_hash_init_error_message_callback
- rc_hash_init_verbose_message_callback
- rc_hash_initialize_iterator
- rc_hash_iterate
- rc_api_destroy_fetch_user_unlocks_response
- rc_api_destroy_login_response
- rc_api_destroy_start_session_response
- rc_api_init_fetch_user_unlocks_request
- rc_api_init_login_request
- rc_api_init_start_session_request
- rc_api_process_fetch_user_unlocks_response
- rc_api_process_login_response
- rc_api_process_start_session_response
- rc_api_destroy_award_achievement_response
- rc_api_destroy_fetch_game_data_response
- rc_api_destroy_ping_response
- rc_api_destroy_resolve_hash_response
- rc_api_destroy_submit_lboard_entry_response
- rc_api_init_award_achievement_request
- rc_api_init_fetch_game_data_request
- rc_api_init_fetch_image_request
- rc_api_init_ping_request
- rc_api_init_resolve_hash_request
- rc_api_init_submit_lboard_entry_request
- rc_api_process_award_achievement_response
- rc_api_process_fetch_game_data_response
- rc_api_process_ping_response
- rc_api_process_resolve_hash_response
- rc_api_process_submit_lboard_entry_response
- rc_api_destroy_fetch_achievement_info_response
- rc_api_destroy_fetch_game_titles_response
- rc_api_destroy_fetch_games_list_response
- rc_api_destroy_fetch_leaderboard_info_response
- rc_api_init_fetch_achievement_info_request
- rc_api_init_fetch_game_titles_request
- rc_api_init_fetch_games_list_request
- rc_api_init_fetch_leaderboard_info_request
- rc_api_process_fetch_achievement_info_response
- rc_api_process_fetch_game_titles_server_response
- rc_api_process_fetch_games_list_response
- rc_api_process_fetch_leaderboard_info_response