Advertisement
sashomaga

Persister pattern

Jun 30th, 2013
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var persisters = (function () {
  2.     var nickname = localStorage.getItem("nickname");
  3.     var sessionKey = localStorage.getItem("sessionKey");
  4.     function saveUserData(userData) {
  5.         localStorage.setItem("nickname", userData.nickname);
  6.         localStorage.setItem("sessionKey", userData.sessionKey);
  7.         nickname = userData.nickname;
  8.         sessionKey = userData.sessionKey;
  9.     }
  10.     function clearUserData() {
  11.         localStorage.removeItem("nickname");
  12.         localStorage.removeItem("sessionKey");
  13.         nickname = "";
  14.         sessionKey = "";
  15.     }
  16.  
  17.     var MainPersister = Class.create({
  18.         init: function (rootUrl) {
  19.             this.rootUrl = rootUrl;
  20.             this.user = new UserPersister(this.rootUrl);
  21.             this.game = new GamePersister(this.rootUrl);
  22.         },
  23.         isUserLoggedIn: function () {
  24.             var isLoggedIn = nickname != null && sessionKey != null;
  25.             return isLoggedIn;
  26.         },
  27.         nickname: function () {
  28.             return nickname;
  29.         }
  30.     });
  31.     var UserPersister = Class.create({
  32.         init: function (rootUrl) {
  33.             //...api/user/
  34.             this.rootUrl = rootUrl + "user/";
  35.         },
  36.         login: function (user, success, error) {
  37.             var url = this.rootUrl + "login";
  38.             var userData = {
  39.                 username: user.username,
  40.                 authCode: CryptoJS.SHA1(user.username + user.password).toString()
  41.             };
  42.  
  43.             httpRequester.postJSON(url, userData,
  44.                 function (data) {
  45.                     saveUserData(data);
  46.                     success(data);
  47.                 }, error);
  48.         },
  49.         register: function (user, success, error) {
  50.             var url = this.rootUrl + "register";
  51.             var userData = {
  52.                 username: user.username,
  53.                 nickname: user.nickname,
  54.                 authCode: CryptoJS.SHA1(user.username + user.password).toString()
  55.             };
  56.             httpRequester.postJSON(url, userData,
  57.                 function (data) {
  58.                     saveUserData(data);
  59.                     success(data);
  60.                 }, error);
  61.         },
  62.         logout: function (success, error) {
  63.             var url = this.rootUrl + "logout/" + sessionKey;
  64.             httpRequester.getJSON(url, function (data) {
  65.                 clearUserData();
  66.                 success(data);
  67.             }, error)
  68.         },
  69.         scores: function (success, error) {
  70.         }
  71.     });
  72.     var GamePersister = Class.create({
  73.         init: function (url) {
  74.             this.rootUrl = url + "game/";
  75.         },
  76.         create: function (game, success, error) {
  77.             var gameData = {
  78.                 title: game.title,
  79.                 number: game.number
  80.             };
  81.             if (game.password) {
  82.                 gameData.password = CryptoJS.SHA1(game.password).toString();
  83.             }
  84.             var url = this.rootUrl + "create/" + sessionKey;
  85.             httpRequester.postJSON(url, gameData, success, error);
  86.         },
  87.         join: function (game, success, error) {
  88.             var gameData = {
  89.                 gameId: game.gameId,
  90.                 number: game.number
  91.             };
  92.             if (game.password) {
  93.                 gameData.password = CryptoJS.SHA1(game.password).toString();
  94.             }
  95.             var url = this.rootUrl + "join/" + sessionKey;
  96.             httpRequester.postJSON(url, gameData, success, error);
  97.         },
  98.         start: function () {
  99.  
  100.         },
  101.         myActive: function (success, error) {
  102.             var url = this.rootUrl + "my-active/" + sessionKey;
  103.             httpRequester.getJSON(url, success, error);
  104.         },
  105.         open: function (success, error) {
  106.             var url = this.rootUrl + "open/" + sessionKey;
  107.             httpRequester.getJSON(url, success, error);
  108.         },
  109.         state: function (gameId, success, error) {
  110.             var url = this.rootUrl + gameId + "/state/" + sessionKey;
  111.             httpRequester.getJSON(url, success, error);
  112.         }
  113.     });
  114.     var GuessPersister = Class.create({
  115.         init: function () {
  116.  
  117.         },
  118.         make: function () {
  119.  
  120.         }
  121.     });
  122.     var MessagesPersister = Class.create({
  123.         init: function () {
  124.  
  125.         },
  126.         unread: function () {
  127.  
  128.         },
  129.         all: function () {
  130.  
  131.         }
  132.     });
  133.     return {
  134.         get: function (url) {
  135.             return new MainPersister(url);
  136.         }
  137.     };
  138. }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement