Preface
1.The Unclad GitHub API
cURL
Breadcrumbs to Successive API Paths
The JavaScript Object Notation (]SON) Format
Parsing ISON from the Command Line
Debugging Switches for cURL
Important Headers
Following a Hypermedia API
Authentication
Username and Password Authentication
OAuth
Status Codes
Success (200 or 201)
Naughty JSON (400)
Improper JSON (422)
Successful Creation (201)
Nothing Has Changed (304)
GitHub API Rate Limits
Reading Your Rate Limits
Conditional Requests to Avoid Rate Limitations
Accessing Content from the Web
JSON-P
CORS Support
Specifying Response Content Format
Summary
2.Gists and the Gist API
Easy Code Sharing
Gists Are Repositories
Embedding Gists Inside HTML
Embedding Inside Jekyll Blogs
Gist from the Command Line
Gists as Fully Functioning Apps
Gists that Render Gists
Going Deeper into the Gist API
Using Hypermedia Data from Octokit
Summary
3.GitHub Wikis with Gollum
"The Story of Smeagol..."
Repository Linked Wilds
Markup and Structure
Hacking Gollum
The Starting Point of a Gollum Editor
Programmatically Handling Images
Using the Rugged Library
Optimizing for Image Storage
Reviewing on GitHub
Improving Revision Navigation
Fixing Linking Between Comp Pages
Summary
4.Python and the Search API
Search API General Principles
Authentication
Result Format
Search Operators and Qualifiers
Sorting
Search APIs in Detail
Repository Search
Code Search
Issue Search
User Search
Our Example Application
User Flow
Python
AGitHub
WxPython
PyInstaller
The Code
Git Credential Helper
Windowing and Interface
GitHub Login
GitHub Search
Displaying Results
Packaging
Summary
5.NET and the Commit Status API
The API
Raw Statuses
Combined Status
Creating a Status
Let's Write an App
Libraries
Development Environment
Sending the Request
OAuth Flow
Status Handler
Summary
6.Ruby and Jekyll
Learning and Building with Jekyll
What Is Jekyll?
Operating Jekyll Locally
Jekyll Blog Quick Start
YFM: YAML Front Matter
Jekyll Markup
Using the Jekyll Command
Privacy Levels with Jekyll
Themes
Publishing on GitHub
Hosting On Your Own Domain
Importing from Other Blogs
From Wordpress
Exporting from Wordpress Alternatives
Scraping Sites into Jekyll
Jekyll Scraping Tactics
Setting Up
Scraping Titles
Refinining with Interactive Ruby
Writing Tests and Caching
Writing Jekyll Posts
Using the Jekyll Command-Line Tool
Master Index File with Liquid Markup
Scraping Body and Author
Adding Images to Jekyll
Customizing Styling (CSS)
Inviting Contributions with GitHub "Fork"
Publishing Our Blog to GitHub
Summary
7.Android and the Git Data API
Setting Up
Creating a Jekyll Blog
Android Development Tools
Creating a New Project
Editing the Gradle Build File
Default Android Main
Android Automated Testing
Unit Tests for Our GitHub Client
Android UI Tests
Application Implementation
Code to Log In to GitHub
Code to Talk to GitHub
Writing the Blog Content
GitHub Services
The Base SHA from the Repository and Branch
Creating the Blob
Generating a Tree
Creating the Commit
Updating the Master Resource
Passing All Our Tests
Summary
8.CoffeeScript, Hubot, and the Activity API
The Activity API
Planning for PR Satisfaction Guaranteed
Considerations and Limitations
Creating a Vanilla Hubot
Creating a Slack Account
Running Hubot Locally
Installation on Heroku
Setting Up Heroku
Activity API Overview
Writing a Hubot Extension
Code Reviews via Pull Requests
Using the OAuth Token to Register for Events
Triggering Real Pull Requests
Handling PR Notifications as Post Requests over HTTP
Summary
9.JavaScript and the Git Data API
Building a Coffee Shop Database on GitHub
Set Up
Mapping Hostnames
Adding the Support Libraries
An AngularJS Application Using GitHub.js
Visualize Application Data Structure
Making Our App Testable
Test Data
CoffeeTech.js
Geocoding Support
City Data
Adding Login
Errors Already?
Displaying (Soon-to-Be) User-Reported Data
User-Contributed Data
Accepting Pull Requests
Toward a Safe Login Implementation
Authentication Requires a Server
Fixing Authentication with Firebase
Testing Firebase
Implementing Firebase Login
Summary
A. GitHub Enterprise
B. Ruby, NodeJS, (and the Shell) at GitHub
Index