diff --git a/src/api/mock-data/randomuser/data.json b/src/api/mock-data/randomuser/data.json new file mode 100644 index 0000000..b99e29d --- /dev/null +++ b/src/api/mock-data/randomuser/data.json @@ -0,0 +1,32 @@ +{ + "results": [ + { + "name": { + "title": "mrs", + "first": "clara", + "last": "nielsen" + }, + "email": "clara.nielsen@example.com", + "dob": { + "date": "1992-07-13T03:28:06Z", + "age": 26 + }, + "phone": "76661752", + "id": { + "name": "CPR", + "value": "192779-0944" + }, + "picture": { + "large": "https://randomuser.me/api/portraits/women/21.jpg", + "medium": "https://randomuser.me/api/portraits/med/women/21.jpg", + "thumbnail": "https://randomuser.me/api/portraits/thumb/women/21.jpg" + } + } + ], + "info": { + "seed": "8a33ce0664c198bc", + "results": 1, + "page": 1, + "version": "1.2" + } +} diff --git a/src/environments/local.ts b/src/environments/local.ts index e9c5056..1b22edd 100644 --- a/src/environments/local.ts +++ b/src/environments/local.ts @@ -4,6 +4,7 @@ export default { endpointUrl: { ...environment.endpointUrl, // override any endpoints + randomuser: 'http://0.0.0.0:3000/api/mock-data/randomuser/data.json', }, isProduction: false, }; diff --git a/src/server.ts b/src/server.ts index 8535489..1771b0e 100644 --- a/src/server.ts +++ b/src/server.ts @@ -29,6 +29,7 @@ import ServerManager from './server/ServerManager'; manager.registerController(new AssetsController()); manager.registerController(new ReactController()); + // manager.registerController(new ApiController()); await manager.startServer(); diff --git a/src/server/controllers/ApiController.ts b/src/server/controllers/ApiController.ts new file mode 100644 index 0000000..47bc195 --- /dev/null +++ b/src/server/controllers/ApiController.ts @@ -0,0 +1,58 @@ +// import * as path from 'path'; +import * as Hapi from 'hapi'; +import IController from './IController'; +import RequestMethodEnum from '../../constants/RequestMethodEnum'; +// import * as util from 'util'; +// import * as fs from 'fs'; + +// const readFileAsync = util.promisify(fs.readFile); + +export default class ApiController implements IController { + + public mapRoutes(server: Hapi.Server): void { + server.route({ + method: RequestMethodEnum.Get, + path: '/api/{path*}', + handler: async (request: Hapi.Request, h: Hapi.ResponseToolkit): Promise => { + // const jsonPath = path.resolve(__dirname, `../../public${request.path}`); + + // const json = await readFileAsync(jsonPath, 'utf8'); + + // console.log(`JSON.parse(json)`, JSON.parse(json)); + return { + "results": [ + { + "name": { + "title": "mrs", + "first": "clara", + "last": "nielsen" + }, + "email": "clara.nielsen@example.com", + "dob": { + "date": "1992-07-13T03:28:06Z", + "age": 26 + }, + "phone": "76661752", + "id": { + "name": "CPR", + "value": "192779-0944" + }, + "picture": { + "large": "https://randomuser.me/api/portraits/women/21.jpg", + "medium": "https://randomuser.me/api/portraits/med/women/21.jpg", + "thumbnail": "https://randomuser.me/api/portraits/thumb/women/21.jpg" + } + } + ], + "info": { + "seed": "8a33ce0664c198bc", + "results": 1, + "page": 1, + "version": "1.2" + } + } + }, + }); + } + +} diff --git a/src/stores/user/UserService.ts b/src/stores/user/UserService.ts index deed51a..65b93d4 100644 --- a/src/stores/user/UserService.ts +++ b/src/stores/user/UserService.ts @@ -10,10 +10,16 @@ export default class UserService { public static async loadUser(): Promise { const endpoint: string = `${environment.endpointUrl.randomuser}?inc=picture,name,email,phone,id,dob`; - const response: AxiosResponse = await UserService._http.get(endpoint); - const randomUser = new RandomUserResponseModel(response.data); - return randomUser.results[0]; + try { + const response: AxiosResponse = await UserService._http.get(endpoint); + const randomUser = new RandomUserResponseModel(response.data); + + return randomUser.results[0]; + } catch (error) { + console.error(`error`, error); + return null; + } } } diff --git a/webpack.config.js b/webpack.config.js index c862fe4..b315d6a 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -124,6 +124,11 @@ const webpackConfig = { from: '**/*', to: 'assets', ignore: ['styles/**/*'] + }, + { + context: 'src/api', + from: '**/*', + to: 'api', } ]),