Skip to content

Commit f9461de

Browse files
authored
Merge pull request #89 from mattmatters/support-credential-process-returning-expiration
Support getting an expiration from a credential process helper
2 parents fed2171 + b9605fe commit f9461de

2 files changed

Lines changed: 12 additions & 9 deletions

File tree

src/aws_credentials_file.erl

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
-export([fetch/1]).
3535

3636
-spec fetch(aws_credentials_provider:options()) ->
37-
{error, any()} | {ok, aws_credentials:credentials(), 'infinity'}.
37+
{ok, aws_credentials:credentials(), aws_credentials_provider:expiration()} |
38+
{error, any()}.
3839
fetch(Options) ->
3940
FilePath = get_file_path(Options),
4041
ConfigPath = does_credentials_file_exist(FilePath, config),
@@ -77,18 +78,18 @@ maybe_add_home(Path) ->
7778
end.
7879

7980
-spec maybe_add_region(
80-
{error, any()} | {ok, aws_credentials:credentials(), 'infinity'},
81+
{error, any()} | {ok, aws_credentials:credentials(), aws_credentials_provider:expiration()},
8182
{error, any()} | string(),
8283
aws_credentials_provider:options()
83-
) -> {ok, aws_credentials:credentials(), 'infinity'}.
84+
) -> {ok, aws_credentials:credentials(), aws_credentials_provider:expiration()}.
8485
maybe_add_region({error, _} = Error, _Config, _Options) -> Error;
8586
maybe_add_region(Result, {error, _Error}, _Options) -> Result;
86-
maybe_add_region({ok, Credentials, infinity}, ConfigPath, Options) ->
87+
maybe_add_region({ok, Credentials, Expiration}, ConfigPath, Options) ->
8788
case parse_config_file(ConfigPath, Options) of
8889
{ok, Config} ->
89-
{ok, maps:put(region, maps:get(<<"region">>, Config), Credentials), infinity};
90+
{ok, maps:put(region, maps:get(<<"region">>, Config), Credentials), Expiration};
9091
{error, _} ->
91-
{ok, Credentials, infinity}
92+
{ok, Credentials, Expiration}
9293
end.
9394

9495
-spec check_path_exists(string()) -> {error, 'file_not_found'} | string().
@@ -99,7 +100,7 @@ check_path_exists(Path) ->
99100
end.
100101

101102
-spec parse_credentials_file(string(), aws_credentials_provider:options()) ->
102-
{error, any()} | {ok, aws_credentials:credentials(), 'infinity'}.
103+
{error, any()} | {ok, aws_credentials:credentials(), aws_credentials_provider:expiration()}.
103104
parse_credentials_file(Path, Options) ->
104105
{ok, F} = file:read_file(Path),
105106
{ok, Profiles} = eini:parse(F),
@@ -114,7 +115,7 @@ parse_credentials_file(Path, Options) ->
114115
maps:get(<<"aws_access_key_id">>, Profile),
115116
maps:get(<<"aws_secret_access_key">>, Profile),
116117
maps:get(<<"aws_session_token">>, Profile)),
117-
infinity};
118+
maps:get(<<"aws_expiration">>, Profile, infinity)};
118119
false ->
119120
{ok, aws_credentials:make_map(?MODULE,
120121
maps:get(<<"aws_access_key_id">>, Profile),
@@ -151,6 +152,8 @@ read_from_profile(File, Profile) ->
151152
{true, {<<"aws_secret_access_key">>, SAK}};
152153
({<<"SessionToken">>, ST}) ->
153154
{true, {<<"aws_session_token">>, ST}};
155+
({<<"Expiration">>, E}) ->
156+
{true, {<<"aws_expiration">>, E}};
154157
(_) ->
155158
false
156159
end, maps:to_list(CredResult))),
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
[default]
2-
credential_process = echo '{"AccessKeyId":"dummy_access_key2", "SecretAccessKey":"dummy_secret_access_key2"}'
2+
credential_process = echo '{"AccessKeyId":"dummy_access_key2", "SecretAccessKey":"dummy_secret_access_key2", "Expiration": "2026-09-25T23:43:56"}'

0 commit comments

Comments
 (0)