2012-03-23 4 views
2

Ich möchte ein Google Docs-Dokument in Haskell erstellen, so dass im Grunde möchte ich in Haskell, was dieses kleine C# Programm zu tun hat (von einem Google-Beispielprogramm angepasst):Wie lade ich ein Dokument von Google Docs in Haskell hoch?

using Google.GData.Documents; 
using Google.GData.Client; 

namespace DocListUploader 
{ 
    public class GDocConsole 
    { 
     static void Main() 
     { 
      var user = "..."; 
      var passwd = "..."; 
      var file = "..."; 

      service = new DocumentsService("DocListUploader"); 
      service.setUserCredentials(user, passwd); 
      service.UploadDocument(file, null); 
     } 
    } 
} 

Von der Google Docs API-Beschreibung here und diese SO Antwort here Ich verstand, es ist "nur" eine Frage von ein paar HTTP-POSTs zu senden und die OAuth-Authentifizierung getan, aber nur wie? Hat jemand das schon gemacht und hat einige Codebeispiele für mich ...?

EDIT: kann immer noch nicht herausfinden, wie die oauth Bibliotheken verwenden, so schrieb ich nur ein wenig C# Wrapper:

using Google.GData.Documents; 
using Google.GData.Client; 

public class GoogleDoc 
{ 
    public static int Upload(string user, string passwd, string file) 
    { 
     try 
     { 
      var service = new DocumentsService("DocListUploader"); 
      service.setUserCredentials(user, passwd); 
      service.UploadDocument(file, null); 

      return 0; 
     } 
     catch 
     { 
      return -1; 
     } 
    } 
} 

und nannte diesen Wrapper von Haskell über hs-Dotnet:

module Upload where 

import NET 

upload :: String -> String -> String -> IO (Int) 
upload user passed file = 
    invokeStatic "[GoogleDoc.dll]GoogleDoc" "Upload" (user, passed, file) 

testLocal :: IO() 
testLocal = do 
    let user = "..." 
    let passwd = "..." 
    let file = "..." 
    returnCode <- upload user passwd file 
    putStrLn (show returnCode) 
+1

Obwohl ich mit der Google Docs-API nicht vertraut bin, sollten Sie sich das [http-Paket auf Hackage] (http://hackage.haskell.org/package/HTTP) ansehen. –

Antwort

4

Sie können die haskell-oauth-Bibliothek verwenden, um die OAUTH zu tun und die Dokumentation hochzuladen, wie bereits erwähnt, können Sie das http-Paket von Haskell versuchen.

+0

Danke! Ich kann haskell-oauth nicht ausführen, aber es scheint, als wäre es nicht so einfach, curl unter Windows zu installieren. Es gibt auch authenticate-oauth, das läuft gut, aber ich kann nicht herausfinden, was ich in welcher Reihenfolge tun muss. Ein Beispiel wäre toll ... – martingw

+0

Das Paket factal-api ist ein Beispiel für die Verwendung von hoauth. http://hackage.haskell.org/packages/archive/factual-api/0.6.1/doc/html/src/Network-Factual-API.html –