ADD FIX#50 : numérotation des erreurs et préparation à leur traduction (coté serveur
[euphorik.git] / modules / erl / euphorik_protocole.erl
index a321287..82a4fce 100755 (executable)
@@ -47,7 +47,7 @@ register([{login, Login}, {password, Password}, {profile, Profile_json}], IP) ->
    if Can_register ->\r
          case euphorik_bd:user_by_login(Login) of\r
             {ok, _} ->\r
-               erreur("Login déjà existant");\r
+               erreur(10);\r
             _ ->\r
                User = euphorik_bd:nouveau_user(Login, Password, generer_cookie(), profile_from_json(Profile_json)),\r
                euphorik_bd:update_ip(User#user.id, IP),\r
@@ -69,7 +69,7 @@ register([{profile, Profile_json}], IP) ->
    end.\r
    \r
 erreur_register_flood() ->\r
-   erreur("Trop de register (flood)").\r
+   erreur(20).\r
    \r
 \r
 % Un utilisateur se logge (avec un couple {login, mot de passe})\r
@@ -79,7 +79,7 @@ login([{login, Login}, {password, Password}], IP) ->
          loginUser(User, IP);\r
       _ -> \r
          timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN),\r
-         erreur("Couple login/pass introuvable")\r
+         erreur(30)\r
    end;\r
 % Un utilisateur se logge (avec un cookie)\r
 login([{cookie, Cookie}], IP) ->\r
@@ -88,7 +88,7 @@ login([{cookie, Cookie}], IP) ->
          loginUser(User, IP);\r
       _ ->\r
          timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN),\r
-         erreur("Authentification impossible par cookie")\r
+         erreur(40)\r
    end.\r
    \r
    \r
@@ -122,9 +122,9 @@ profile(
             ok ->\r
                json_reponse_ok();\r
             login_deja_pris ->\r
-               erreur("Login déjà pris");\r
+               erreur(10);\r
             _ ->\r
-               erreur("Impossible de mettre à jour le profile")\r
+               erreur(50)\r
          end\r
    end.\r
 \r
@@ -269,10 +269,10 @@ wait_event([{page, "admin"}, {last_troll, Last_troll}]) ->
             ]\r
          };                  \r
       _ ->\r
-         erreur("timeout")\r
+         erreur(60)\r
    end;\r
 wait_event(_) ->\r
-   erreur("Page inconnue").\r
+   erreur(70).\r
 \r
 \r
 % Attend un événement pour la page "Chat" et renvoie soit un troll soit les messages manquants au client.\r
@@ -426,23 +426,23 @@ put_message(
       {ok, User} ->\r
          case euphorik_bd:est_banni(User#user.id) of\r
             {true, Temps_restant} ->\r
-               erreur("Vous êtes banni pour encore " ++ format_minutes(Temps_restant));\r
+               erreur(80, format_minutes(Temps_restant));\r
             _ ->\r
                Strip_content = string:strip(Content),\r
                if Strip_content =:= [] ->\r
-                     erreur("Message vide");\r
+                     erreur(90);\r
                   true ->\r
                      % attention : non-atomique (update_pseudo+nouveau_message)\r
                      euphorik_bd:update_pseudo_user(User#user.id, Nick),\r
                      case euphorik_bd:nouveau_message(Strip_content, User#user.id, Answer_to) of\r
-                        {erreur, R} -> erreur("Impossible d'ajouter un nouveau message. Raison : " ++ R);\r
+                        {erreur, R} -> erreur(100, R);\r
                         _ ->\r
                            json_reponse_ok()\r
                      end\r
                end\r
          end;\r
    _ ->\r
-      erreur("Utilisateur inconnu")\r
+      erreur(110)\r
    end.\r
 \r
 \r
@@ -459,7 +459,7 @@ ban(
          {ok, User1 = #user{ek_master = true}} ->\r
             case euphorik_bd:user_by_id(User_id) of\r
                {ok, User1} ->\r
-                  erreur("Il n'est pas possible de s'auto bannir");\r
+                  erreur(120);\r
                {ok, #user{ek_master = false, profile = Profile2} = User2} ->\r
                   euphorik_bd:ban(User2#user.last_ip, Duration),\r
                   euphorik_bd:nouveau_message_sys(lists:flatten(io_lib:format("''~s~s'' est ~s pour ~s.~s",\r
@@ -473,12 +473,12 @@ ban(
                   ))),\r
                   json_reponse_ok();\r
                {ok, _} ->\r
-                  erreur("L'utilisateur est lui même un ekMaster");\r
+                  erreur(130);\r
                _ ->\r
-                  erreur("Utilisateur à bannir inconnu")\r
+                  erreur(140)\r
             end;\r
          _ ->\r
-            erreur("Utilisateur inconnu ou non ek master")\r
+            erreur(150)\r
       end.\r
       \r
 \r
@@ -511,12 +511,12 @@ slap(
                   ))),\r
                   json_reponse_ok();\r
                {ok, _} ->\r
-                  erreur("L'utilisateur est lui même un ekMaster");\r
+                  erreur(130);\r
                _ ->\r
-                  erreur("Utilisateur à slaper inconnu")\r
+                  erreur(160)\r
             end;\r
          _ ->\r
-            erreur("Utilisateur inconnu ou non ek master")\r
+            erreur(170)\r
       end.\r
       \r
  \r
@@ -531,14 +531,14 @@ put_troll(
       {ok, User = #user{ek_master = true}} ->\r
          case euphorik_bd:put_troll(User#user.id, Content) of\r
             max_troll_reached_per_user ->\r
-               erreur(lists:flatten(io_lib:format("Le nombre de troll maximum par utilisateur est atteint : ~w ", [?NB_MAX_TROLL_WAITING_BY_USER])));\r
+               erreur(180, ?NB_MAX_TROLL_WAITING_BY_USER);\r
             max_troll_reached ->\r
-               erreur(lists:flatten(io_lib:format("Le nombre de troll maximum en attente est atteint : ~w ", [?NB_MAX_TROLL_WAITING])));\r
+               erreur(190, ?NB_MAX_TROLL_WAITING);\r
             _Id ->\r
                json_reponse_ok()\r
          end;\r
       _ ->\r
-         erreur("Seul les ekMaster peuvent proposer des trolls")\r
+         erreur(200)\r
    end.\r
    \r
    \r
@@ -558,10 +558,10 @@ mod_troll(
                euphorik_bd:mod_troll(Troll_id, Content),\r
                json_reponse_ok();\r
             _ ->\r
-               erreur("Vous ne posséder pas ce troll")\r
+               erreur(210)\r
          end;\r
       _ ->\r
-         erreur("Seul les ekMaster peuvent proposer des trolls")\r
+         erreur(220)\r
       end.\r
 \r
    \r
@@ -580,10 +580,10 @@ del_troll(
                euphorik_bd:del_troll(Troll_id),\r
                json_reponse_ok();\r
             _ ->\r
-               erreur("Vous ne posséder pas ce troll")\r
+               erreur(210)\r
          end;\r
       _ ->\r
-         erreur("Seul les ekMaster peuvent proposer des trolls")\r
+         erreur(220)\r
    end.\r
    \r
    \r
@@ -598,7 +598,7 @@ unban_ip(
          euphorik_bd:deban(euphorik_common:unserialize_ip(IP)),\r
          json_reponse_ok();\r
       _ ->\r
-         erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies")\r
+         erreur(230)\r
    end.\r
    \r
    \r
@@ -638,16 +638,25 @@ list_banned_ips(
             ]\r
          };\r
       _ ->\r
-         erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies")\r
+         erreur(230)\r
    end.\r
 \r
 \r
 % Construit une erreur\r
-erreur(Message) ->\r
+erreur(Num, Args) ->\r
+   erreur_json(Num, lists:flatten(io_lib:format(euphorik_bd:get_texte(Num), Args))).\r
+   \r
+   \r
+erreur(Num) ->\r
+   erreur_json(Num, euphorik_bd:get_texte(Num)).\r
+   \r
+   \r
+erreur_json(Num, Mess) ->\r
    {\r
       struct, [\r
          {reply, "error"},\r
-         {error_message, Message}\r
+         {no, Num},\r
+         {error_message, Mess}\r
       ]\r
    }.\r
    \r