#ifndef AWS_SDKUTILS_AWS_PROFILE_H
#define AWS_SDKUTILS_AWS_PROFILE_H
#include <aws/sdkutils/sdkutils.h>
struct aws_allocator;
struct aws_string;
struct aws_byte_buf;
struct aws_byte_cursor;
struct aws_profile_property;
struct aws_profile;
struct aws_profile_collection;
enum aws_profile_source_type { AWS_PST_NONE, AWS_PST_CONFIG, AWS_PST_CREDENTIALS };
AWS_EXTERN_C_BEGIN
AWS_SDKUTILS_API
void aws_profile_collection_destroy(struct aws_profile_collection *profile_collection);
AWS_SDKUTILS_API
struct aws_profile_collection *aws_profile_collection_new_from_file(
struct aws_allocator *allocator,
const struct aws_string *file_path,
enum aws_profile_source_type source);
AWS_SDKUTILS_API
struct aws_profile_collection *aws_profile_collection_new_from_merge(
struct aws_allocator *allocator,
const struct aws_profile_collection *config_profiles,
const struct aws_profile_collection *credentials_profiles);
AWS_SDKUTILS_API
struct aws_profile_collection *aws_profile_collection_new_from_buffer(
struct aws_allocator *allocator,
const struct aws_byte_buf *buffer,
enum aws_profile_source_type source);
AWS_SDKUTILS_API
const struct aws_profile *aws_profile_collection_get_profile(
const struct aws_profile_collection *profile_collection,
const struct aws_string *profile_name);
AWS_SDKUTILS_API
size_t aws_profile_collection_get_profile_count(const struct aws_profile_collection *profile_collection);
AWS_SDKUTILS_API
const struct aws_string *aws_profile_get_name(const struct aws_profile *profile);
AWS_SDKUTILS_API
const struct aws_profile_property *aws_profile_get_property(
const struct aws_profile *profile,
const struct aws_string *property_name);
AWS_SDKUTILS_API
size_t aws_profile_get_property_count(const struct aws_profile *profile);
AWS_SDKUTILS_API
const struct aws_string *aws_profile_property_get_value(const struct aws_profile_property *property);
AWS_SDKUTILS_API
const struct aws_string *aws_profile_property_get_sub_property(
const struct aws_profile_property *property,
const struct aws_string *sub_property_name);
AWS_SDKUTILS_API
size_t aws_profile_property_get_sub_property_count(const struct aws_profile_property *property);
AWS_SDKUTILS_API
struct aws_string *aws_get_credentials_file_path(
struct aws_allocator *allocator,
const struct aws_byte_cursor *override_path);
AWS_SDKUTILS_API
struct aws_string *aws_get_config_file_path(
struct aws_allocator *allocator,
const struct aws_byte_cursor *override_path);
AWS_SDKUTILS_API
struct aws_string *aws_get_profile_name(struct aws_allocator *allocator, const struct aws_byte_cursor *override_name);
AWS_EXTERN_C_END
#endif