Register
Submit a solution
The challenge is finished.

Challenge Overview

Welcome to Project Luettich - Man in the Middle Nodejs Contest. This contest is part of a series of contests to build Topcoder’s new offering - Topcoder X - where we use Github and Gitlab to run Bug Bash contests.

 

Project Overview

Until now, Topcoder has been running Bug Bash contests off Github and Gitlab. The process is however still in manual transmission - labels are added manually, payments are made manually. There is no direct integration between the Github and Gitlab platforms and Topcoder. This project is aimed to integrate Github and Gitlab platforms with Topcoder.

 

Contest Details

Create a nodejs server to handle events that Github raises. Namely, we are looking at handling the following events:

  1. Issue Created

  2. Issue Updated

  3. User comments on an issue

  4. Issue is assigned to a user

  5. A label is assigned to an issue

  6. Pull Request is created

  7. Pull Request is closed without merging

  8. Pull Request is accepted / merged.

  9. User is unassigned from an issue

 

We will have an event handler that passes on the event data to a messaging queue - Apache Kafka in this case. So Github sends the events to your server, your server then puts the message onto Kafka which is then read by another Nodejs server, which ends up calling certain Topcoder APIs based on the event raised.

 

For this contest, you need to provide:

  1. The nodejs server that handles events from Github and pushes them on Kafka

  2. The nodejs server that reads messages off Kafka.

You don’t have to call any Topcoder APIs for this contest.

 

When passing the event data into the message queue, you only need to pass the following attributes (Github sends a lot more information and you need to narrow it down to just the following fields) depending on the nature of the event:

  1. Repository id and full name

  2. Issue number, title, body, comment, owner (created by), labels, status (use action attribute in the payload), assignee.

  3. Pull request number, title, body, comment, owner (created by), status (use action attribute in the payload), assignee.

 

Points To Note

  • Use Nodejs version 8

  • Use Basic Authentication for Github - username and password will be provided in a configuration file.

You can assume that the repository to “watch” for events will also be specified in the configuration file. There will be multiple repositories that we will specify here. The repository will be a HTTPS url that is used to clone the repository. E.g. https://github.com/topcoderinc/cab (this is just a sample url and NOT the actual repository that we will be working with).
 

Final Submission Guidelines

Zip and upload your code to Topcoder. The winner of the contest will be asked to create a pull request to our repository.

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30059401