Assignment description:Remembering the Basic Functionalities from Assignment #1In the first assignment you started development on a backend for a Twitter-like application....













Assignment description:





























Remembering the Basic Functionalities from Assignment #1











In the first assignment you started development on a backend for a Twitter-like application. Please remember its basic functionality:








1.








There should be at least 2 roles – Producer and Subscriber;








2.








Producer role is the same as Subscriber but has some extra capabilities – it can produce messages, which Subscribers get;








3.








User may have both roles at the same time;








4.








Users having Subscriber role may subscribe to as many Producers as they want to;








5.








All messages stored in database, can be easily searched based on at least criteria:








a.








User (Producer) ID – means who wrote it;








b.








Message content




















Understanding the general concept for this application from Assignment #2











To recap Assignment #2, as well you were provided with the following as a general concept for your application.








1.








There’s a back-end application which has an exposed API allowing users to be authenticated and authorized (use data model from module 5) – UserManagementService;








2.








User must be logged in and have obtained a token. For simplicity, imagine the token is a simple ID, like number, UUID, hash, something else, producing by the UserManagementService at the first authentication request and returned to the user for further authorization purposes.








3.








After the user has been authenticated and obtained a token, he/she is able to use other APIs, related to publishing and obtaining messages; in case of unauthenticated access user should be simply redirected to UserManagementService to obtain a token; if user has a token but his/her rights are insufficient to perform a request – there should be appropriate response with HTTP status 401;








4.








Using other APIs, user is able to publish messages and/or receive messages published by other users.




















Assignment #3 Overview











As you embark on your third consecutive assignment, at this point in your development, you should have finished all preparation steps in the 2 previous assignments. This preparation has led you to this assignment, in which you are required to convert your previous work into a working code according to the data model and UMLs you’ve previously created.








For simplicity purposes, consider the following:








1.








All users trying to achieve an API for now need to provide a token correlated to any chosen user from UserManagementService; your service








2.








This triggers API,








3.








Therefore you need to authorize any incoming request by making a blocking API call to UserManagementService to obtain permission for this chosen user by comparing it with the issues tokens.








4.








For now use UUID as a token.














a.














That UUID should be generated for any user, requesting UserManagementService with username and password in case that username and password are fit to any record inside

the UserManagementService’s database.























Note: This is also a way to implement tokens for the application created in Assignment #2











5.








As a package name for your application, please use the following pattern: org.ac.cst8277.{Last Name}.{Fisrt Name}








6.








You should use Spring Boot Framework for your services with Netty as an application server (use the following dependency in your pom.xml file):




















org.springframework.boot












spring-boot-starter-webflux






























Assignment Tasks:








Now that you have prepared all required content for your application in Assignments #1 and #2, you will now begin implementation of the following.






















What you should do:








1.








Having a data model from assignment # 1 and UML diagrams from assignment # 2 you need to implement your services up to a working condition.








2.








As a result of this assignment you should get working and tested code providing basic Twitter functionality.














Submission Guidelines:














3.








You need to submit an archive with name pattern {Course #}_{Section #}_{Last name}_{First name}.zip containing your project source code

and short video file demonstrating the following:











·








How you build all services (either from terminal window or from your IDE)








·








How you start all services and their status after start, including host and port they start listen to








·








How you issue your requests:














i.








Get all users














ii.








Get all roles














iii.








Add user














iv.








Get all messages














v.








Get messages produces by specific producer














vi.








Get messages for specific subscriber

















Please pay attention your video should be quite short and not exceed the limit of 100Mb per file. It is not required to record yourself, your voice with comments or anything else, unrelated to working application. In my case it was enough to record a terminal window and an application I used to issue HTTP requests (Postman), so you may do exactly the same.















Feb 27, 2023
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here