Рефакторинг обработчиков. Часть 1 #21
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
%%%-------------------------------------------------------------------
|
||||
%%% @doc Общие инфраструктурные утилиты.
|
||||
%%% Содержит функцию генерации уникальных идентификаторов,
|
||||
%%% используемых во всех основных сущностях (пользователи,
|
||||
%%% администраторы, события и т.д.).
|
||||
%%% @end
|
||||
%%%-------------------------------------------------------------------
|
||||
-module(infra_utils).
|
||||
|
||||
-export([generate_id/1]).
|
||||
|
||||
%%%===================================================================
|
||||
%%% API
|
||||
%%%===================================================================
|
||||
|
||||
%% @doc Генерирует уникальный идентификатор.
|
||||
%% Формат: URL-безопасный base64 от n случайных байт,
|
||||
%% без завершающих символов '='.
|
||||
%% Длина строки: 22 символа.
|
||||
%% Пример: <<"WyrF9DQm3YTksEJww4lyrQ">>
|
||||
-spec generate_id(non_neg_integer()) -> binary().
|
||||
generate_id(Bytes) ->
|
||||
Base64 = base64:encode(crypto:strong_rand_bytes(Bytes), #{mode => urlsafe, padding => false}),
|
||||
Id = binary:replace(Base64, <<"-">>, <<"0">>, [global]),
|
||||
binary:replace(Id, <<"_">>, <<"9">>, [global]).
|
||||
Reference in New Issue
Block a user