Preface
1. The Unclad GitHub APIcURLBreadcrumbs to Successive API PathsThe JavaScript Object Notation (]SON) FormatParsing ISON from the Command LineDebugging Switches for cURLImportant HeadersFollowing a Hypermedia APIAuthenticationUsername and Password AuthenticationOAuthStatus CodesSuccess (200 or 201)Naughty JSON (400)Improper JSON (422)Successful Creation (201)Nothing Has Changed (304)GitHub API Rate LimitsReading Your Rate LimitsConditional Requests to Avoid Rate LimitationsAccessing Content from the WebJSON-PCORS SupportSpecifying Response Content FormatSummary
2. Gists and the Gist APIEasy Code SharingGists Are RepositoriesEmbedding Gists Inside HTMLEmbedding Inside Jekyll BlogsGist from the Command LineGists as Fully Functioning AppsGists that Render GistsGoing Deeper into the Gist APIUsing Hypermedia Data from OctokitSummary
3. GitHub Wikis with Gollum"The Story of Smeagol..."Repository Linked WildsMarkup and StructureHacking GollumThe Starting Point of a Gollum EditorProgrammatically Handling ImagesUsing the Rugged LibraryOptimizing for Image StorageReviewing on GitHubImproving Revision NavigationFixing Linking Between Comp PagesSummary
4. Python and the Search APISearch API General PrinciplesAuthenticationResult FormatSearch Operators and QualifiersSortingSearch APIs in DetailRepository SearchCode SearchIssue SearchUser SearchOur Example ApplicationUser FlowPythonAGitHubWxPythonPyInstallerThe CodeGit Credential HelperWindowing and InterfaceGitHub LoginGitHub SearchDisplaying ResultsPackagingSummary
5..NET and the Commit Status APIThe APIRaw StatusesCombined StatusCreating a StatusLet's Write an AppLibrariesDevelopment EnvironmentSending the RequestOAuth FlowStatus HandlerSummary
6. Ruby and JekyllLearning and Building with JekyllWhat Is Jekyll?Operating Jekyll LocallyJekyll Blog Quick StartYFM: YAML Front MatterJekyll MarkupUsing the Jekyll CommandPrivacy Levels with JekyllThemesPublishing on GitHubHosting On Your Own DomainImporting from Other BlogsFrom WordpressExporting from Wordpress AlternativesScraping Sites into JekyllJekyll Scraping TacticsSetting UpScraping TitlesRefinining with Interactive RubyWriting Tests and CachingWriting Jekyll PostsUsing the Jekyll Command-Line ToolMaster Index File with Liquid MarkupScraping Body and AuthorAdding Images to JekyllCustomizing Styling (CSS)Inviting Contributions with GitHub "Fork"Publishing Our Blog to GitHubSummary
7. Android and the Git Data APISetting UpCreating a Jekyll BlogAndroid Development ToolsCreating a New ProjectEditing the Gradle Build FileDefault Android MainAndroid Automated TestingUnit Tests for Our GitHub ClientAndroid UI TestsApplication ImplementationCode to Log In to GitHubCode to Talk to GitHubWriting the Blog ContentGitHub ServicesThe Base SHA from the Repository and BranchCreating the BlobGenerating a TreeCreating the CommitUpdating the Master ResourcePassing All Our TestsSummary
8. CoffeeScript, Hubot, and the Activity APIThe Activity APIPlanning for PR Satisfaction GuaranteedConsiderations and LimitationsCreating a Vanilla HubotCreating a Slack AccountRunning Hubot LocallyInstallation on HerokuSetting Up HerokuActivity API OverviewWriting a Hubot ExtensionCode Reviews via Pull RequestsUsing the OAuth Token to Register for EventsTriggering Real Pull RequestsHandling PR Notifications as Post Requests over HTTPSummary
9. JavaScript and the Git Data APIBuilding a Coffee Shop Database on GitHubSet UpMapping HostnamesAdding the Support LibrariesAn AngularJS Application Using GitHub.jsVisualize Application Data StructureMaking Our App TestableTest DataCoffeeTech.jsGeocoding SupportCity DataAdding LoginErrors Already?Displaying (Soon-to-Be) User-Reported DataUser-Contributed DataAccepting Pull RequestsToward a Safe Login ImplementationAuthentication Requires a ServerFixing Authentication with FirebaseTesting FirebaseImplementing Firebase LoginSummary
A. GitHub Enterprise
B. Ruby, NodeJS, (and the Shell) at GitHub
Index