Просмотр исходного кода

use userhelper wrapper to avoid undefined fields in proplists

Andrey Sergienko 10 лет назад
Родитель
Сommit
2735110c91
7 измененных файлов с 25 добавлено и 13 удалено
  1. 1 1
      src/email.erl
  2. 4 4
      src/facebook.erl
  3. 2 2
      src/github.erl
  4. 3 3
      src/google.erl
  5. 1 1
      src/microsoft.erl
  6. 2 2
      src/twitter.erl
  7. 12 0
      src/userhelper.erl

+ 1 - 1
src/email.erl

@@ -12,7 +12,7 @@ registration_data(Props, email, Ori)->
             display_name = Email,
             email = Email,
             register_date = now(),
-            tokens = [{email,Email}|Ori#user.tokens],
+            tokens = userhelper:updateProplist({email,Email},Ori#user.tokens),
             status = ok,
             password = kvs:sha(proplists:get_value(<<"password">>,Props))}.
 

+ 4 - 4
src/facebook.erl

@@ -25,15 +25,15 @@ registration_data(Props, facebook, Ori)->
 %    error_logger:info_msg("User Ori: ~p",[Ori]),
 %    error_logger:info_msg("Props: ~p",[Props]),
     Email = email_prop(Props, facebook),
-    [UserName|_] = string:tokens(binary_to_list(Email),"@"), Cover = case proplists:get_value(<<"cover">>,Props) of undefined -> ""; P -> case proplists:get_value(<<"source">>,P#struct.lst) of undefined -> ""; C -> binary_to_list(C) end end,
-    OldImages = case Ori#user.images of undefined -> []; OldI -> OldI end,
+    [UserName|_] = string:tokens(binary_to_list(Email),"@"),
+    Cover = case proplists:get_value(<<"cover">>,Props) of undefined -> ""; P -> case proplists:get_value(<<"source">>,P#struct.lst) of undefined -> ""; C -> binary_to_list(C) end end,
     Ori#user{   id = Email,
                 display_name = UserName,
-                images = [{fb_avatar,"https://graph.facebook.com/" ++ binary_to_list(Id) ++ "/picture?type=large"},{fb_cover,Cover}|OldImages],
+                images = userhelper:updateProplist({fb_cover,Cover},userhelper:updateProplist({fb_avatar,"https://graph.facebook.com/" ++ binary_to_list(Id) ++ "/picture?type=large"},Ori#user.images)),
                 email = Email,
                 names = proplists:get_value(<<"first_name">>, Props),
                 surnames = proplists:get_value(<<"last_name">>, Props),
-                tokens = [{facebook,Id}|Ori#user.tokens],
+                tokens = userhelper:updateProplist({facebook,Id},Ori#user.tokens),
                 birth = {element(3, BirthDay), element(1, BirthDay), element(2, BirthDay)},
                 register_date = erlang:now(),
                 status = ok }.

+ 2 - 2
src/github.erl

@@ -54,11 +54,11 @@ registration_data(Props, github, Ori) ->
     Ori#user{   id= Email,
                 username = binary_to_list(proplists:get_value(<<"login">>, Props)),
                 display_name = Name,
-                images = [{gh_avatar,proplists:get_value(<<"avatar_url">>, Props)}|Ori#user.images],
+                images = userhelper:updateProplist({gh_avatar,proplists:get_value(<<"avatar_url">>, Props)},Ori#user.images),
                 email = Email,
                 names  = Name,
                 surnames = [],
-                tokens = [{github,Id}|Ori#user.tokens],
+                tokens = userhelper:updateProplist({github,Id},Ori#user.tokens),
                 register_date = erlang:now(),
                 status = ok }.
 

+ 3 - 3
src/google.erl

@@ -16,14 +16,14 @@ registration_data(Props, google, Ori)->
     Image = proplists:get_value(<<"picture">>, Props),
     GivenName = proplists:get_value(<<"given_name">>, Props),
     FamilyName = proplists:get_value(<<"family_name">>, Props),
-    Email = proplists:get_value(<<"email">>,Props),
+    Email = email_prop(Props,google),
     Ori#user{   id = Email,
                 display_name = proplists:get_value(<<"displayName">>, Props),
-                images = [{google_avatar,Image}|Ori#user.images],
+                images = userhelper:updateProplist({google_avatar,Image},Ori#user.images),
                 email = Email,
                 names = GivenName,
                 surnames = FamilyName,
-                tokens = [{google,Id}|Ori#user.tokens],
+                tokens = userhelper:updateProplist({google,Id},Ori#user.tokens),
                 register_date = erlang:now(),
                 sex = proplists:get_value(<<"gender">>, Props),
                 status = ok }.

+ 1 - 1
src/microsoft.erl

@@ -31,7 +31,7 @@ registration_data(Props, microsoft, Ori)->
                 email = Email,
                 names = GivenName,
                 surnames = FamilyName,
-                tokens = [{microsoft,Id}|Ori#user.tokens],
+                tokens = userhelper:updateProplist({microsoft,Id},Ori#user.tokens),
                 register_date = erlang:now(),
                 sex = proplists:get_value(<<"gender">>, Props),
                 status = ok }.

+ 2 - 2
src/twitter.erl

@@ -16,11 +16,11 @@ registration_data(Props, twitter, Ori)->
     Ori#user{   id = Email,
                 username = re:replace(UserName, "\\.", "_", [{return, list}]),
                 display_name = proplists:get_value(<<"screen_name">>, Props),
-                images = [{tw_avatar,proplists:get_value(<<"profile_image_url">>, Props)}|Ori#user.images],
+                images = userhelper:updateProplist({tw_avatar,proplists:get_value(<<"profile_image_url">>, Props)},Ori#user.images),
                 names = proplists:get_value(<<"name">>, Props),
                 email = Email,
                 surnames = [],
-                tokens = [{twitter,Id}|Ori#user.tokens],
+                tokens = userhelper:updateProplist({twitter,Id},Ori#user.tokens),
                 register_date = erlang:now(),
                 status = ok }.
 

+ 12 - 0
src/userhelper.erl

@@ -0,0 +1,12 @@
+-module(userhelper).
+-export([updateProplist/2]).
+
+-include_lib("kvs/include/user.hrl").
+
+updateProplist({K,V},P) ->
+    Prop = case P of undefine -> []; _P -> _P end,
+    case proplists:get_value(K,Prop) of
+        undefined -> [{K,V} | Prop];
+	        _ -> lists:keyreplace(K,1,Prop,{K,V})
+    end.
+