/ocaml-github

Github APIv3 OCaml bindings

Primary LanguageOCaml

GitHub APIv3 OCaml Library

This library provides an OCaml interface to the Github JSON API. It is not yet complete, but look in lib/github.atd for the specification that has been implemented so far. The full API details can be found at: http://developer.github.com/v3/

There are several tests in lib_test for small bits of functionality, and for the authenticated ones you will need to edit lib_test/config.ml with suitable auth information. Use the get_token test to obtain an oAuth token for the config file.

Two environment variables will cause more debugging to be output:

GITHUB_DEBUG=1   # API calls output to stderr
COHTTP_DEBUG=1   # even more HTTP-level debugging

Cookie jar

Applications that use this library will need to save authentication tokens locally, and the Github_cookie_jar module in the unix/ directory helps handle this more naturally. It maps an authentication token onto a local application name, which can then query that token at runtime and use it in Github API calls.

The tokens are all stored in $HOME/.github/<name>, where <name> is the local name of the application.

A git-jar command is also installed to add, remove and list the contents of this cookie jar.

$ git jar

...will display the man page.

$ git jar show avsm
Enter Github password: **********                                                                                                                                                                                                                                               
Cookie Name | ID       | Application                              | Note      
----------------------------------------------------------------------------------
   <remote> | 236241   | Real World OCaml                         |           
   <remote> | 340988   | Travis                                   |           

Note that the cookies are all current remote. To save the Real World OCaml one to local storage so that an application can use it, just do:

$ git jar save avsm 236241 rwo
Enter Github password: **********                                                                                                                                                                                                                                               
Github cookie jar: created /Users/avsm/.github/jar/rwo

This will now show up in the show command as a local cookie:

$ git jar show avsm
Enter Github password: **********                                                                                                                                                                                                                                               
Cookie Name | ID       | Application                              | Note      
----------------------------------------------------------------------------------
        rwo | 236241   | Real World OCaml                         |           
   <remote> | 340988   | Travis                                   |           

Your Github application can how use it via the Github_cookie_jar module:

# #require "github.unix";;
# Github_cookie_jar.get ~name:"rwo";;
- : Github_t.auth option = Some 
  { Github_t.auth_scopes = [`Public_repo];
    Github_t.auth_token = "<token>";
    Github_t.auth_app = {
      Github_t.app_name = "Real World OCaml";
      Github_t.app_url = "http://realworldocaml.org/" };
    Github_t.auth_url = "https://api.github.com/authorizations/236241";
    Github_t.auth_id = 236241; Github_t.auth_note = None; 
    Github_t.auth_note_url = None }