2010-01-02 4 views
11

Sto realizzando una piccola app in Adobe Air che devo interagire con l'API Github Gist. Comunque sono abbastanza bloccato.Aggiungi nuovo Gist usando l'API Github

Se non si ha familiarità con Adobe Air è ancora possibile aiutare, l'oggetto javascript XMLHttpRequest può eseguire richieste di domini incrociati, in quanto non esiste un dominio in quanto tale. Quindi non c'è nulla di specifico per Adobe Air qui.

Dove sono bloccato, penso di aver bisogno di autenticarmi e quindi di fare il POST. Semplicemente non lo capisco

risposta

4

Il problema con lo script è che se si sta inviando un metodo POST, si aggiunge i dati nell'URL, come se si trattasse di un GET. Hai solo bisogno di cambiare xmlhttp.send(NULL) a xmlhttp.send(data), dove data sono i dati di query che sono stati aggiunti all'URL gists (incluso il file e le informazioni di autenticazione).

Come semplice esempio, ecco un estratto da a bash script creazione di una nuova sostanza:

#!/usr/bin/env bash 
if [ -z "$(git config github.token)" ] 
then echo "warning: no api key found, to add follow instructions on github account page." 
else echo "attempting to create a new gist using your github authentication..."; fi 

SHA=$((curl https://gist.github.com/gists --include \ 
     --data login=$(git config github.user) \ 
     --data token=$(git config github.token) \ 
     --data action_button=private \ 
     --data 'file_ext[gistfile1]=txt' \ 
     --data 'file_contents[gistfile1]=Hello World, this is an example gist!' \ 
| perl -e 'for(<>){if(/^Location: https?:\/\/gist.github.com\/([0-9a-f]+)/){print $1}}')2>/dev/null) 

echo "New example gist created at https://gist.github.com/$SHA" 
+0

Non capisco quale formato i dati POST abbiano essere in. Potresti spiegare un po 'oltre per favore. –

+0

Nel tuo script originale hai avuto la riga: "var url = gists + '? ...'". I tuoi dati di post sarebbero tutto ciò che ho sostituito con "...". –

1

Non si dovrebbe dovere autenticare l'utente.

XMLHttpRequest dovrà semplicemente avere il nome utente e il token dell'API utente inclusi nella richiesta.

Guardando lo script di esempio rubino fornito da github here, devi solo di fornire i seguenti attributi:

  • Extenstion File
  • nome del file
  • contenuti
  • Se la sostanza è privata o no
  • Accesso utente
  • Token API utente

python e perl versioni dello script

+0

Non riesco a far nulla per funzionare. Questo è quello che ho provato http://pastebin.com/fa70880b –

+0

Penso che il tuo tipo di file/nome e il contenuto devono essere prefissati come nell'esempio. 'file_ext [gistfile1]' 'nome_file [gistfile1]' 'file_contents [gistfile1]' –

+0

L'ho modificato ma non funzionava ancora http://pastebin.com/f977d433 –