diff --git a/package.json b/package.json index 0f97dc4..d4a3a8c 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,10 @@ { "name": "netstar-categorizer", "version": "1.0.0", - "main": "src/app.js", + "main": "src/server.js", "scripts": { - "dev": "node --watch src/app.js" + "dev:server": "node --watch src/server.js", + "dev:client": "node src/client.js" }, "keywords": [], "author": "", diff --git a/src/app.js b/src/app.js index f5defa5..dde5770 100644 --- a/src/app.js +++ b/src/app.js @@ -1,16 +1,19 @@ const { GetCategoryUseCase } = require('./use-cases/get-category-use-case.js') -const categoriesMapping = require('./etc/categories-mapping.json') const { CategoryConverterUseCase } = require('./use-cases/category-converter-use-case.js') -const getCategoryUseCase = new GetCategoryUseCase(); +const categoriesMapping = require('./etc/categories-mapping.json') -(async () => { - const categoryId = await getCategoryUseCase.execute() - console.log(categoryId) -})() +const getCategory = new GetCategoryUseCase(); +const categoryConverter = new CategoryConverterUseCase({categoriesMapping}); + +module.exports = async function app(domain){ + const category = await getCategory.execute(domain) + + const categoryConverted = await categoryConverter.execute(category) + + return categoryConverted +} // const categoryConverter = new CategoryConverterUseCase({ categoriesMapping }) - -getCategoryUseCase.execute('utorrent.com') \ No newline at end of file diff --git a/src/client.js b/src/client.js new file mode 100644 index 0000000..95df47e --- /dev/null +++ b/src/client.js @@ -0,0 +1,29 @@ +const dgram = require('dgram'); +const client = dgram.createSocket('udp4'); + +const message = Buffer.from('facebook.com'); + +const serverHost = 'localhost'; +const serverPort = 41234; + +client.send(message, 0, message.length, serverPort, serverHost, (err) => { + if (err) { + console.error(err); + client.close(); + } else { + console.log('Message sent to server'); + } +}); + +// Handle incoming messages from the server +client.on('message', (msg, rinfo) => { + console.log(`Client received: ${msg} from ${rinfo.address}:${rinfo.port}`); + // Close the client socket if you don't expect any more messages + client.close(); +}); + +// Optional: handle any errors +client.on('error', (err) => { + console.log(`Client error: ${err.stack}`); + client.close(); +}); \ No newline at end of file diff --git a/src/server.js b/src/server.js new file mode 100644 index 0000000..e07d833 --- /dev/null +++ b/src/server.js @@ -0,0 +1,25 @@ +const dgram = require('dgram'); +const server = dgram.createSocket('udp4'); +const app = require('./app') + +server.on('error', (err) => { + console.log(`Server error:\n${err.stack}`); + server.close(); +}); + +server.on('message', async (msg, rinfo) => { + console.log(`Server got: ${msg} from ${rinfo.address}:${rinfo.port}`); + + const categories = await app(msg.toString()) + + server.send(categories, rinfo.port, rinfo.address, (err) => { + if (err) server.close(); + }); +}); + +server.on('listening', () => { + const address = server.address(); + console.log(`Server listening ${address.address}:${address.port}`); +}); + +server.bind(41234); \ No newline at end of file diff --git a/src/use-cases/category-converter-use-case.js b/src/use-cases/category-converter-use-case.js index f855f78..d55b2b0 100644 --- a/src/use-cases/category-converter-use-case.js +++ b/src/use-cases/category-converter-use-case.js @@ -4,8 +4,10 @@ class CategoryConverterUseCase { this.categoriesMapping = categoriesMapping } - execute() { + execute(category) { + const entry = this.categoriesMapping.find(item => item.id === category) + return entry ? entry.related[0].split(', ').map(str => str.trim()) : null; } }