內容簡介
本書一窺GitHub內部使用的工具,以敘事的方式描述構建軟體元工具的相關過程,其中不只介紹相關的技術,還會說明折中方案、重構的現實意義,以及編寫元工具所面臨的挑戰。對已經熟悉Git或GitHub、想提升相關技能的讀者,書中介紹了如何使用GitHub API及相關的開源技術,如Jekyll(網站生成工具)、Hubot(NodeJS聊天機器人)和Gollum(維基)構建工具。
圖書目錄
前言 xi
第 1 章 開放的 GitHub API 1
1.1 cURL 1
1.2 列舉 API 路徑 2
1.3 JSON 格式 3
1.3.1 在命令行中解析 JSON 3
1.3.2 cURL 的調試開關 5
1.4 重要的首部 6
1.5 跟隨超媒體 API 6
1.6 身份驗證 7
1.6.1 用戶名和密碼驗證 7
1.6.2 OAuth 8
1.7 狀態碼 10
1.7.1 成功(200 或 201) 10
1.7.2 不合規的 JSON(400) 10
1.7.3 錯誤的 JSON(422) 11
1.7.4 成功創建(201) 12
1.7.5 完全沒變化(304) 12
1.7.6 GitHub API 的頻率限制 12
1.7.7 獲知頻率限制 13
1.8 使用條件請求規避頻率限制 14
1.9 在 Web 中訪問內容 15
1.9.1 JSON-P 15
1.9.2 CORS 支持 16
1.9.3 指定回響的內容格式 17
1.10 小結 18
第 2 章 Gist 和 Gist API 19
2.1 簡便的代碼分享工具 19
2.2 Gist 是倉庫 20
2.2.1 在 HTML 中嵌入 Gist 21
2.2.2 在 Jekyll 部落格中嵌入 Gist 21
2.3 使用命令行創建 Gist 21
2.4 Gist 是功能完整的套用 22
2.5 渲染 Gist 的 Gist 23
2.5.1 深入了解 Gist API 25
2.5.2 使用 Octokit 獲取超媒體數據 26
2.6 小結 27
第 3 章 GitHub 使用的維基庫 Gollum 28
3.1 “史麥戈的故事……” 28
3.1.1 與倉庫關聯的維基 29
3.1.2 標記和結構 30
3.2 改造 Gollum 33
3.3 開始創建 Gollum 編輯器 34
3.4 以編程的方式處理圖像 34
3.5 使用 Rugged 庫 36
3.6 最佳化圖像存儲 39
3.7 在 GitHub 中查看 41
3.8 改善修訂版本導航 43
3.9 修繕素材頁面之間的連結 44
3.10 小結 45
第 4 章 Python 和 Search API 46
4.1 Search API 概述 46
4.1.1 身份驗證 46
4.1.2 結果的格式 47
4.1.3 搜尋運算符和限定符 48
4.1.4 排序 49
4.2 Search API 詳解 49
4.2.1 搜尋倉庫 49
4.2.2 搜尋代碼 50
4.2.3 搜尋工單 51
4.2.4 搜尋用戶 52
4.3 示例套用 53
4.4 Python 56
4.4.1 AGitHub 56
4.4.2 WxPython 56
4.4.3 PyInstaller 57
4.5 編寫代碼 57
4.5.1 獲取 Git 憑據的輔助函式 58
4.5.2 視窗和界面 59
4.5.3 登錄 GitHub 62
4.5.4 搜尋 GitHub 65
4.5.5 顯示結果 67
4.6 打包 68
4.7 小結 69
第 5 章 .NET 和 Commit Status API 70
5.1 Commit Status API 71
5.1.1 原始狀態 72
5.1.2 合併後的狀態 72
5.1.3 創建狀態 73
5.2 編寫一個套用 74
5.2.1 要使用的庫 74
5.2.2 開發環境 74
5.2.3 傳送請求 77
5.2.4 OAuth 驗證流程 79
5.2.5 處理狀態的函式 83
5.3 小結 84
第 6 章 Ruby 和 Jekyll 86
6.1 學習使用 Jekyll 構建部落格 86
6.2 Jekyll 是什麼 86
6.3 使用 Jekyll 快速創建部落格 88
6.3.1 YAML 格式的頭部元信息 91
6.3.2 Jekyll 使用的標記 92
6.3.3 使用 Jekyll 命令 93
6.3.4 在 Jekyll 中設定隱私級別 93
6.3.5 主題 93
6.3.6 發布到 GitHub 中 93
6.3.7 託管在自己的域名名下 94
6.4 導入其他部落格 96
6.4.1 導入 WordPress 96
6.4.2 從其他部落格中導入 97
6.5 爬取網站,導入 Jekyll 98
6.5.1 爬取策略 98
6.5.2 設定 100
6.5.3 爬取標題 101
6.5.4 藉助互動式 Ruby 控制台改善 102
6.5.5 編寫測試,處理快取 103
6.5.6 輸出 Jekyll 文章 108
6.5.7 使用 jekyll 命令行工具 110
6.5.8 使用 Liquid Markup 編寫主索引檔案 112
6.5.9 爬取正文和作者 114
6.5.10 把圖像添加到 Jekyll 中 115
6.5.11 自定義樣式(CSS) 116
6.5.12 通過 GitHub 的“派生”功能鼓勵協作 118
6.5.13 把部落格發布到 GitHub 中 119
6.6 小結 119
第 7 章 Android 和 Git Data API 120
7.1 搭建環境 120
7.1.1 創建 Jekyll 部落格 120
7.1.2 Android 開發工具 121
7.2 新建項目 121
7.2.1 編輯 Gradle 構建檔案 123
7.2.2 Android 默認的主活動 125
7.3.1 對 GitHub 客戶端做單元測試 129
7.3.2 對 Android 套用做 UI 測試 132
7.4 實現套用 134
7.4.1 編寫登錄 GitHub 的代碼 136
7.4.2 編寫與 GitHub 互動的代碼 140
7.4.3 編寫部落格內容 142
7.4.4 GitHub 服務 143
7.4.5 從倉庫和分支中獲取基 SHA 144
7.4.6 創建 blob 145
7.4.7 生成樹 145
7.4.8 創建提交 146
7.4.9 更新上遊資源 147
7.4.10 通過全部測試 147
7.5 小結 149
第 8 章 CoffeeScript、Hubot 和 Activity API 150
8.1 Activity API 150
8.2 讓拉取請求得到各方認同 151
8.2.1 注意事項和局限 151
8.2.2 創建常規的 Hubot 151
8.2.3 註冊 Slack 賬戶 152
8.2.4 在本地運行 Hubot 154
8.3 部署到 Heroku 155
8.4 Activity API 概述 157
8.4.1 編寫 Hubot 擴展 157
8.4.2 通過拉取請求審查代碼 158
8.4.3 使用 OAuth 令牌註冊事件 163
8.4.4 發起真實的拉取請求 165
8.4.5 通過 HTTP POST 請求處理拉取請求通知 167
8.5 小結 187
第 9 章 JavaScript 和 Git Data API 188
9.1 構建一個咖啡店資料庫並託管在 GitHub 中 188
9.2 搭建環境 189
9.2.1 綁定域名 189
9.2.2 添加支持庫 190
9.3 使用 GitHub.js 開發一個 AngularJS 套用 191
9.3.1 規劃套用的數據結構 193
9.3.2 讓套用易於測試 194
9.3.3 測試數據 198
9.3.4 修改 coffeetech.js 檔案 199
9.4 添加地理編碼功能 200
9.5 添加登錄功能 203
9.6 顯示(即將)由用戶提供的數據 205
9.7 接受拉取請求 214
9.8 實現安全的登錄方式 215
9.8.1 身份驗證需要伺服器 215
9.8.2 使用 Firebase 處理身份驗證過程 216
9.8.3 測試 Firebase 218
9.8.4 實現 Firebase 登錄功能 219
9.9 小結 221
附錄 A GitHub 企業版 222
附錄 B GitHub 對 Ruby、NodeJS(和 shell)的利用 226
作者簡介 232
關於封面 232