Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 1 addition & 27 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,29 +1,3 @@
{
"env": {
"browser": true,
"es6": true
},
"extends": "eslint:recommended",
"parserOptions": {
"sourceType": "module"
},
"rules": {
"no-console": 0,
"indent": [
"error",
2
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
]
}
"extends": "airbnb-base"
}
22 changes: 22 additions & 0 deletions image-message.model.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
var Message = require('./message.model');

class ImageMessage extends Message {
constructor(text = '', created = Date.now(),
url = '', thumbnail = '') {
super(text, created);
this.url = url;
this.thumbnail = thumbnail;
}

/**
* Method overriden
* @returns String
*/
toString() {
return `Photo${super.toString()} ` +
`- Url: ${this.url} ` +
`- Thumbnail: ${this.thumbnail}`;
}
}

module.exports = ImageMessage;
46 changes: 46 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
const Message = require('./message.model');
const ImageMessage = require('./image-message.model');
const fs = require('fs');
const path = require('path');

const emptyMessage = new Message();
const emptyPhotoMessage = new ImageMessage();

// console.log(emptyMessage);
// console.log(emptyPhotoMessage);

class MessagesService {
constructor() {
let resolvePromise;
let rejectPromise;
const filePath = path.join(__dirname, 'messages.json');
this.messagePromise = new Promise((resolve, reject) => {
resolvePromise = resolve;
rejectPromise = reject;
});
fs.readFile(filePath, { encoding: 'utf-8' }, (err, data) => {
if (err) {
rejectPromise(err);
} else {
const dataArray = JSON.parse(data);
const dataObj = dataArray.map(item =>
new Message(item.text, item.created));
resolvePromise(dataObj);
}
});
}

get messages() {
return this.messagePromise;
}
}

const messageService = new MessagesService();
messageService.messages.then((messages) => {
for (let x = 0; x < messages.length; x++) {
console.log(String(messages[x]));
}
// console.log(messages);
}).catch((err) => {
console.log(err);
});
27 changes: 27 additions & 0 deletions message.model.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class Message {
constructor(text = '', created = Date.now()) {
this.text = text;
this.created = created;
}
get created() {
return this._created;
}
set created(created) {
if (typeof created === 'undefined' || isNaN(created)) {
throw new Error('Invalid created');
}
if (Message.hasOwnProperty.call(this, '_created')) {
throw new Error('Created already defined');
}
this._created = created;
}
toString() {
const { created, text } = this;
return `Message created at: ${created} - Text: ${text}`;
}
static newEmptyMessage() {
return new Message();
}
}

module.exports = Message;
9 changes: 9 additions & 0 deletions messages-generator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
console.log('[');
for (let x = 0; x < 50; x += 1) {
console.log(
` {
"text": "Message ${x + 1}",
"created": ${Date.now() - parseInt(Math.random() * 20000, 10)}` +
'\n },');
}
console.log(']');
202 changes: 202 additions & 0 deletions messages.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
[
{
"text": "Message 1",
"created": 1485580795316
},
{
"text": "Message 2",
"created": 1485580806337
},
{
"text": "Message 3",
"created": 1485580806916
},
{
"text": "Message 4",
"created": 1485580800756
},
{
"text": "Message 5",
"created": 1485580808356
},
{
"text": "Message 6",
"created": 1485580807654
},
{
"text": "Message 7",
"created": 1485580806217
},
{
"text": "Message 8",
"created": 1485580812551
},
{
"text": "Message 9",
"created": 1485580798307
},
{
"text": "Message 10",
"created": 1485580811762
},
{
"text": "Message 11",
"created": 1485580797617
},
{
"text": "Message 12",
"created": 1485580796283
},
{
"text": "Message 13",
"created": 1485580808593
},
{
"text": "Message 14",
"created": 1485580804604
},
{
"text": "Message 15",
"created": 1485580805217
},
{
"text": "Message 16",
"created": 1485580812013
},
{
"text": "Message 17",
"created": 1485580801476
},
{
"text": "Message 18",
"created": 1485580796691
},
{
"text": "Message 19",
"created": 1485580809150
},
{
"text": "Message 20",
"created": 1485580809749
},
{
"text": "Message 21",
"created": 1485580798689
},
{
"text": "Message 22",
"created": 1485580813533
},
{
"text": "Message 23",
"created": 1485580809304
},
{
"text": "Message 24",
"created": 1485580800410
},
{
"text": "Message 25",
"created": 1485580813492
},
{
"text": "Message 26",
"created": 1485580804881
},
{
"text": "Message 27",
"created": 1485580807428
},
{
"text": "Message 28",
"created": 1485580799216
},
{
"text": "Message 29",
"created": 1485580806498
},
{
"text": "Message 30",
"created": 1485580807991
},
{
"text": "Message 31",
"created": 1485580809480
},
{
"text": "Message 32",
"created": 1485580813968
},
{
"text": "Message 33",
"created": 1485580797256
},
{
"text": "Message 34",
"created": 1485580803548
},
{
"text": "Message 35",
"created": 1485580814760
},
{
"text": "Message 36",
"created": 1485580796059
},
{
"text": "Message 37",
"created": 1485580813855
},
{
"text": "Message 38",
"created": 1485580802752
},
{
"text": "Message 39",
"created": 1485580805371
},
{
"text": "Message 40",
"created": 1485580795256
},
{
"text": "Message 41",
"created": 1485580811512
},
{
"text": "Message 42",
"created": 1485580813071
},
{
"text": "Message 43",
"created": 1485580814474
},
{
"text": "Message 44",
"created": 1485580798669
},
{
"text": "Message 45",
"created": 1485580803371
},
{
"text": "Message 46",
"created": 1485580801132
},
{
"text": "Message 47",
"created": 1485580799789
},
{
"text": "Message 48",
"created": 1485580811027
},
{
"text": "Message 49",
"created": 1485580814344
},
{
"text": "Message 50",
"created": 1485580804181
}
]
Loading