2012-02-11 18 views
7

क्या गिटहब में फ़ाइल के स्रोत के लिए जेएसएसपी एपीआई है? मुझे पता है कि बिटबकेट है, लेकिन मुझे गिटहब्स के लिए कोई जानकारी नहीं मिल रही है (मान लीजिए कि उनके पास एक है)।गिटहब जेसनपी स्रोत कोड एपीआई

क्या वे नहीं करते? यदि नहीं, तो बमर ...

उत्तर

0

मुझे नहीं लगता कि गिटहब में फ़ाइल के स्रोत को निकालने के लिए एक एपीआई है। वे हालांकि किसी भी API कॉल के बाद कॉलबैक = funciton निर्दिष्ट करके (यानी, curl https://api.github.com?callback=foo)

आप शायद एक निश्चित पर Trees एपीआई इस्तेमाल कर सकते हैं भंडार में मौजूद स्रोत फ़ाइलों को खोजने के लिए प्रतिबद्ध jsonp कॉलबैक (के प्रमुख की क्या ज़रूरत है मास्टर शाखा)। तो फिर तुम सिर्फ फ़ाइल के कच्चे संस्करण के लिए URL का उपयोग कर स्रोत प्राप्त कर सकते हैं (यानी, https://raw.github.com/robbyrussell/oh-my-zsh/master/lib/directories.zsh)

3

एक GitHub API documentation में कहा गया है, किसी भी कॉल JSONP invokation मोड का समर्थन:

आप JSON फ़ंक्शन में परिणाम लपेटने के लिए किसी भी GET कॉल को ?callback पैरामीटर भेज सकते हैं। आमतौर पर इसका उपयोग तब किया जाता है जब ब्राउज़र क्रॉस डोमेन समस्याओं के आसपास वेब पृष्ठों में गिटहब सामग्री को एम्बेड करना चाहते हैं। प्रतिक्रिया में नियमित डेटा के समान डेटा आउटपुट, साथ ही संबंधित HTTP शीर्षलेख जानकारी शामिल होती है।

आदेश में एक फ़ाइल के वर्तमान स्रोत (या इसके किसी भी संस्करण), आप पुनः प्राप्त करने के लिए या तो Blob में संग्रहीत किया जा रहा है की SHA पता करने के लिए है। इस बारे में अधिक जानकारी के लिए Git Database API देखें विषय।

  • सिंटेक्स: प्राप्त/रेपोस /: उपयोगकर्ता /: रेपो/Git/धब्बे /: शा
  • उदाहरण:https://api.github.com/repos/mono/monodevelop/git/blobs/90060e2... नवीनतम (इस दिन के लिए) README से पुनः प्राप्त करने के monodevelop

अक्सर से अधिक, कोई SHA नहीं जानता है, लेकिन केवल कार्यशील निर्देशिका में फ़ाइल का सापेक्ष पथ है। प्राप्त/रेपोस /: उपयोगकर्ता /: रेपो/Git/करता

तो फिर तुम

उठाओ एक सूची

  • सिंटेक्स से शा प्रतिबद्ध निम्नलिखित चरणों का पालन करना होगा
  • उदाहरण:https://api.github.com/repos/git/git/commits Git परियोजना के प्रतिबद्ध की सूची प्राप्त करने के लिए

पेड़ यह की ओर इशारा प्राप्त और रिकर्सिवली प्रत्येक प्रविष्टि (पेड़ों और Blobs)

, अपने ब्लॉब की खोज पथ मिलान का पता लगाएं अपनी SHA पता लगाना और लागू पहली प्रक्रिया

+0

यह बहुत उपयोगी है! धन्यवाद!! –

8

वहाँ डेटा की सामग्री प्राप्त करने के लिए एक API है जिथूब से यह v3 github API का हिस्सा है।

आप

https://api.github.com/repos/{username}/{repository name}/contents/{filepath and name} 

उदा के लिए अनुरोध करने https://api.github.com/repos/mono/monodevelop/contents/README

जब तक आप स्वीकार नहीं करते हैं, तब तक आप बेस JS में एन्कोड किए गए फ़ाइल सामग्री के साथ कुछ JSON वापस प्राप्त करेंगे। आपको इसे डीकोड करना होगा, ऐसा कुछ जो node.js में बहुत आसान है, लेकिन ब्राउजर में दर्द का अधिक है। आप स्टैक ओवरफ्लो पर अन्य प्रश्नों में जावास्क्रिप्ट में बेस 64 डिकोडर्स को आसानी से पा सकते हैं। ध्यान देने योग्य बात यह है कि जीएसबीब से वापस आने वाले बेस 64 कोड में इसे नए प्रारूपों में अच्छी तरह से प्रारूपित करने के लिए इसमें नए अक्षर हैं और कई बेस 64 डिकोडर्स न्यूलाइन के साथ सामना नहीं कर सकते हैं, इसलिए आपको उन्हें हटाने या डिकोडर को संशोधित करने की आवश्यकता हो सकती है।

आप शायद सामग्री चाहते हैं और जेसन (जैसे शा और लंबाई, आदि) में अन्य सामानों की आवश्यकता नहीं है, ताकि आप स्वीकृति हेडर को application/vnd.github.3.raw पर सेट करके अपना जीवन आसान बना सकें।

यहाँ एक उदाहरण के साथ कर्ल का उपयोग कर हैडर स्वीकार करता है:

curl -i https://api.github.com/repos/mono/monodevelop/contents/README --header "Accept: application/vnd.github.3.raw" 

अब, आप नोड या कर्ल उपयोग कर रहे हैं, कि शायद ठीक है, लेकिन अगर आपको लगता है कि आप क्या करना, ब्राउज़र के अंदर चला रहे हैं कोर्स का उपयोग करने की आवश्यकता होगी। गीथब केवल उन होस्टों से एक्सेस की अनुमति देता है जो ओएथ अनुप्रयोगों के रूप में पंजीकृत हैं। ऐसा करना विशेष रूप से मुश्किल नहीं है, लेकिन मेरे उपयोगकेस (एक बुकमार्केटलेट) के लिए, यह एक विकल्प नहीं था।

सीओआरएस का उपयोग किये बिना पहुंच प्राप्त करने का एक तरीका है, और यह JSONP के साथ है, आप उदा। ?callback=_processGithubResponse स्क्रिप्ट टैग के साथ उपयुक्त जावास्क्रिप्ट आउटपुट प्राप्त करने के लिए उपयुक्त है (जो प्रतिक्रिया के साथ _processGithubResponse नामक फ़ंक्शन को कॉल करता है)। दुर्भाग्य से आप उस पर एक एसेप्ट्स हेडर सेट नहीं कर सकते हैं, इसलिए आप इस मामले में डीकोडिंग बेस 64 के साथ फंस गए हैं।

यदि आप node.js का उपयोग कर रहे हैं, तो मैं आपको node-github का उपयोग करने की सलाह दूंगा जो एपीआई को उपयोग करने में थोड़ा आसान बनाता है।

+0

एपीआई के वर्तमान संस्करण के साथ काम नहीं कर रहा है – rakesh