Skip to content

arbor-dev/arbor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e4e6daa · Jan 7, 2019
Apr 1, 2018
Aug 11, 2018
Jan 12, 2018
Jan 7, 2019
Jun 11, 2018
Jan 7, 2019
Sep 25, 2017
Jan 7, 2019
Apr 25, 2017
Oct 13, 2018
Oct 6, 2017
Jan 16, 2018
Oct 6, 2017
Oct 6, 2017
Apr 1, 2018
Jan 12, 2018
Aug 22, 2018
Jan 6, 2019
Jan 6, 2019
Aug 14, 2018
Apr 1, 2018
Apr 1, 2018

Repository files navigation

alt tag Build Status GoDoc Join the chat at https://acm-uiuc.slack.com/messages/C6XGZD212/ Go Report Card

Arbor is a statically configured framework for creating API Gateways. It provides the following capabilities:

  • Easy registration of services
  • Basic application authorization and request sanitization
  • Proxying API calls
  • Managing inter-service communication

Arbor supports JSON APIs with support for others coming soon. When registering as service specify the data encoding and when requesting a resource though groot make the request using json.

Registering Services

Add the API spec in a new file (ex. todo.go) in the services package

There is a set of proxy api calls defined in the proxy package that will route call to the backend services

AS OF 10/28/15

/**
 *  Pass the http Request from the client and the ResponseWriter it expects
 *  Pass the target url of the backend service (not the url the client called)
 *  Pass the format of the service
 *  Pass a authorization token (optional)
 *  Will call the service and return the result to the client.
 **/
 func GET(w http.ResponseWriter, url string, format string, token string, r *http.Request)
 /**
  *  Pass the http Request from the client and the ResponseWriter it expects
  *  Pass the target url of the backend service (not the url the client called)
  *  Passes the encoded json(only format currently supported) to the service.
  *  Pass a authorization token (optional)
  *  Will call the service and return the result to the client.
  **/
  func POST(w http.ResponseWriter, url string, format string, token string, r *http.Request)
 /**
  *  Pass the http Request from the client and the ResponseWriter it expects
  *  Pass the target url of the backend service (not the url the client called)
  *  Passes the encoded json(only format currently supported) to the service.
  *  Pass a authorization token (optional)
  *  Will call the service and return the result to the client.
  **/
  func PUT(w http.ResponseWriter, url string, format string, token string, r *http.Request)
/**
 *  Pass the http Request from the client and the ResponseWriter it expects
 *  Pass the target url of the backend service (not the url the client called)
 *  Pass a authorization token (optional)
 *  Will call the service and return the result to the client.
 **/
 func DELETE(w http.ResponseWriter, url string, format string, token string, r *http.Request)

All secret data should be kept in a file called config.go in the config directory

Install

Minimum supported version is Go 1.8

go get -u github.com/arbor-dev/arbor/...

run the server

go run ./server/*.go

compile the service

go build -o groot [PATH TO GROOT]/server

CLI

groot [-r | --register-client client_name] [-c | --check-registration token] [-u | --unsecured]

-r | --register-client client_name

registers a client, generates a token

-c | --check-registration token

checks if a token is valid and returns name of client

-u | --unsecured

runs groot without the security layer

-l | --list-clients

lists all registered client names

-d | --delete-client client_name

deletes the client token with the given name

without args

runs groot with the security layer

License

This project is licensed under the University of Illinois/NCSA Open Source License. For a full copy of this license take a look at the LICENSE file.

When contributing new files to this project, preappend the following header to the file as a comment:

Copyright © 2017, ACM@UIUC

This file is part of the Groot Project.  
 
The Groot Project is open source software, released under the University of Illinois/NCSA Open Source License. 
You should have received a copy of this license in a file with the distribution.