12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- -module(hm).
- -compile([export_all, nowarn_export_all]).
- %-include_lib("nitro/include/nitro.hrl").
- -include_lib("n4u/include/wf.hrl").
- %-include_lib("kernel/include/file.hrl").
- %% help module
- %% get params
- % get_language_from_header(Req)
- % get_language_from_cookies(Name, Req)
- % get_language(Name, Req)
- % get_tr_mod()
- %% todo mv this funcs to framework
- %% other
- % assert_int(X)
- %% get params
- get_language_from_header(Req) ->
- #{headers := Headers} = Req,
- F1 = fun(K, V, Acc) ->
- Is_Same = <<"accept-language">> =:= string:lowercase(K),
- case Is_Same of
- true ->
- Is_A = <<"*">> =:= binary:part(V, {0, 1}),
- Is_E = <<>> =:= V,
- case {Is_A, Is_E} of
- {false, false} -> V;
- _ -> []
- end;
- _ -> Acc
- end
- end,
- Accept_language = maps:fold(F1, [], Headers),
- case Accept_language of
- [] -> en;
- Val ->
- <<Lang0:2/binary,_/binary>> = Val, %% Accept-Language: <<"uk,en;q=0.5">> %% <<"fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5">>
- Lang = try erlang:binary_to_existing_atom(Lang0, latin1)
- catch _:_ -> en
- end,
- case lists:member(Lang, [en, uk]) of %% todo mv to config langs list and default lang
- false -> en;
- true -> Lang
- end
- end.
- get_language_from_cookies(Name, Req) ->
- case wf:cookie_req(Name, Req) of
- undefined -> false;
- Lang ->
- case lists:member(Lang, [en, uk]) of
- false -> false;
- true -> Lang
- end
- end.
- get_language(Name, Req) ->
- case ?MODULE:get_language_from_cookies(Name, Req) of
- false ->
- ?MODULE:get_language_from_header(Req);
- Lang ->
- Lang
- end.
- get_tr_mod() -> %% modules with i18n for config langs list -- en -> tr_en, uk -> tr_uk etc
- Lang = get_language(<<"lang">>, ?REQ),
- case Lang of
- uk -> tr_uk;
- %en -> tr_en
- _ -> tr_en
- end.
- post_value(Req, Key) ->
- {ok, PostStr, _} = wf:request_body(Req),
- PostList = cow_qs:parse_qs(PostStr),
- ?MODULE:post_value2( [ Value || {_Key1, Value} <- PostList, _Key1 =:= Key ] ).
- % helper
- post_value2([]) -> undefined;
- post_value2([Val|_]) -> Val;
- post_value2(_) -> undefined.
- assert_int(X) when erlang:is_integer(X) -> ok.
|