Skip to content
This repository has been archived by the owner on Jun 28, 2021. It is now read-only.

Commit

Permalink
Merge pull request #11 from SemanticSugar/RTI-5175-OTP21
Browse files Browse the repository at this point in the history
[RTI-5175] Remove discrepancies found by dialyzer on OTP21
  • Loading branch information
Brujo Benavides authored May 28, 2019
2 parents 4eb7147 + e546b9d commit 724e610
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 58 deletions.
6 changes: 6 additions & 0 deletions src/erlcloud_aws.erl
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@
profile/0, profile/1, profile/2
]).

%% We're abusing application:get_env there
-dialyzer([{nowarn_function, [get_role_credentials/1, get_credentials_from_role/1,
clear_expired_configs/0, clear_config/1,
auto_config_task_metadata/0, auto_config_metadata/0
]}]).

-include("erlcloud.hrl").
-include("erlcloud_aws.hrl").

Expand Down
2 changes: 1 addition & 1 deletion src/erlcloud_ddb_util.erl
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ batch_write_retry(RequestItems, Config) ->
%% @end
%%------------------------------------------------------------------------------

-spec wait_for_table_active(table_name(), pos_integer() | infinity, non_neg_integer(), aws_config()) ->
-spec wait_for_table_active(table_name(), pos_integer() | infinity, non_neg_integer() | infinity, aws_config()) ->
ok | {error, deleting | retry_threshold_exceeded | any()}.
wait_for_table_active(Table, Interval, RetryTimes, Config) when is_binary(Table), Interval > 0, RetryTimes >= 0 ->
case erlcloud_ddb2:describe_table(Table, [{out, record}], Config) of
Expand Down
33 changes: 12 additions & 21 deletions src/erlcloud_elb.erl
Original file line number Diff line number Diff line change
Expand Up @@ -254,14 +254,18 @@ describe_load_balancers_all(Names) ->
-spec describe_load_balancers_all(list(string()), aws_config()) ->
{ok, [term()]} | {error, term()}.
describe_load_balancers_all(Names, Config) ->
describe_all(
fun(Marker, Cfg) ->
describe_load_balancers(
Names, ?DEFAULT_MAX_RECORDS, Marker, Cfg
)
end, Config, none, []).


describe_load_balancers_all(Names, Config, none, []).

describe_load_balancers_all(Names, AwsConfig, Marker, Acc) ->
case describe_load_balancers(Names, ?DEFAULT_MAX_RECORDS, Marker, AwsConfig) of
{ok, Res} ->
{ok, lists:append(Acc, Res)};
{{paged, NewMarker}, Res} ->
describe_load_balancers_all(Names, AwsConfig, NewMarker, lists:append(Acc, Res));
{error, Reason} ->
{error, Reason}
end.

extract_elb(Item) ->
[
{load_balancer_name, get_text("LoadBalancerName", Item)},
Expand Down Expand Up @@ -541,19 +545,6 @@ delete_load_balancer_policy(LB, PolicyName, Config) when is_list(LB),
member_params(Prefix, MemberIdentifiers) ->
MemberKeys = [Prefix ++ integer_to_list(I) || I <- lists:seq(1, length(MemberIdentifiers))],
[{K, V} || {K, V} <- lists:zip(MemberKeys, MemberIdentifiers)].


describe_all(Fun, AwsConfig, Marker, Acc) ->
case Fun(Marker, AwsConfig) of
{ok, Res} ->
{ok, lists:append(Acc, Res)};
{ok, Res, NewMarker} ->
describe_all(Fun, AwsConfig, NewMarker, lists:append(Acc, Res));
{{paged, NewMarker}, Res} ->
describe_all(Fun, AwsConfig, NewMarker, lists:append(Acc, Res));
{error, Reason} ->
{error, Reason}
end.


elb_query(Config, Action, Params) ->
Expand Down
45 changes: 16 additions & 29 deletions src/erlcloud_guardduty.erl
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ get_detector(DetectorId) ->
Config :: aws_config()) -> gd_return().
get_detector(DetectorId, Config) ->
Path = "/detector/" ++ binary_to_list(DetectorId),
guardduty_request(Config, get, Path, undefined).
guardduty_request(Config, get, Path).


%%------------------------------------------------------------------------------
Expand All @@ -77,63 +77,50 @@ list_detectors() -> list_detectors(default_config()).
list_detectors(Config) ->
list_detectors(undefined, undefined, Config).

-spec list_detectors(Marker :: binary(),
MaxItems :: integer()) -> gd_return().
-spec list_detectors(Marker :: undefined | binary(),
MaxItems :: undefined | integer()) -> gd_return().
list_detectors(Marker, MaxItems) ->
list_detectors(Marker, MaxItems, default_config()).

