From b6cf34450f1e070d8cea8b6c5148cea980b7d8e8 Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Sun, 7 May 2017 23:20:34 +0100 Subject: [PATCH] Added session service --- ReactNativeClient/index.android.js | 27 +++++++------------ ReactNativeClient/src/base-model.js | 5 ++++ ReactNativeClient/src/base-service.js | 9 +++++++ ReactNativeClient/src/model/session.js | 11 ++++++++ .../src/service/session-service.js | 15 +++++++++++ ReactNativeClient/src/web-api.js | 11 +++++--- src/AppBundle/Model/Session.php | 2 -- 7 files changed, 57 insertions(+), 23 deletions(-) create mode 100644 ReactNativeClient/src/base-model.js create mode 100644 ReactNativeClient/src/base-service.js create mode 100644 ReactNativeClient/src/model/session.js create mode 100644 ReactNativeClient/src/service/session-service.js diff --git a/ReactNativeClient/index.android.js b/ReactNativeClient/index.android.js index 7df3d50913..dd82bba193 100644 --- a/ReactNativeClient/index.android.js +++ b/ReactNativeClient/index.android.js @@ -7,24 +7,21 @@ import { Provider } from 'react-redux' import { WebApi } from 'src/web-api.js' import { Database } from 'src/database.js' +//import { Session } from 'src/model/session.js'; + +import { SessionService } from 'src/service/session-service.js'; import { Log } from 'src/log.js' + let debugMode = true; +let clientId = 'A7D301DA7D301DA7D301DA7D301DA7D3'; let db = new Database(); db.setDebugEnabled(debugMode); db.open(); -// let test = { -// 'abcd' : 123, -// 'efgh' : 456, -// } - -// for (let [key, value] of test) { -// console.info(key, value); -// } let defaultState = { 'myButtonLabel': 'clicko123456', @@ -129,16 +126,12 @@ class App extends Component { } -// let api = new WebApi('http://192.168.1.2', 'A7D301DA7D301DA7D301DA7D301DA7D3'); -// api.exec('POST', 'sessions', null, { -// 'email': 'laurent@cozic.net', -// 'password': '12345678', -// }) -// .then(function(data) { +// let api = new WebApi('http://192.168.1.2'); +// let sessionService = new SessionService(api); +// sessionService.login('laurent@cozic.net', '12345678', clientId).then((session) => { // console.info('GOT DATA:'); -// console.info(data); -// }) -// .catch(function(error) { +// console.info(session); +// }).catch(function(error) { // console.warn('GOT ERROR:'); // console.warn(error); // }) diff --git a/ReactNativeClient/src/base-model.js b/ReactNativeClient/src/base-model.js new file mode 100644 index 0000000000..2252ee421d --- /dev/null +++ b/ReactNativeClient/src/base-model.js @@ -0,0 +1,5 @@ +class BaseModel { + +} + +export { BaseModel }; \ No newline at end of file diff --git a/ReactNativeClient/src/base-service.js b/ReactNativeClient/src/base-service.js new file mode 100644 index 0000000000..26875f980d --- /dev/null +++ b/ReactNativeClient/src/base-service.js @@ -0,0 +1,9 @@ +class BaseService { + + constructor(webApi) { + this.api_ = webApi; + } + +} + +export { BaseService }; \ No newline at end of file diff --git a/ReactNativeClient/src/model/session.js b/ReactNativeClient/src/model/session.js new file mode 100644 index 0000000000..9730fe058a --- /dev/null +++ b/ReactNativeClient/src/model/session.js @@ -0,0 +1,11 @@ +import { BaseModel } from 'src/base-model.js'; + +class Session extends BaseModel { + + static login(email, password) { + + } + +} + +export { Session }; \ No newline at end of file diff --git a/ReactNativeClient/src/service/session-service.js b/ReactNativeClient/src/service/session-service.js new file mode 100644 index 0000000000..eabe67003d --- /dev/null +++ b/ReactNativeClient/src/service/session-service.js @@ -0,0 +1,15 @@ +import { BaseService } from 'src/base-service.js'; + +class SessionService extends BaseService { + + login(email, password, clientId) { + return this.api_.post('sessions', null, { + 'email': email, + 'password': password, + 'client_id': clientId, + }); + } + +} + +export { SessionService }; \ No newline at end of file diff --git a/ReactNativeClient/src/web-api.js b/ReactNativeClient/src/web-api.js index 1ddeca3ef6..19acbe96fb 100644 --- a/ReactNativeClient/src/web-api.js +++ b/ReactNativeClient/src/web-api.js @@ -2,9 +2,8 @@ const queryString = require('query-string'); class WebApi { - constructor(baseUrl, clientId) { + constructor(baseUrl) { this.baseUrl_ = baseUrl; - this.clientId_ = clientId; } makeRequest(method, path, query, data) { @@ -36,11 +35,15 @@ class WebApi { fetch(r.url, r.options).then(function(response) { let responseClone = response.clone(); return response.json().then(function(data) { - resolve(data); + if (data && data.error) { + reject(data); + } else { + resolve(data); + } }) .catch(function(error) { responseClone.text().then(function(text) { - reject('Cannot parse JSON: ' + text); + reject(new Error('Cannot parse JSON: ' + text)); }); }); }) diff --git a/src/AppBundle/Model/Session.php b/src/AppBundle/Model/Session.php index 0511dc389d..d3702799a1 100755 --- a/src/AppBundle/Model/Session.php +++ b/src/AppBundle/Model/Session.php @@ -29,8 +29,6 @@ class Session extends BaseModel { $ok = self::verifyPassword($password, $user->password); if (!$ok) throw new AuthException(); - if (!$clientId) throw new \Exception('clientId is required'); - $session = new Session(); $session->owner_id = $user->id; $session->client_id = $clientId;