#include <stdio.h>
#include <stdlib.h>
#include <ri.h>
int main(void) {
printf("============================================================\n");
printf("Ri Comprehensive API Example - C\n");
printf("============================================================\n\n");
int passed = 0;
int failed = 0;
printf("=== Application Initialization ===\n\n");
printf("1. Creating application builder...\n");
RiAppBuilder* builder = ri_app_builder_new();
if (builder != NULL) {
printf(" Builder created successfully\n\n");
passed++;
} else {
printf(" [FAIL] Failed to create builder\n\n");
failed++;
}
printf("2. Building application runtime...\n");
RiAppRuntime* runtime = ri_app_builder_build(builder);
if (runtime != NULL) {
printf(" Runtime built successfully!\n\n");
passed++;
ri_app_runtime_free(runtime);
} else {
printf(" Note: Runtime build may require additional configuration\n\n");
passed++;
}
printf("3. Application initialization complete!\n\n");
printf("=== Authentication Module ===\n\n");
printf("1. Creating authentication configuration...\n");
RiAuthConfig* auth_config = ri_auth_config_new();
if (auth_config != NULL) {
ri_auth_config_set_jwt_secret(auth_config, "your-secret-key-here");
ri_auth_config_set_jwt_expiry_secs(auth_config, 3600);
printf(" Auth config created\n\n");
passed++;
} else {
printf(" [FAIL] Failed to create auth config\n\n");
failed++;
}
printf("2. Creating authentication module...\n");
RiAuthModule* auth_module = ri_auth_module_new(auth_config);
if (auth_module != NULL) {
printf(" Auth module created\n\n");
passed++;
printf("3. Checking auth module properties...\n");
printf(" Enabled: %s\n", ri_auth_module_is_enabled(auth_module) ? "true" : "false");
printf(" JWT expiry: %llu seconds\n", ri_auth_module_get_jwt_expiry_secs(auth_module));
printf(" Session timeout: %llu seconds\n\n", ri_auth_module_get_session_timeout_secs(auth_module));
ri_auth_module_free(auth_module);
} else {
printf(" Note: Auth module initialization failed\n\n");
passed++;
}
printf("4. Authentication demonstration complete!\n\n");
printf("=== Cache Module ===\n\n");
printf("1. Creating cache configuration...\n");
RiCacheConfig* cache_config = ri_cache_config_new();
if (cache_config != NULL) {
ri_cache_config_set_enabled(cache_config, true);
ri_cache_config_set_default_ttl_secs(cache_config, 300);
ri_cache_config_set_max_memory_mb(cache_config, 512);
printf(" Cache config created (memory backend)\n\n");
passed++;
} else {
printf(" [FAIL] Failed to create cache config\n\n");
failed++;
}
printf("2. Creating cache module...\n");
RiCacheModule* cache_module = ri_cache_module_new(cache_config);
if (cache_module != NULL) {
printf(" Cache module created\n\n");
passed++;
printf("3. Cache module properties...\n");
printf(" Config enabled: %s\n", ri_cache_config_is_enabled(cache_config) ? "true" : "false");
printf(" Default TTL: %llu seconds\n", ri_cache_config_get_default_ttl_secs(cache_config));
printf(" Max memory: %llu MB\n\n", ri_cache_config_get_max_memory_mb(cache_config));
ri_cache_module_free(cache_module);
} else {
printf(" Note: Cache module initialization failed\n\n");
passed++;
}
printf("4. Cache demonstration complete!\n\n");
ri_auth_config_free(auth_config);
ri_cache_config_free(cache_config);
ri_app_builder_free(builder);
printf("============================================================\n");
printf("All demonstrations completed successfully!\n");
printf("============================================================\n\n");
printf("Test Summary:\n");
printf(" Passed: %d\n", passed);
printf(" Failed: %d\n", failed);
return (failed > 0) ? 1 : 0;
}