Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Preface
Why APIs and Why the GitHub API?
Structure of This Book
Who You Are
What You Will Learn
GitHub “First Class” Languages
Operating System Prerequisites
Who This Book Is Not For
Conventions Used in This Book
Using Code Examples
Safari® Books Online
How to Contact Us
Acknowledgments
1. The Unclad GitHub API
cURL
Breadcrumbs to Successive API Paths
The JavaScript Object Notation (JSON) Format
Parsing JSON from the Command Line
Debugging Switches for cURL
Important Headers
Following a Hypermedia API
Authentication
Username and Password Authentication
Benefits of username authentication
Downsides to username authentication
OAuth
Scopes: specified actions tied to authentication tokens
Scope limitations
Scope escalation
Simplified OAuth flow
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
Retrieving formatted content
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 Wikis
Markup and Structure
Links
Code snippets
Structural components
No styling or JavaScript
Inserting images
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
Visual Studio
Xamarin Studio
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
Using a GitHub.io Jekyll blog
Hosting On Your Own Domain
The gh-pages branch
The CNAME file
DNS settings
Importing from Other Blogs
From Wordpress
Importing with direct database access
Importing from the Wordpress XML
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
Installing the Java SDK
Installing Android Studio
Creating a New Project
Editing the Gradle Build File
Creating AVDs for development
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
Naming the channel
Running Hubot Locally
A first conversation
Exploring the Hubot vocabulary
Installation on Heroku
Setting Up Heroku
Activity API Overview
Writing a Hubot Extension
Code Reviews via Pull Requests
Extension boilerplate
Writing tests for Hubot extensions
Setting up our webhook
Using the OAuth Token to Register for Events
Triggering Real Pull Requests
Handling PR Notifications as Post Requests over HTTP
Assigning an active chat room user
The user list from the Hubot brain
Sending PR data via webhook
Securing the webhook
Responding to the PR request
Peering into the response object
Unifying usernames via the Collaborators API
Sanitizing our source code
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
Installation
Administration
Endpoints
Full Hostnames Versus Mount Points
Command-Line Client Tools: cURL
Example Request Using a Client Library
Ruby Client Configuration
Java
JavaScript
Python
C#
Management API
Documentation
B. Ruby, NodeJS, (and the Shell) at GitHub
GitHub and Ruby
Installing Ruby
Important Ruby and RVM Concepts
Potential Problems Installing Ruby
GitHub Is Excited about NodeJS
NodeJS Installation
Node Version Manager
package.json
Command-Line Basics and the Shell
Shell Comments
Providing Variables to Commands
Splitting Commands into Multiple Lines
Piping Output to Successive Commands
Redirection
Index
← Prev
Back
Next →
← Prev
Back
Next →