Challenge Overview
Welcome to Topcoder Submission API - Event Processor Contest. As part of this contest, you will create a Kafka message handler to process events.
CAUTION: The submission phase for the contest is only 24 hours. Also, we have two $300 payments for this contest. We will be strict on the code quality.
Contest Details
Topcoder is updating its api and one of the apis being updated is the Submission api. One of the scenarios that we are taking care of here is that when a user uploads a submission to Topcoder for a contest, an app (not relevant for this contest) creates a message that contains details about this submission and sends it to an Apache Kafka instance.
For this contest, we are looking at creating an app named "The Processor" using Nodejs (version 8) that consumes the message related to the uploaded submission from Kafka and carries out additional actions based on the message received. We will share the message data structure in the contest forums.
The processor is expected to carry out the following tasks (in order):
-
Check the fileUrl attribute in the message. If it is not located in the DMZ Storage area, fetch the file from the remote area and save it to the DMZ Storage area
-
The next step will be to scan the file using an antivirus. We are still working the details of this out so you will mock it for this contest - create a service that randomly returns true or false indicating if the file scanned is clean or has a vulnerability.
-
If the scan indicates the file is clean, move the file out of the DMZ Storage area and into the clean submission storage. Additionally, proceed to create a Review object using Topcoder’s submission api
-
If the scan indicates the file has a vulnerability, move the file out of the DMZ Storage area and into the Quarantine area. Additionally proceed to create a Review object using Topcoder’s submission api.
-
The details about the review object structure will be shared in the contest forum along with the submission api.
Points To Note
-
Ensure that you support https connections when using Kafka. Please use the no-kafka module
-
The processor will listen for messages on a specific Kafka topic. Make the topic to listen as a configuration that reads off an environment variable.
-
The remote area, DMZ Storage area, clean submission storage, Quarantine area - each of these refers to an Amazon S3 bucket. Thus, in your configuration, you will have three configurations for each of the locations (remote area location is in the message and is NOT part of the configuration). None of them are the same and refer to a different bucket (in Amazon S3).
Kindly use the standard library as your style guide and to lint your submission
Final Submission Guidelines
Zip your submission and upload it to Topcoder