Challenge Overview
We deal a lot with Hercules services across a variety of projects, including websites, C++ embedded systems, and mobile apps for iOS and Android. We have an existing set of base service calls implemented in Node. This challenge will expand the VPIL service with some new calls and a dev target (in addition to prod)
VPIL
A sample Ruby script will be provided in the forum that covers the required calls to be implemented in the VPIL service. The VPIL service should be expanded to include the new calls and properly integrated with the other services in the base libraries. Don't duplicate code - reuse the existing base classes that already exist!
New calls
New calls include:
* remote_tune
* toggle_power_save
* get_last_watched
* get_full_screen_state
* toggle_cc
* exit_screensaver
* process_deeplink
Dev API target
The client has provided a dev endpoint we can use, but unfortunately it is not publicly available. We can call it through a proxy we have set up called tentillum. The details on how these calls can be made is found in the script provided in the forum. The dev flag should be configurable for each call, defaulting to false if it's not provided. This way we can test each call individually for prod vs. dev. Please make sure the tentillum server is configurable.
Code
The existing code will be linked to from the forum, including the README on how to build and test the base libraries.
Unit tests
You MUST provide unit tests to fully cover the new service calls. You should test positive *and* negative values (incorrect or missing parameters, etc...)
Submission
Your submission to OR should be a Git patch file that can be applied to see the fixes. Here is documentation on how to generate a Git patch file:
https://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/
For this challenge we will target commit hash e5e17ca2ef96005446dd5adef3baaf9b9c118a8c.