bytnar / devtest

...o.O...

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

http://www.christopherbloom.com/2015/04/26/setting-up-a-rails-5-app-from-edge/

dev test

Prepare a rails 4.2 application using Ruby 2.1 , which would have 2 isolated APIs, public and private.

Private API responding to the following requests:

  • 1 - GET locations/:country_code
  • 2 - GET target_groups/:country_code
  • 3 - POST evaluate_target

Public API responding to the following requests

  • 4 - GET locations/:country_code
  • 5 - GET target_groups/:country_code

The authentication type is up to you and you should assume there is no firewall so the server would be public facing and needs to be secured properly when necessary.

models

Country is linked with LocationGroup via one to many relationship and with TargetGroup via many to many but only with the root nodes:

  • id, country_code, panel_provider_id

PanelProvider

  • id, code

Location is linked with LocationGroup via many to many relationship:

  • id, name, external_id, secret_code

LocationGroup:

  • id, name, country_id, panel_provider_id

TargetGroup model would have associations with it self via parent_id which would form a tree with multiple root nodes:

  • id, name, external_id, parent_id, secret_code, panel_provider_id

The application should have:

  • 3 Countries, each with different panel provider
  • 3 Panel Providers
  • 20 Locations of any type (city, region, state, etc.)
  • 4 Location Groups, 3 of them with different provider and 1 would belong to any of them
  • 4 root Target Groups and each root should start a tree which is minimium 3 levels deep (3 of them with different provider and 1 would belong to any of them)

request info

Request #1

It should return locations which belong to the selected country based on it's current panel provider

Request #2

It should return target groups which belong to the selected country based on it's current panel provider

Request #3

It should require all of the following params to be provided and valid:

  • :country_code
  • :target_group_id
  • :locations (an array of hashes which look like this { id: 123, panel_size: 200 })

and return a price based on a logic specific to each panel provider used by a country.

Request #4

Same as #1 but for public consumption

Request #5

Same as #2 but for public consumption

panel providers pricing logic

Each panel provider will have a different pricing logic

Panel 1

The price should be based on how many letters "a" can you find on this site http://time.com divided by 100

Panel 2

The price should be based on the number of "b" opening tags you can find in this feed https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=news

The tags will be encoded like this \u003cb\u003e if you view it as a raw JSON.

Panel 3

The price should be based on how many html nodes can you find on this site http://time.com divided by 100

About

...o.O...


Languages

Language:Ruby 91.0%Language:HTML 9.0%