aboutsummaryrefslogtreecommitdiff
path: root/src/mod_vcard.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2012-11-06 17:58:08 +0200
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2014-07-10 13:15:15 +0400
commita4b02c38db131285aa06da9ecad743f219781d6f (patch)
tree7e78dba5be6939ad5b8b92cb4c6c15a57f9d26a3 /src/mod_vcard.erl
parentPreliminary Riak support (diff)
Updated riak support
Diffstat (limited to 'src/mod_vcard.erl')
-rw-r--r--src/mod_vcard.erl47
1 files changed, 43 insertions, 4 deletions
diff --git a/src/mod_vcard.erl b/src/mod_vcard.erl
index c98750ed0..e7dd77224 100644
--- a/src/mod_vcard.erl
+++ b/src/mod_vcard.erl
@@ -212,6 +212,19 @@ get_vcard(LUser, LServer, odbc) ->
end;
{selected, [<<"vcard">>], []} -> [];
_ -> error
+ end;
+get_vcard(LUser, LServer, riak) ->
+ Username = LUser,
+ case catch ejabberd_riak:get(LServer, <<"vcard">>, Username) of
+ {ok, SVCARD} ->
+ case xml_stream:parse_element(SVCARD) of
+ {error, _Reason} -> error;
+ VCARD -> [VCARD]
+ end;
+ {error, notfound} ->
+ [];
+ _ ->
+ error
end.
set_vcard(User, LServer, VCARD) ->
@@ -322,7 +335,25 @@ set_vcard(User, LServer, VCARD) ->
SLGiven, SLLocality, SLMiddle,
SLNickname, SLOrgName, SLOrgUnit,
SLocality, SMiddle, SNickname, SOrgName,
- SOrgUnit, SVCARD, Username)
+ SOrgUnit, SVCARD, Username);
+ riak ->
+ Username = LUser,
+ SVCARD = xml:element_to_binary(VCARD),
+
+ ejabberd_riak:put(
+ LServer, <<"vcard">>, Username, SVCARD,
+ [{<<"bday_bin">>, LBDay},
+ {<<"ctry_bin">>, LCTRY},
+ {<<"email_bin">>, LEMail},
+ {<<"fn_bin">>, LFN},
+ {<<"family_bin">>, LFamily},
+ {<<"given_bin">>, LGiven},
+ {<<"locality_bin">>, LLocality},
+ {<<"middle_bin">>, LMiddle},
+ {<<"nickname_bin">>, LNickname},
+ {<<"orgname_bin">>, LOrgName},
+ {<<"orgunit_bin">>, LOrgUnit},
+ {<<"user_bin">>, Username}])
end,
ejabberd_hooks:run(vcard_set, LServer,
[LUser, LServer, VCARD])
@@ -687,14 +718,18 @@ search(LServer, MatchSpec, AllowReturnAll, odbc) ->
Rs;
Error -> ?ERROR_MSG("~p", [Error]), []
end
- end.
+ end;
+search(_LServer, _MatchSpec, _AllowReturnAll, riak) ->
+ [].
make_matchspec(LServer, Data, mnesia) ->
GlobMatch = #vcard_search{_ = '_'},
Match = filter_fields(Data, GlobMatch, LServer, mnesia),
Match;
make_matchspec(LServer, Data, odbc) ->
- filter_fields(Data, <<"">>, LServer, odbc).
+ filter_fields(Data, <<"">>, LServer, odbc);
+make_matchspec(_LServer, _Data, riak) ->
+ [].
filter_fields([], Match, _LServer, mnesia) -> Match;
filter_fields([], Match, _LServer, odbc) ->
@@ -884,7 +919,11 @@ remove_user(LUser, LServer, odbc) ->
[[<<"delete from vcard where username='">>,
Username, <<"';">>],
[<<"delete from vcard_search where lusername='">>,
- Username, <<"';">>]]).
+ Username, <<"';">>]]);
+remove_user(LUser, LServer, riak) ->
+ Username = LUser,
+ ejabberd_riak:delete(LServer, <<"vcard">>, Username),
+ ok.
update_tables() ->
update_vcard_table(),