-spec list_detectors(Marker :: binary(),
MaxItems :: integer(),
-spec list_detectors(Marker :: undefined | binary(),
MaxItems :: undefined | integer(),
Config :: aws_config()) -> gd_return().
list_detectors(Marker, MaxItems, Config) ->
Path = "/detector",
QParams = filter_undef([{"Marker", Marker},
{"MaxItems", MaxItems}]),
guardduty_request(Config, get, Path, undefined, QParams).
guardduty_request(Config, get, Path, QParams).


%%%------------------------------------------------------------------------------
%%% Internal Functions
%%%------------------------------------------------------------------------------

guardduty_request(Config, Method, Path, Body) ->
guardduty_request(Config, Method, Path, Body, []).
guardduty_request(Config, Method, Path) ->
guardduty_request(Config, Method, Path, []).

guardduty_request(Config, Method, Path, Body, QParam) ->
guardduty_request(Config, Method, Path, QParam) ->
case erlcloud_aws:update_config(Config) of
{ok, Config1} ->
guardduty_request_no_update(Config1, Method, Path, Body, QParam);
guardduty_request_no_update(Config1, Method, Path, QParam);
{error, Reason} ->
{error, Reason}
end.

guardduty_request_no_update(Config, Method, Path, Body, QParam) ->
Form = case encode_body(Body) of
<<>> -> erlcloud_http:make_query_string(QParam);
Value -> Value
end,
Headers = headers(Method, Path, Config, encode_body(Body), QParam),
guardduty_request_no_update(Config, Method, Path, QParam) ->
Headers = headers(Method, Path, Config, QParam),
case erlcloud_aws:aws_request_form_raw(
Method, Config#aws_config.guardduty_scheme, Config#aws_config.guardduty_host,
Config#aws_config.guardduty_port, Path, Form, Headers, Config) of
Config#aws_config.guardduty_port, Path, <<>>, Headers, Config) of
{ok, Data} ->
{ok, jsx:decode(Data)};
E ->
E
end.

encode_body(undefined) ->
<<>>;
encode_body([]) ->
<<"{}">>;
encode_body(Body) ->
jsx:encode(Body).

headers(Method, Uri, Config, Body, QParam) ->
Headers = [{"host", Config#aws_config.guardduty_host},
{"content-type", "application/json"}],
headers(Method, Uri, Config, QParam) ->
Headers = [{"host", Config#aws_config.guardduty_host}, {"content-type", "application/json"}],
Region = erlcloud_aws:aws_region_from_host(Config#aws_config.guardduty_host),
erlcloud_aws:sign_v4(Method, Uri, Config,
Headers, Body, Region, "guardduty", QParam).
erlcloud_aws:sign_v4(Method, Uri, Config, Headers, <<>>, Region, "guardduty", QParam).

default_config() -> erlcloud_aws:default_config().
8 changes: 4 additions & 4 deletions src/erlcloud_iam.erl
Original file line number Diff line number Diff line change
Expand Up @@ -774,19 +774,19 @@ list_virtual_mfa_devices(#aws_config{} = Config) ->
list_virtual_mfa_devices(AssignmentStatus) ->
list_virtual_mfa_devices(AssignmentStatus, undefined, undefined, default_config()).

-spec list_virtual_mfa_devices(string(), string() | aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}.
-spec list_virtual_mfa_devices(undefined | string(), string() | aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}.
list_virtual_mfa_devices(AssignmentStatus, #aws_config{} = Config) ->
list_virtual_mfa_devices(AssignmentStatus, undefined, undefined, Config);
list_virtual_mfa_devices(AssignmentStatus, Marker) ->
list_virtual_mfa_devices(AssignmentStatus, Marker, undefined, default_config()).

-spec list_virtual_mfa_devices(string(), string(), string()| aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}.
-spec list_virtual_mfa_devices(undefined | string(), undefined | string(), string()| aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}.
list_virtual_mfa_devices(AssignmentStatus, Marker, #aws_config{} = Config) ->
list_virtual_mfa_devices(AssignmentStatus, Marker, undefined, Config);
list_virtual_mfa_devices(AssignmentStatus, Marker, MaxItems) ->
list_virtual_mfa_devices(AssignmentStatus, Marker, MaxItems, default_config()).

-spec list_virtual_mfa_devices(string(), string(), string(), aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}.
-spec list_virtual_mfa_devices(undefined | string(), undefined | string(), undefined | string(), aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}.
list_virtual_mfa_devices(AssignmentStatus, Marker, MaxItems, #aws_config{} = Config) ->
Params = make_list_virtual_mfa_devices_params(AssignmentStatus, Marker, MaxItems),
ItemPath = "/ListVirtualMFADevicesResponse/ListVirtualMFADevicesResult/VirtualMFADevices/member",
Expand All @@ -803,7 +803,7 @@ list_virtual_mfa_devices_all(#aws_config{} = Config) ->
list_virtual_mfa_devices_all(AssignmentStatus) ->
list_virtual_mfa_devices_all(AssignmentStatus, default_config()).

-spec list_virtual_mfa_devices_all(string(), aws_config()) -> {ok, proplist()} | {error, any()}.
-spec list_virtual_mfa_devices_all(undefined | string(), aws_config()) -> {ok, proplist()} | {error, any()}.
list_virtual_mfa_devices_all(AssignmentStatus, #aws_config{} = Config) ->
Params = make_list_virtual_mfa_devices_params(AssignmentStatus, undefined, undefined),
ItemPath = "/ListVirtualMFADevicesResponse/ListVirtualMFADevicesResult/VirtualMFADevices/member",
Expand Down
6 changes: 3 additions & 3 deletions src/erlcloud_states.erl
Original file line number Diff line number Diff line change
Expand Up @@ -539,7 +539,7 @@ start_execution(StateMachineArn, Options) ->
start_execution(StateMachineArn, Options, default_config()).

-spec start_execution(StateMachineArn :: binary(),
Options :: list(),
Options :: #{binary() => term()},
Config :: aws_config()) ->
{ok, map()} | {error, any()}.
start_execution(StateMachineArn, Options, Config)
Expand Down Expand Up @@ -573,8 +573,8 @@ stop_execution(ExecutionArn, Options) ->
stop_execution(ExecutionArn, Options, default_config()).

-spec stop_execution(ExecutionArn :: binary(),
Options :: list(),
Config :: aws_config()) ->
Options :: #{binary() => term()},
Config :: aws_config()) ->
{ok, map()} | {error, any()}.
stop_execution(ExecutionArn, Options, Config)
when is_binary(ExecutionArn), is_map(Options) ->
Expand Down

0 comments on commit 724e610

Please sign in to comment.