หมายเหตุ เราเพิ่งเปลี่ยนชื่อสาขา
4-stableเป็นmainสิ่งนี้อาจส่งผลกระทบต่อคุณหากคุณกำลังเปลี่ยนแปลงรหัสของ Octokit ในพื้นที่ สำหรับรายละเอียดเพิ่มเติมและสำหรับขั้นตอนในการกำหนดค่าโคลนในพื้นที่ของคุณใหม่สำหรับชื่อสาขาใหม่ลองดูโพสต์นี้
Ruby Toolkit สำหรับ GitHub API
อัพเกรด? ตรวจสอบคู่มือการอัพเกรดก่อนที่จะชนกับเวอร์ชันหลักใหม่
Wrappers API ควรสะท้อนสำนวนของภาษาที่เขียนไว้ Octokit.rb ห่อ GitHub API ในไคลเอนต์ API แบบแบนซึ่งตามอนุสัญญาทับทิมและต้องการความรู้เล็กน้อยเกี่ยวกับการพักผ่อน วิธีการส่วนใหญ่มีอาร์กิวเมนต์ตำแหน่งสำหรับอินพุตที่ต้องการและแฮชตัวเลือกสำหรับพารามิเตอร์เสริมส่วนหัวหรือตัวเลือกอื่น ๆ :
client = Octokit :: Client . new
# Fetch a README with Accept header for HTML format
client . readme 'al3x/sovereign' , :accept => 'application/vnd.github.html' ติดตั้งผ่าน Rubygems
gem install octokit
... หรือเพิ่มลงใน Gemfile ของคุณ
gem "octokit"
เข้าถึงห้องสมุดในทับทิม:
require 'octokit'
วิธี API มีให้เป็นวิธีการอินสแตนซ์ไคลเอนต์
# Provide authentication credentials
client = Octokit :: Client . new ( :access_token => 'personal_access_token' )
# You can still use the username/password syntax by replacing the password value with your PAT.
# client = Octokit::Client.new(:login => 'defunkt', :password => 'personal_access_token')
# Fetch the current user
client . userเมื่อผ่านพารามิเตอร์เพิ่มเติมเพื่อรับคำขอตามใช้ไวยากรณ์ต่อไปนี้:
# query: { parameter_name: 'value' }
# Example: Get repository listing by owner in ascending order
client . repos ( { } , query : { type : 'owner' , sort : 'asc' } )
# Example: Get contents of a repository by ref
# https://api.github.com/repos/octokit/octokit.rb/contents/path/to/file.rb?ref=some-other-branch
client . contents ( 'octokit/octokit.rb' , path : 'path/to/file.rb' , query : { ref : 'some-other-branch' } ) วิธีการส่วนใหญ่ส่งคืนวัตถุ Resource ซึ่งให้สัญลักษณ์ DOT และ [] การเข้าถึงสำหรับฟิลด์ที่ส่งคืนในการตอบสนอง API
client = Octokit :: Client . new
# Fetch a user
user = client . user 'jbarnette'
puts user . name
# => "John Barnette"
puts user . fields
# => <Set: {:login, :id, :gravatar_id, :type, :name, :company, :blog, :location, :email, :hireable, :bio, :public_repos, :followers, :following, :created_at, :updated_at, :public_gists}>
puts user [ :company ]
# => "GitHub"
user . rels [ :gists ] . href
# => "https://api.github.com/users/jbarnette/gists" หมายเหตุ: ฟิลด์ URL ถูกคัดออกเป็นคอลเลกชัน .rels แยกต่างหากเพื่อการรองรับ Hypermedia ที่ง่ายขึ้น
ในขณะที่วิธีการส่วนใหญ่ส่งคืนวัตถุ Resource หรือบูลีนบางครั้งคุณอาจต้องเข้าถึงส่วนหัวการตอบกลับ HTTP ดิบ คุณสามารถเข้าถึงการตอบกลับ http ล่าสุดด้วย Client#last_response :
user = client . user 'andrewpthorp'
response = client . last_response
etag = response . headers [ :etag ] เมื่อ API ส่งคืนการตอบกลับข้อผิดพลาด Octokit จะยกข้อยกเว้นทับทิม
ช่วงของข้อยกเว้นที่แตกต่างกันสามารถยกขึ้นได้ขึ้นอยู่กับข้อผิดพลาดที่ส่งคืนโดย API - ตัวอย่างเช่น:
400 Bad Request จะนำไปสู่ข้อผิดพลาด Octokit::BadRequest403 Forbidden พร้อมข้อความ "อัตรา จำกัด เกิน" จะนำไปสู่ข้อผิดพลาด Octokit::TooManyRequests คลาสข้อยกเว้นที่แตกต่างกันทั้งหมดสืบทอดมาจาก Octokit::Error และเปิดเผย #response_status , #response_headers และ #response_body สำหรับข้อผิดพลาดการตรวจสอบความถูกต้อง #errors จะส่งคืน Array ของ Hash es พร้อมข้อมูลรายละเอียดที่ส่งคืนโดย API
Octokit รองรับวิธีการตรวจสอบความถูกต้องต่างๆที่สนับสนุนโดย GitHub API:
การใช้ชื่อผู้ใช้และรหัสผ่าน GitHub ของคุณเป็นวิธีที่ง่ายที่สุดในการเริ่มต้นการร้องขอการรับรองความถูกต้อง:
client = Octokit :: Client . new ( :login => 'defunkt' , :password => 'c0d3b4ssssss!' )
user = client . user
user . login
# => "defunkt"ในขณะที่การรับรองความถูกต้องขั้นพื้นฐานช่วยให้คุณเริ่มต้นได้อย่างรวดเร็วโทเค็นการเข้าถึง OAuth เป็นวิธีที่ต้องการในการตรวจสอบสิทธิ์ในนามของผู้ใช้
OAuth Access Tokens ให้ประโยชน์หลักสองประการมากกว่าการใช้ชื่อผู้ใช้และรหัสผ่านของคุณ:
หากต้องการใช้โทเค็นการเข้าถึงกับไคลเอนต์ Octokit ให้ส่งโทเค็นของคุณใน :access_token Options Parameter แทนชื่อผู้ใช้และรหัสผ่านของคุณ:
client = Octokit :: Client . new ( :access_token => "<your 40 char token>" )
user = client . user
user . login
# => "defunkt"คุณสามารถสร้างโทเค็นการเข้าถึงผ่านการตั้งค่าบัญชี GitHub ของคุณ
การรับรองความถูกต้องแบบสองปัจจัยนำความปลอดภัยเพิ่มเข้าบัญชีโดยกำหนดให้ข้อมูลเพิ่มเติมเพื่อเข้าสู่ระบบ
การใช้การรับรองความถูกต้องแบบสองปัจจัยสำหรับการโทร API นั้นง่ายพอ ๆ กับการเพิ่มส่วนหัวที่ต้องการเป็นตัวเลือก:
client = Octokit :: Client . new
:login => 'defunkt' ,
:password => 'c0d3b4ssssss!'
user = client . user ( "defunkt" , :headers => { "X-GitHub-OTP" => "<your 2FA token>" } ) Octokit รองรับการอ่านข้อมูลรับรองจากไฟล์ NETRC (เริ่มต้นเป็น ~/.netrc ) กำหนดบรรทัดเหล่านี้ใน NETRC ของคุณ:
machine api.github.com
login defunkt
password c0d3b4ssssss!
ตอนนี้คุณสามารถสร้างลูกค้าด้วยข้อมูลรับรองเหล่านั้น:
client = Octokit :: Client . new ( :netrc => true )
client . login
# => "defunkt"แต่ ฉันต้องการใช้ Oauth ที่คุณพูด เนื่องจาก GitHub API รองรับการใช้โทเค็น OAUTH เป็นรหัสผ่านพื้นฐานคุณสามารถทำได้ทั้งหมด:
machine api.github.com
login defunkt
password <your 40 char token>
หมายเหตุ: การสนับสนุนสำหรับ NetRC จำเป็นต้องมีการเพิ่มอัญมณี NetRC ลงใน Gemfile หรือ .gemspec ของคุณ
Octokit ยังรองรับการรับรองความถูกต้องของแอปพลิเคชันอย่างเดียวโดยใช้ข้อมูลรับรองไคลเอนต์ OAuth Application การใช้ข้อมูลรับรองแอปพลิเคชันจะส่งผลให้เกิดการโทร API ที่ไม่ระบุชื่อในนามของแอปพลิเคชันเพื่อใช้ประโยชน์จากขีด จำกัด อัตราที่สูงขึ้น
client = Octokit :: Client . new
:client_id => "<your 20 char id>" ,
:client_secret => "<your 40 char secret>"
user = client . user 'defunkt'Octokit.rb ยังรองรับการรับรองความถูกต้องโดยใช้แอพ GitHub ซึ่งต้องใช้โทเค็น JWT ที่สร้างขึ้น
client = Octokit :: Client . new ( :bearer_token => "<your jwt token>" )
client . app
# => about GitHub App info ผลลัพธ์เริ่มต้นจาก GitHub API คือ 30 หากคุณต้องการเพิ่มมากขึ้นคุณต้องทำเช่นนั้นในระหว่างการกำหนดค่า Octokit
Octokit :: Client . new ( access_token : "<your 40 char token>" , per_page : 100 ) ทรัพยากร GitHub API จำนวนมากถูก paginated ในขณะที่คุณอาจถูกล่อลวงให้เริ่มเพิ่ม :page ไปยังการโทรของคุณ API ส่งคืนลิงก์ไปยังหน้าถัดไปก่อนหน้าและหน้าสุดท้ายสำหรับคุณในส่วนหัวการตอบสนอง Link เป็นความสัมพันธ์ลิงค์ Hypermedia
issues = client . issues 'rails/rails'
issues . concat client . get ( client . last_response . rels [ :next ] . href )สำหรับรายการทรัพยากรขนาดเล็ก Octokit ให้การแบ่งหน้าอัตโนมัติ เมื่อเปิดใช้งานสิ่งนี้การเรียกใช้ทรัพยากร paginated จะดึงและเชื่อมต่อผลลัพธ์จากทุกหน้าเป็นอาร์เรย์เดียว:
client . auto_paginate = true
issues = client . issues 'rails/rails'
issues . length
# => 702นอกจากนี้คุณยังสามารถเปิดใช้งานการแบ่งหน้าอัตโนมัติสำหรับอินสแตนซ์ไคลเอนต์ Octokit ทั้งหมด:
Octokit . configure do | c |
c . auto_paginate = true
end หมายเหตุ: ในขณะที่ Octokit Auto Pagination จะตั้งขนาดหน้าเป็นสูงสุด 100 และพยายามที่จะไม่เกินขีด จำกัด อัตราของคุณคุณอาจต้องการใช้รูปแบบที่กำหนดเองสำหรับการสำรวจรายการขนาดใหญ่
ด้วยการตั้งค่าเล็กน้อยคุณยังสามารถใช้ Octokit กับอินสแตนซ์ GitHub Enterprise ของคุณ
ในการโต้ตอบกับ "ปกติ" GitHub.com APIs ใน GitHub Enterprise เพียงกำหนดค่า api_endpoint เพื่อให้ตรงกับชื่อโฮสต์ของคุณ ตัวอย่างเช่น:
Octokit . configure do | c |
c . api_endpoint = "https://<hostname>/api/v3/"
end
client = Octokit :: Client . new ( :access_token => "<your 40 char token>" ) API ผู้ดูแลระบบ GitHub Enterprise อยู่ภายใต้ไคลเอนต์ที่แตกต่างกัน: EnterpriseAdminClient คุณจะต้องมีบัญชีผู้ดูแลระบบเพื่อใช้ API เหล่านี้
admin_client = Octokit :: EnterpriseAdminClient . new (
:access_token => "<your 40 char token>" ,
:api_endpoint => "https://<hostname>/api/v3/"
)
# or
Octokit . configure do | c |
c . api_endpoint = "https://<hostname>/api/v3/"
c . access_token = "<your 40 char token>"
end
admin_client = Octokit . enterprise_admin_client . new GitHub Enterprise Management Console API นั้นอยู่ภายใต้ลูกค้าแยกต่างหาก: EnterpriseManagementConsoleClient ในการใช้งานคุณจะต้องระบุทั้งรหัสผ่านคอนโซลการจัดการของคุณรวมถึงจุดสิ้นสุดของคอนโซลการจัดการของคุณ สิ่งนี้แตกต่างจากจุดสิ้นสุด API ที่ให้ไว้ด้านบน
management_console_client = Octokit :: EnterpriseManagementConsoleClient . new (
:management_console_password => "secret" ,
:management_console_endpoint = "https://hostname:8633"
)
# or
Octokit . configure do | c |
c . management_console_endpoint = "https://hostname:8633"
c . management_console_password = "secret"
end
management_console_client = Octokit . enterprise_management_console_client . newคุณ อาจ ต้องปิดการใช้งาน SSL ชั่วคราวในขณะที่ตั้งค่าการติดตั้ง GitHub Enterprise ของคุณก่อน คุณสามารถทำได้ด้วยการกำหนดค่าต่อไปนี้:
client . connection_options [ :ssl ] = { :verify => false } อย่าลืมเลี้ยว :verify กลับเป็น true เนื่องจากเป็นสิ่งสำคัญสำหรับการสื่อสารที่ปลอดภัย
ในขณะที่ Octokit::Client ยอมรับตัวเลือกที่หลากหลายเมื่อสร้างอินสแตนซ์ไคลเอนต์ใหม่ API การกำหนดค่าของ Octokit ช่วยให้คุณตั้งค่าตัวเลือกการกำหนดค่าของคุณที่ระดับโมดูล สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณกำลังสร้างอินสแตนซ์ไคลเอนต์จำนวนหนึ่งตามค่าเริ่มต้นที่ใช้ร่วมกัน การเปลี่ยนตัวเลือกมีผลกระทบต่ออินสแตนซ์ใหม่เท่านั้นและจะไม่แก้ไข Octokit::Client ซ์ไคลเอนต์ที่สร้างขึ้นด้วยตัวเลือกก่อนหน้า
ทุกแอตทริบิวต์ที่เขียนได้ใน {octokit :: สามารถกำหนดค่าได้} สามารถตั้งค่าทีละครั้ง:
Octokit . api_endpoint = 'http://api.github.dev'
Octokit . web_endpoint = 'http://github.dev'หรือในชุด:
Octokit . configure do | c |
c . api_endpoint = 'http://api.github.dev'
c . web_endpoint = 'http://github.dev'
endค่าการกำหนดค่าเริ่มต้นจะถูกระบุใน {octokit :: default} แอตทริบิวต์จำนวนมากจะค้นหาค่าเริ่มต้นจาก Env ก่อนที่จะส่งคืนค่าเริ่มต้นของ Octokit
# Given $OCTOKIT_API_ENDPOINT is "http://api.github.dev"
client . api_endpoint
# => "http://api.github.dev" คำเตือนการเสื่อมราคาและจุดสิ้นสุดของ API ในการพัฒนาคำเตือนตัวอย่างจะถูกพิมพ์ไปยัง stdout โดยค่าเริ่มต้นสิ่งเหล่านี้สามารถปิดใช้งานได้โดยการตั้งค่า env OCTOKIT_SILENT=true
โดยค่าเริ่มต้น Octokit จะไม่ร้องขอเครือข่ายหมดเวลา หากต้องการตั้งค่าการหมดเวลาให้ผ่านการตั้งค่าการหมดเวลาของฟาราเดย์ไปยังการตั้งค่า connection_options ของ Octokit ของ Octokit
Octokit . configure do | c |
c . api_endpoint = ENV . fetch ( 'GITHUB_API_ENDPOINT' , 'https://api.github.com/' )
c . connection_options = {
request : {
open_timeout : 5 ,
timeout : 5
}
}
endคุณควรตั้งค่าการหมดเวลาเพื่อหลีกเลี่ยงโมดูลการหมดเวลาของทับทิมซึ่งสามารถท่อเซิร์ฟเวอร์ของคุณได้ นี่คือแหล่งข้อมูลเพิ่มเติมสำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้:
เริ่มต้นในเวอร์ชัน 2.0 Octokit เปิดใช้งาน Hypermedia ภายใต้ประทุน {octokit :: client} ใช้ Sawyer ไคลเอนต์ Hypermedia ที่สร้างขึ้นบนฟาราเดย์
ทรัพยากรที่ส่งคืนโดยวิธี Octokit ไม่เพียง แต่ข้อมูล แต่ความสัมพันธ์ระหว่าง Hypermedia Link:
user = client . user 'technoweenie'
# Get the repos rel, returned from the API
# as repos_url in the resource
user . rels [ :repos ] . href
# => "https://api.github.com/users/technoweenie/repos"
repos = user . rels [ :repos ] . get . data
repos . last . name
# => "faraday-zeromq" เมื่อประมวลผลการตอบสนอง API แอตทริบิวต์ *_url ทั้งหมดจะถูกคัดเข้ามาในคอลเลกชันลิงค์สัมพันธ์ แอตทริบิวต์ url ใด ๆ กลายเป็น .rels[:self]
คุณอาจสังเกตเห็นความสัมพันธ์ของลิงก์จำนวนมากมีตัวยึดตัวแปร Octokit รองรับเทมเพลต URI สำหรับการขยายพารามิเตอร์ URI:
repo = client . repo 'pengwynn/pingwynn'
rel = repo . rels [ :issues ]
# => #<Sawyer::Relation: issues: get https://api.github.com/repos/pengwynn/pingwynn/issues{/number}>
# Get a page of issues
rel . get . data
# Get issue #2
rel . get ( :uri => { :number => 2 } ) . dataหากคุณต้องการใช้ Octokit เป็นไคลเอนต์ Hypermedia API บริสุทธิ์คุณสามารถเริ่มต้นได้ที่ API Root และติดตามความสัมพันธ์ลิงค์จากที่นั่น:
root = client . root
root . rels [ :repository ] . get :uri => { :owner => "octokit" , :repo => "octokit.rb" }
root . rels [ :user_repositories ] . get :uri => { :user => "octokit" } ,
:query => { :type => "owner" }Octokit 3.0 มีจุดมุ่งหมายที่จะขับเคลื่อนด้วย Hypermedia ลบการก่อสร้าง URL ภายในที่ใช้ในปัจจุบันทั่วทั้งไคลเอนต์
เวอร์ชัน 4.0
state ในตัวเลือกวิธีการแทนเวอร์ชัน 3.0 รวมถึงการเปลี่ยนแปลงสองสามครั้งเมื่ออัปเกรดจาก v2.xx:
ประเภทสื่อเริ่มต้นตอนนี้คือ v3 แทน beta หากคุณต้องการขอประเภทสื่อเก่าคุณสามารถตั้งค่าประเภทสื่อเริ่มต้นสำหรับไคลเอนต์:
Octokit . default_media_type = "application/vnd.github.beta+json"หรือขอต่อ
client . emails ( :accept => "application/vnd.github.beta+json" ) Octokit::Client#create_download วิธีการที่ได้รับการลดระยะยาว
เวอร์ชัน 2.0 รวมโรงงาน Client ที่เขียนใหม่อย่างสมบูรณ์ซึ่งตอนนี้บันทึกอินสแตนซ์ไคลเอนต์ตามตัวเลือกการกำหนดค่าที่ไม่ซ้ำกัน การเปลี่ยนแปลงที่แตกหักรวมถึง:
:oauth_token ตอนนี้ :access_token:auto_traversal คือตอนนี้ :auto_paginateHashie::Mash ถูกลบออกแล้ว ตอนนี้คำตอบส่งคืน Sawyer::Resource ประเภทใหม่นี้มีพฤติกรรมเหมือน Hash ทับทิมส่วนใหญ่ แต่ไม่สนับสนุน Hashie::Mash API อย่างเต็มที่Octokit::TooManyRequests และ Octokit::TooManyLoginAttemptssearch_* จาก v1.x พบได้ที่ legacy_search_*DateTime ที่เหมาะสม เวอร์ชันก่อนหน้าฟิลด์ DateTime ที่ส่งออกเป็นวัตถุ 'สตริง' เนื่องจาก Octokit ใช้ฟาราเดย์ภายใต้ประทุนพฤติกรรมบางอย่างสามารถขยายผ่านมิดเดิลแวร์
บ่อยครั้งที่มันช่วยให้รู้ว่า Octokit กำลังทำอะไรอยู่ภายใต้ประทุน คุณสามารถเพิ่มตัวบันทึกลงในมิดเดิลแวร์ที่ช่วยให้คุณสามารถมองเข้าไปในทราฟฟิก HTTP พื้นฐาน:
stack = Faraday :: RackBuilder . new do | builder |
builder . use Faraday :: Retry :: Middleware , exceptions : Faraday :: Retry :: Middleware :: DEFAULT_EXCEPTIONS + [ Octokit :: ServerError ] # or Faraday::Request::Retry for Faraday < 2.0
builder . use Octokit :: Middleware :: FollowRedirects
builder . use Octokit :: Response :: RaiseError
builder . use Octokit :: Response :: FeedParser
builder . response :logger do | logger |
logger . filter ( /(Authorization: "(token|Bearer) )( w +)/ , '1[REMOVED]' )
end
builder . adapter Faraday . default_adapter
end
Octokit . middleware = stack
client = Octokit :: Client . new
client . user 'pengwynn' I, [2013-08-22T15:54:38.583300 #88227] INFO -- : get https://api.github.com/users/pengwynn
D, [2013-08-22T15:54:38.583401 #88227] DEBUG -- request: Accept: "application/vnd.github.beta+json"
User-Agent: "Octokit Ruby Gem 2.0.0.rc4"
I, [2013-08-22T15:54:38.843313 #88227] INFO -- Status: 200
D, [2013-08-22T15:54:38.843459 #88227] DEBUG -- response: server: "GitHub.com"
date: "Thu, 22 Aug 2013 20:54:40 GMT"
content-type: "application/json; charset=utf-8"
transfer-encoding: "chunked"
connection: "close"
status: "200 OK"
x-ratelimit-limit: "60"
x-ratelimit-remaining: "39"
x-ratelimit-reset: "1377205443"
...
ดู Faraday Readme สำหรับเวทมนตร์มิดเดิลแวร์เพิ่มเติม
หากคุณต้องการเพิ่มประสิทธิภาพยืดขีด จำกัด อัตรา API ของคุณหรือหลีกเลี่ยงการจ่ายภาษี Hypermedia คุณสามารถใช้แคช Faraday HTTP
เพิ่มอัญมณีใน Gemfile ของคุณ
gem 'faraday-http-cache'
ถัดไปสร้างมิดเดิลแวร์ฟาราเดย์ของคุณเอง:
stack = Faraday :: RackBuilder . new do | builder |
builder . use Faraday :: HttpCache , serializer : Marshal , shared_cache : false
builder . use Octokit :: Response :: RaiseError
builder . adapter Faraday . default_adapter
end
Octokit . middleware = stack เมื่อกำหนดค่ามิดเดิลแวร์จะเก็บการตอบสนองในแคชตามลายนิ้วมือ ETAG และให้บริการผู้ที่สำรองข้อมูลสำหรับการตอบกลับ 304 ในอนาคตสำหรับทรัพยากรเดียวกัน ดูโครงการ readme สำหรับการใช้งานขั้นสูง
หากคุณต้องการแฮ็ค Octokit ในท้องถิ่นเราพยายามทำให้ Bootstrapping โครงการไม่เจ็บปวดที่สุดเท่าที่จะทำได้ เพื่อเริ่มการแฮ็คโคลนและเรียกใช้:
script/bootstrap
สิ่งนี้จะติดตั้งการพึ่งพาโครงการและทำให้คุณตื่นขึ้นมา หากคุณต้องการเรียกใช้คอนโซลทับทิมเพื่อกระตุ้น Octokit คุณสามารถหมุนได้ด้วย:
script/console
การใช้สคริปต์ใน ./script script แทน bundle exec rspec , bundle console ฯลฯ ทำให้มั่นใจได้ว่าการอ้างอิงของคุณจะทันสมัย
เราต้องการให้ทั้ง Octokit.rb และชุมชน Octokit ขนาดใหญ่เปิดกว้างและเป็นมิตร โปรดอ่านและติดตามทั้งในจิตวิญญาณและจรรยาบรรณจดหมาย
Octokit ใช้ VCR สำหรับการบันทึกและเล่นการติดตั้ง API ในระหว่างการทดสอบ คาสเซ็ตเหล่านี้ (ติดตั้ง) เป็นส่วนหนึ่งของโครงการ GIT ในโฟลเดอร์ spec/cassettes หากคุณไม่ได้บันทึกเทปคาสเซ็ตใหม่คุณสามารถเรียกใช้รายละเอียดด้วยคาสเซ็ตที่มีอยู่ด้วย:
script/test
Octokit ใช้ตัวแปรสิ่งแวดล้อมสำหรับการจัดเก็บข้อมูลรับรองที่ใช้ในการทดสอบ หากคุณกำลังทดสอบจุดสิ้นสุด API ที่ไม่ต้องการการตรวจสอบสิทธิ์คุณสามารถหนีไปได้โดยไม่ต้องมีการกำหนดค่าเพิ่มเติม ส่วนใหญ่การทดสอบใช้ไคลเอนต์ที่ผ่านการรับรองโดยใช้โทเค็นที่เก็บไว้ใน ENV['OCTOKIT_TEST_GITHUB_TOKEN'] มีวิธีการตรวจสอบความถูกต้องที่แตกต่างกันหลายวิธีที่ใช้ใน API นี่คือรายการทั้งหมดของตัวแปรสภาพแวดล้อมที่กำหนดค่าได้สำหรับการทดสอบ octokit:
| ตัวแปร env | คำอธิบาย |
|---|---|
OCTOKIT_TEST_GITHUB_LOGIN | ชื่อล็อกอิน GitHub (โดยเฉพาะอย่างยิ่งที่สร้างขึ้นโดยเฉพาะสำหรับการทดสอบ) |
OCTOKIT_TEST_GITHUB_PASSWORD | รหัสผ่านสำหรับการเข้าสู่ระบบทดสอบ GitHub |
OCTOKIT_TEST_GITHUB_TOKEN | โทเค็นการเข้าถึงส่วนบุคคลสำหรับการเข้าสู่ระบบทดสอบ GitHub |
OCTOKIT_TEST_GITHUB_CLIENT_ID | ทดสอบรหัสไคลเอนต์แอปพลิเคชัน OAuth |
OCTOKIT_TEST_GITHUB_CLIENT_SECRET | ทดสอบความลับของไคลเอนต์แอปพลิเคชัน OAuth |
OCTOKIT_TEST_GITHUB_REPOSITORY | ทดสอบที่เก็บเพื่อดำเนินการทำลายล้างสิ่งนี้ไม่ควรตั้งค่าเป็นที่เก็บความสำคัญใด ๆ สร้างขึ้นโดยอัตโนมัติโดยชุดทดสอบหากไม่มีค่า เริ่มต้น: api-sandbox |
OCTOKIT_TEST_GITHUB_ORGANIZATION | องค์กรทดสอบ |
OCTOKIT_TEST_GITHUB_ENTERPRISE_LOGIN | ชื่อเข้าสู่ระบบ GitHub Enterprise |
OCTOKIT_TEST_GITHUB_ENTERPRISE_TOKEN | โทเค็น Enterprise GitHub |
OCTOKIT_TEST_GITHUB_ENTERPRISE_MANAGEMENT_CONSOLE_PASSWORD | รหัสผ่านคอนโซลการจัดการ Enterprise GitHub |
OCTOKIT_TEST_GITHUB_ENTERPRISE_ENDPOINT | ชื่อโฮสต์ GitHub Enterprise |
OCTOKIT_TEST_GITHUB_ENTERPRISE_MANAGEMENT_CONSOLE_ENDPOINT | GitHub Enterprise Management Console Endpoint |
OCTOKIT_TEST_GITHUB_MANAGE_GHES_ENDPOINT | GitHub Enterprise Server Ghes จัดการจุดสิ้นสุด |
OCTOKIT_TEST_GITHUB_MANAGE_GHES_USERNAME | GitHub Enterprise Server Ghes จัดการชื่อผู้ใช้ |
OCTOKIT_TEST_GITHUB_MANAGE_GHES_PASSWORD | GitHub Enterprise Server Ghes จัดการรหัสผ่าน |
OCTOKIT_TEST_GITHUB_INTEGRATION | การรวม GitHub เป็นเจ้าของโดยองค์กรทดสอบของคุณ |
OCTOKIT_TEST_GITHUB_INTEGRATION_INSTALLATION | การติดตั้งการรวม GitHub ที่ระบุไว้ข้างต้น |
OCTOKIT_TEST_INTEGRATION_PEM_KEY | เส้นทางไฟล์ไปยังคีย์ส่วนตัวที่สร้างขึ้นจากการรวมของคุณ |
เนื่องจากเรารีเฟรชคาสเซ็ตของเราเป็นระยะโปรดระลึกไว้เสมอเมื่อคำนึงถึงรายละเอียดใหม่
ห้องสมุดนี้มีวัตถุประสงค์เพื่อสนับสนุนและทดสอบกับการใช้งานทับทิมต่อไปนี้:
หากสิ่งที่ไม่ได้ผลกับหนึ่งในทับทิมเหล่านี้มันเป็นข้อผิดพลาด
ห้องสมุดนี้อาจใช้งานได้โดยไม่ได้ตั้งใจ (หรือดูเหมือนจะใช้งานได้) ในการใช้งานทับทิมอื่น ๆ แต่จะมีการสนับสนุนสำหรับรุ่นที่ระบุไว้ข้างต้นเท่านั้น
หากคุณต้องการให้ห้องสมุดนี้รองรับ Ruby เวอร์ชันอื่นคุณอาจเป็นอาสาสมัครให้เป็นผู้ดูแล การเป็นผู้ดูแลทำให้แน่ใจว่าการทดสอบทั้งหมดทำงานและส่งต่อการดำเนินการนั้น เมื่อมีบางสิ่งเกิดขึ้นกับการใช้งานของคุณคุณจะต้องรับผิดชอบในการให้แพตช์ในเวลาที่เหมาะสม หากปัญหาที่สำคัญสำหรับการใช้งานเฉพาะในเวลาที่มีการเปิดตัวครั้งใหญ่การสนับสนุนสำหรับรุ่นทับทิมนั้นอาจลดลง
ห้องสมุดนี้มีจุดมุ่งหมายที่จะปฏิบัติตามเวอร์ชันความหมาย 2.0.0 การละเมิดโครงการนี้ควรรายงานว่าเป็นข้อบกพร่อง โดยเฉพาะอย่างยิ่งหากมีการปล่อยรุ่นรองหรือแพตช์ที่จะแบ่งความเข้ากันได้ย้อนหลังเวอร์ชันนั้นควรจะดึงทันทีและ/หรือเวอร์ชันใหม่ควรได้รับการปล่อยตัวทันทีที่เรียกคืนความเข้ากันได้ การเปลี่ยนแปลงการเปลี่ยนแปลงของ API สาธารณะจะได้รับการแนะนำด้วยเวอร์ชันหลักใหม่เท่านั้น อันเป็นผลมาจากนโยบายนี้คุณสามารถ (และควร) ระบุการพึ่งพาอัญมณีนี้โดยใช้ข้อ จำกัด ในแง่ร้ายของรุ่นที่มีความแม่นยำสองหลัก ตัวอย่างเช่น:
spec.add_dependency 'octokit', '~> 3.0'
การเปลี่ยนแปลงระหว่างเวอร์ชันสามารถเห็นได้ในหน้าโครงการรุ่น
ในกรณีส่วนใหญ่จะเป็นการดีที่สุดที่จะใช้ webhooks แต่บางครั้ง webhooks ไม่ได้ให้ข้อมูลทั้งหมดที่จำเป็น ในกรณีเหล่านั้นที่อาจจำเป็นต้องสำรวจความคืบหน้าหรือลองคำขอเกี่ยวกับความล้มเหลวเราออกแบบ Octopoller Octopoller เป็นอัญมณีขนาดเล็กที่สมบูรณ์แบบสำหรับการร้องขอซ้ำ
Octopoller . poll ( timeout : 15 . seconds ) do
begin
client . request_progress # ex. request a long running job's status
rescue Error
:re_poll
end
endสิ่งนี้มีประโยชน์เมื่อทำการร้องขอความคืบหน้าของงานที่ใช้งานมานาน (เช่นการขอความคืบหน้าของการนำเข้าแหล่งที่มา)
ลิขสิทธิ์ (c) 2552-2557 Wynn เนเธอร์แลนด์, Adam Stacoviak, Erik Michaels-Ober
ได้รับอนุญาตโดยไม่ต้องเสียค่าใช้จ่ายสำหรับบุคคลใด ๆ ที่ได้รับสำเนาซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") เพื่อจัดการในซอฟต์แวร์โดยไม่มีการ จำกัด รวมถึง แต่ไม่ จำกัด เฉพาะสิทธิ์ในการใช้สำเนาดัดแปลงผสานเผยแพร่เผยแพร่
ประกาศลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์มีให้ "ตามสภาพ" โดยไม่มีการรับประกันใด ๆ ไม่ว่าโดยชัดแจ้งหรือโดยนัยรวมถึง แต่ไม่ จำกัด เฉพาะการรับประกันความสามารถในการค้าการออกกำลังกายสำหรับวัตถุประสงค์เฉพาะและการไม่เข้าร่วม ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดชอบต่อการเรียกร้องความเสียหายหรือความรับผิดอื่น ๆ ไม่ว่าจะเป็นการกระทำของสัญญาการละเมิดหรืออื่น ๆ ที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือการติดต่ออื่น ๆ ในซอฟต์แวร์