Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 1.11 KB | None | 0 0
  1. -define(ALLOWED_CHANNELS, ["video", "audio", "text"]).
  2. -define(ALLOWED_ROLES, ["admin", "user"]).
  3.  
  4.  
  5. is_allowed_channels(Channels) when is_list(Channels) ->
  6.   lists:subtract(Channels, ?ALLOWED_CHANNELS) == [].
  7.  
  8.  
  9. fill_credentials(#credentials{} = Creds, []) -> Creds;
  10.  
  11. fill_credentials(#credentials{} = Creds, [{role, Role} | T]) ->
  12.   case lists:member(Role, ?ALLOWED_ROLES) of
  13.     true -> fill_credentials(Creds#credentials{role = Role}, T);
  14.     _    -> fill_credentials(Creds, T)
  15.   end;
  16.  
  17. fill_credentials(#credentials{} = Creds,
  18.                  [{invisible, Invisible} | T]) ->
  19.   case Invisible of
  20.     Value when Value == true orelse Value == false  ->
  21.       fill_credentials(Creds#credentials{invisible = Value}, T);
  22.     _ ->
  23.       fill_credentials(Creds, T)
  24.   end;
  25.  
  26. fill_credentials(#credentials{} = Creds, [{record, Records} | T]) ->
  27.   case is_allowed_channels(Records) of
  28.     true -> fill_credentials(
  29.               Creds#credentials{record = lists:sort(Records)}, T);
  30.     _    -> fill_credentials(Creds, T)
  31.   end;
  32.  
  33. fill_credentials(#credentials{} = Creds, [_H | T]) ->
  34.   fill_credentials(Creds, T).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement