Skip to content

Commit

Permalink
use single knm feature module (#6199)
Browse files Browse the repository at this point in the history
* use single knm feature module

* don't try create ledger twice for same account
  • Loading branch information
lazedo authored and k-anderson committed Dec 13, 2019
1 parent a9e8113 commit e5a51fd
Show file tree
Hide file tree
Showing 10 changed files with 57 additions and 146 deletions.
2 changes: 1 addition & 1 deletion applications/crossbar/src/modules/cb_sms.erl
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ number_belongs_to_account(Context) ->
-spec number_has_sms_enabled(cb_context:context()) -> cb_context:context().
number_has_sms_enabled(Context) ->
Number = cb_context:fetch(Context, 'from_number'),
case knm_sms:enabled(Number) of
case knm_im:enabled(Number, 'sms') of
'true' -> Context;
'false' -> cb_context:add_validation_error(<<"from">>, <<"forbidden">>, <<"number does not have sms enabled">>, Context)
end.
Expand Down
13 changes: 9 additions & 4 deletions core/kazoo_im/src/kz_im_flat_rate.erl
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,15 @@
%%%------------------------------------------------------------------------------
-spec create_ledgers(kapps_im:im()) -> ledgers_results().
create_ledgers(IM) ->
Ids = [{'account', kapps_im:account_id(IM)}
,{'reseller', kapps_im:reseller_id(IM)}
],
[{Id, create_ledger(IM, AccountId)} || {_, AccountId} = Id <- Ids].
Ids = case {kapps_im:account_id(IM), kapps_im:reseller_id(IM)} of
{AccountId, AccountId} ->
[{'account', AccountId}];
{AccountId, ResellerId} ->
[{'account', AccountId}
,{'reseller', ResellerId}
]
end,
[{Pair, create_ledger(IM, Id)} || {_, Id} = Pair <- Ids].

-spec create_ledger(kapps_im:im(), kz_term:api_ne_binary()) -> ledger_result().
create_ledger(IM, AccountId) ->
Expand Down
2 changes: 1 addition & 1 deletion core/kazoo_im/src/kz_im_offnet.erl
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ lookup_number(#{number := Number} = Map) ->
lookup_number(Map) -> Map.

number_has_sms_enabled(#{knm := PN} = Map) ->
case knm_sms:enabled(PN) of
case knm_im:enabled(PN, 'sms') of
'true' -> Map;
'false' -> maps:without([account_id, account, phone_number]
,Map#{error => <<"number does not have sms enabled">>}
Expand Down
2 changes: 1 addition & 1 deletion core/kazoo_im/src/kz_im_onnet.erl
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ number(#{enabled := 'false'} = Map) -> Map;
number(#{payload := JObj} = Map) ->
case knm_number:get(kz_api_sms:from(JObj)) of
{'ok', Num} ->
case knm_sms:enabled(Num)
case knm_im:enabled(Num, 'sms')
andalso number_provider(Num)
of
'false' ->
Expand Down
9 changes: 3 additions & 6 deletions core/kazoo_number_manager/include/knm_phone_number.hrl
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,7 @@
-define(FEATURE_PREPEND, <<"prepend">>).
-define(FEATURE_RENAME_CARRIER, <<"carrier_name">>).
-define(FEATURE_RINGBACK, <<"ringback">>).
-define(FEATURE_SMS, <<"sms">>).
-define(FEATURE_MMS, <<"mms">>).
-define(FEATURE_IM, <<"im">>).

-define(PROVIDER_RENAME_CARRIER, <<"knm_rename_carrier">>).
-define(PROVIDER_FORCE_OUTBOUND, <<"knm_", (?FEATURE_FORCE_OUTBOUND)/binary>>).
Expand All @@ -101,8 +100,7 @@
,?FEATURE_CNAM_OUTBOUND
,?FEATURE_E911
,?FEATURE_PORT
,?FEATURE_SMS
,?FEATURE_MMS
,?FEATURE_IM
]).

-define(ADMIN_ONLY_FEATURES, [?FEATURE_RENAME_CARRIER
Expand All @@ -120,8 +118,7 @@
,?FEATURE_PREPEND
,?FEATURE_RENAME_CARRIER
,?FEATURE_RINGBACK
,?FEATURE_SMS
,?FEATURE_MMS
,?FEATURE_IM
]).

-define(CNAM_DISPLAY_NAME, <<"display_name">>).
Expand Down
25 changes: 6 additions & 19 deletions core/kazoo_number_manager/src/knm_number.erl
Original file line number Diff line number Diff line change
Expand Up @@ -425,8 +425,7 @@ check_account(PN) ->
,{'ringback_media', find_early_ringback(PN)}
,{'transfer_media', find_transfer_ringback(PN)}
,{'force_outbound', is_force_outbound(PN)}
,{'sms', feature_sms(PN)}
,{'mms', feature_mms(PN)}
,{'im', feature_im(PN)}
],
{'ok', AssignedTo, Props}
end.
Expand Down Expand Up @@ -473,24 +472,12 @@ feature_prepend(PhoneNumber) ->
%% @doc
%% @end
%%------------------------------------------------------------------------------
-spec feature_sms(knm_phone_number:knm_phone_number()) -> kz_term:api_binary().
feature_sms(PhoneNumber) ->
Sms = knm_phone_number:feature(PhoneNumber, ?FEATURE_SMS),
case kz_json:is_true(?FEATURE_ENABLED, Sms) of
-spec feature_im(knm_phone_number:knm_phone_number()) -> kz_term:api_binary().
feature_im(PhoneNumber) ->
IM = knm_phone_number:feature(PhoneNumber, ?FEATURE_IM),
case knm_im:enabled(PhoneNumber) of
'false' -> 'undefined';
'true' -> Sms
end.

%%------------------------------------------------------------------------------
%% @doc
%% @end
%%------------------------------------------------------------------------------
-spec feature_mms(knm_phone_number:knm_phone_number()) -> kz_term:api_binary().
feature_mms(PhoneNumber) ->
Mms = knm_phone_number:feature(PhoneNumber, ?FEATURE_MMS),
case kz_json:is_true(?FEATURE_ENABLED, Mms) of
'false' -> 'undefined';
'true' -> Mms
'true' -> IM
end.

%%------------------------------------------------------------------------------
Expand Down
3 changes: 1 addition & 2 deletions core/kazoo_number_manager/src/knm_phone_number.erl
Original file line number Diff line number Diff line change
Expand Up @@ -1572,8 +1572,7 @@ private_to_public() ->
,?FEATURE_FAILOVER => FailoverPub
,?FEATURE_RINGBACK => RingbackPub
,?FEATURE_FORCE_OUTBOUND => [[?FEATURE_FORCE_OUTBOUND]]
,?FEATURE_SMS => [[?FEATURE_SMS]]
,?FEATURE_MMS => [[?FEATURE_MMS]]
,?FEATURE_IM => [[?FEATURE_IM]]
}.

%%------------------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,40 @@
%%%
%%% @end
%%%-----------------------------------------------------------------------------
-module(knm_sms).
-module(knm_im).
-behaviour(knm_gen_provider).

-export([save/1]).
-export([delete/1]).
-export([enabled/1]).
-export([enabled/1, enabled/2]).

-type im_type() :: kapps_im:im_type().
-type knm_number() :: knm_number:knm_number().
-type knm_phone_number() :: knm_phone_number:knm_phone_number().

-export_type([im_type/0
]).

-include("knm.hrl").

-define(KEY, ?FEATURE_SMS).
-define(KEY, ?FEATURE_IM).
-define(IM_TYPES, ['sms', 'mms']).


%%------------------------------------------------------------------------------
%% @doc This function is called each time a number is saved, and will
%% add the prepend route (for in service numbers only)
%% @end
%%------------------------------------------------------------------------------

-spec save(knm_number:knm_number()) -> knm_number:knm_number().
-spec save(knm_number()) -> knm_number().
save(PN) ->
State = knm_phone_number:state(knm_number:phone_number(PN)),
save(PN, State).

-spec save(knm_number:knm_number(), kz_term:ne_binary()) -> knm_number:knm_number().
-spec save(knm_number(), kz_term:ne_binary()) -> knm_number().
save(PN, ?NUMBER_STATE_IN_SERVICE) ->
update_sms(PN);
update_im(PN);
save(PN, _State) ->
delete(PN).

Expand All @@ -41,21 +50,25 @@ save(PN, _State) ->
%% remove the prepend route
%% @end
%%------------------------------------------------------------------------------
-spec delete(knm_number:knm_number()) -> knm_number:knm_number().
-spec delete(knm_number()) -> knm_number().
delete(Number) ->
case feature(Number) of
'undefined' -> Number;
_Else -> knm_providers:deactivate_feature(Number, ?KEY)
end.

-spec enabled(knm_number:knm_number()) -> boolean().
enabled(PN) ->
-spec enabled(knm_number() | knm_phone_number(), im_type()) -> boolean().
enabled(PN, Type) ->
Feature = feature(PN),
case kz_term:is_empty(Feature) of
'true' -> 'false';
'false' -> kz_json:is_true(?FEATURE_ENABLED, Feature)
'false' -> kz_json:is_true([kz_term:to_binary(Type), ?FEATURE_ENABLED], Feature)
end.

-spec enabled(knm_number() | knm_phone_number()) -> boolean().
enabled(PN) ->
lists:any(fun(Type) -> enabled(PN, Type) end, ?IM_TYPES).

%%%=============================================================================
%%% Internal functions
%%%=============================================================================
Expand All @@ -64,8 +77,8 @@ enabled(PN) ->
%% @doc
%% @end
%%------------------------------------------------------------------------------
-spec update_sms(knm_number:knm_number()) -> knm_number:knm_number().
update_sms(PN) ->
-spec update_im(knm_number()) -> knm_number().
update_im(PN) ->
CurrentFeature = feature(PN),
PhoneNumber = knm_number:phone_number(PN),
Feature = kz_json:get_ne_value(?KEY, knm_phone_number:doc(PhoneNumber)),
Expand All @@ -76,7 +89,9 @@ update_sms(PN) ->
'false' when NotChanged ->
PN;
'false' ->
case kz_json:is_true(?FEATURE_ENABLED, Feature) of
case kz_json:is_true([<<"sms">>, ?FEATURE_ENABLED], Feature)
orelse kz_json:is_true([<<"mms">>, ?FEATURE_ENABLED], Feature)
of
'false' -> knm_providers:deactivate_feature(PN, ?KEY);
'true' -> knm_providers:activate_feature(PN, {?KEY, Feature})
end
Expand All @@ -86,7 +101,10 @@ update_sms(PN) ->
%% @doc
%% @end
%%------------------------------------------------------------------------------
-spec feature(knm_number:knm_number()) -> kz_json:api_json_term().
-spec feature(knm_number() | knm_phone_number()) -> kz_json:api_json_term().
feature(Number) ->
knm_phone_number:feature(knm_number:phone_number(Number), ?KEY).
case knm_phone_number:is_phone_number(Number) of
'true' -> knm_phone_number:feature(Number, ?KEY);
'false' -> knm_phone_number:feature(knm_number:phone_number(Number), ?KEY)
end.

93 changes: 0 additions & 93 deletions core/kazoo_number_manager/src/providers/knm_mms.erl

This file was deleted.

6 changes: 2 additions & 4 deletions core/kazoo_number_manager/src/providers/knm_providers.erl
Original file line number Diff line number Diff line change
Expand Up @@ -394,10 +394,8 @@ provider_module(?FEATURE_E911, ?MATCH_ACCOUNT_RAW(AccountId)) ->
e911_provider(AccountId);
provider_module(?FEATURE_PREPEND, _) ->
<<"knm_prepend">>;
provider_module(?FEATURE_SMS, _) ->
<<"knm_sms">>;
provider_module(?FEATURE_MMS, _) ->
<<"knm_mms">>;
provider_module(?FEATURE_IM, _) ->
<<"knm_im">>;
provider_module(?FEATURE_PORT, _) ->
<<"knm_port_notifier">>;
provider_module(?FEATURE_FAILOVER, _) ->
Expand Down

0 comments on commit e5a51fd

Please sign in to comment.