Git Product home page Git Product logo

anuko-time-tracker-proxy's People

Contributors

kylecartmell avatar msyyces8x95 avatar shaharsol avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

anuko-time-tracker-proxy's Issues

Create a proxy server to act as an API gateway for Anuko Time Tracker

We're using Anuko Time Tracker as an organisational time tracker. It's good product but doesn't have an API and therefore we're limited to it's very basic interface. Had we an API we could develop internally some mobile apps to use it, maybe a Slack command, SMS integration, whatever, but there's no API.

So - we want to deploy a node.js server with an API that will act as the client for Anuko Time Tracker. We will execute this node.js proxy server API commands, and it will act as a browser client for the Time Tracker.

Please use express framework.

Please register a team in their hosted service for development and for being able to understand the detailed requirements:

The server needs to implement only one method: "track-time". This method will receive login credentials and time tracking parameters, with which you can do a login via this form. And once logged in, it should populate and submit this form according to the parameters sent.

Please make the server endpoint configurable (we will use our own Anuko installation in production), and the all system deployable to Heroku.

codemill$200

Add a support for additional input parameter to this proxy server

This server is used as a proxy for the Anuko Time Tracker, a service without an API which we need an API for.

This server has a single method track-time that was developed against the free hosted version of Anuko. It enables to login to Anuko and submit the time form, and expose this behavior via a single HTTP POST, hence making it a sort of an API...

By default, Anuko required a project param when tracking time. It also enables to define tasks for each project, and we do use this implementation in production. This server, however, has been developed without support for passing a task parameter and we need to add this support.

For development purposes, I have prepared a pre-configured Anuko account, which is setup the same as our production installation with the task as a required field.

The endpoint is: https://timetracker.anuko.com/login.php
username: ttt-slack-staging
password: 12345678

You'll find a single project inside, and two predefined tasks within this project.

Your task is to make the track-time method of this proxy server support the propogation of the task param so in essence, the following POST will result in a record inserted to Anuko:

curl -X POST -d "login=ttt-slack-staging" -d "password=12345678" -d "project=ttt-slack" -d "task=development" -d "start=09:00" -d "finish=10:00" -d "date=2016-03-01" -d "note=helloworld" https://{domain-of-the-proxy-server}/track-time

codemill$20

Change the logic of an existing scraper

We've built a scraper with CodeMill in #1, #3 and #7 and the task is described in detail there.

Apparently, the server we were testing against was from a higher version of what we have in production, and due to legacy dependency, we can't upgrade the production server right now. The page that scraped is rendered differently so what worked in dev and staging doesn't work in production...

So, we need to change the logic of the scraper, so it fetches the relevant project_id from the bare javascript that is rendered to the page, rather then the DOM. The current logic for (index.js line 28) looks for an id attribute that simply doesn't exist in production. I do notice though that both in production and the staging server (provided in #7) there is bare javascript code that is rendered to the page and contains the required project_id.

codemill$20

A small nodejs scraping task

We had an issue with this project that was fixed by a codemill developer, but apparently the task was not properly defined by us, hence we need to solve the problem in another way.

Please read #3 for detailed explanation.

The solution the developer found was to use Anuko's /tasks.php in order to scrape tasks data. However, apparently in our production setup, the page /tasks.php is available only for admins, so most users can't use Anuko via this proxy.

I noticed that tasks data is also rendered as JS code into the /time.php page. The task is therefore exactly as it defined in #3, only this time there's another requirement which is to modify the solution to use scraping of the /time.php page.

codemill$20

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.