2015-01-11 6 views
5

पर लिखने की सुविधा है, मेरे पास वर्तमान में एक बॉट है जो कुछ गिटहब संचालन को स्वचालित करता है, जैसे पुल अनुरोधों को विलय करना, पीआर खोले जाने पर स्लैक पर कर्मचारियों को सूचित करना, उस तरह की चीज (यह एक चीज है कस्टम स्वादित हबोट उदाहरण)गिटहब एपीआई यह जांचने के लिए कि क्या उपयोगकर्ता को एक भंडार

जब कर्मचारी उन्हें पुल अनुरोध मर्ज करने का आदेश देते हैं, तो वह पहले यह देखने के लिए जांच करता है कि वे उस टीम से संबंधित हैं, जिनके पास उस भंडार की पहुंच है। यह काम करता है, लेकिन कोड बहुत अच्छा नहीं है।

सबसे पहले वह संगठन पर सभी टीमों को प्राप्त करता है, उनके माध्यम से loops, सभी उपयोगकर्ताओं को उस टीम को सौंपा जाता है, अगर वह मर्ज कमांड जारी करने वाला उपयोगकर्ता पाता है, तो वह यह देखने के लिए जांच करता है कि उस टीम के पास लेखन पहुंच है या नहीं। यदि नहीं करता है, प्रमाणीकरण अच्छा है।

क्या यह इसके बारे में जाने का सबसे अच्छा तरीका है? मुझे लगता है कि यह बहुत आसान हो सकता है।

उत्तर

4

अद्यतन: अब वहाँ इस के लिए एक GitHub एपीआई समाप्ति बिंदु:

https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level


पुराने उत्तर: वर्तमान में यह करने के लिए एक बहुत सरल तरीका नहीं है (लेकिन मैं मानता हूँ कि यह होगा अगर इस जानकारी को पाने के लिए एक और शानदार तरीका था तो बढ़िया हो)। आप शायद the user's teams और the list of teams which have access to the repository (और संगठनों की सभी टीमों) को प्राप्त करके अनुरोधों की संख्या को कम कर सकते हैं। इन दो सूचियों के छेड़छाड़ से आपको प्रश्न का उत्तर देने की अनुमति मिलनी चाहिए, मुझे लगता है।

(इसके अलावा, अपने समाधान में, ध्यान दें कि आपको केवल यह जांचना नहीं है कि उपयोगकर्ता पुश-एक्सेस टीम का सदस्य है - आपको यह भी जांचने की आवश्यकता है कि यह पुश-एक्सेस टीम has access to the repository in question हो। उपयोगकर्ता के पास हो सकता है एक पुश-एक्सेस टीम का सदस्य रहा है, जिसके पास प्रश्न में रिपोजिटरी तक पहुंच नहीं है, और पुल-एक्सेस टीम का सदस्य है जिसके पास प्रश्न में रिपोजिटरी तक पहुंच है।)

+0

http://stackoverflow.com/a/20734751/12916 की ही तरह। –

+0

@ ल्यूकरोलिन्स मैंने अभी एक नए एंडपॉइंट के लिंक के साथ उत्तर अपडेट किया है जो आपको ऐसा करने की अनुमति देता है: https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level –

1

मेरी कंपनी गिथब एंटरप्राइज़ का उपयोग करती है ।

यह API Docs link मदद की

प्राप्त/रेपोस /: मालिक /: रेपो/सहयोगियों /: उपयोगकर्ता नाम

उपयोगकर्ता आप एक प्रतिक्रिया

के समान मिलेगा पहुंच होने की स्थिति: 204 कोई सामग्री

एक्स-रेटलिमिट-सीमा: 5000

एक्स RateLimit-शेष: 4999

+0

जैसा http://stackoverflow.com/questions/20733221/determine-a-collaborators-permissions-to-an-organization-repos-via-the-api में उल्लेख किया गया है कि कुछ मोड दिए जाने पर एक्सेस मोड को अलग करने के लिए पर्याप्त नहीं है पहुंच खींचें और दूसरों को अधिक पहुंच। कुछ अनुप्रयोगों के लिए इससे कोई फर्क नहीं पड़ता। –

+0

वर्कअराउंड सभी '/ repos /: मालिक /: repo/सहयोगी 'को गिनना है, दिए गए उपयोगकर्ता के साथ एक मैच खोजना और फिर' अनुमतियां 'जांचना, लेकिन यह अक्षम है क्योंकि विशेष रूप से पेजिंग आपको कई अनुरोध करने के लिए मजबूर कर सकती है।मैंने गिटहब से संपर्क किया और एक प्रतिनिधि इस बात पर सहमत हुए कि वे इस उद्देश्य को समर्पित एक एपीआई पर विचार कर सकते हैं। –

संबंधित मुद्दे