Ipfs: IPFS-API-Bindungen

Erstellt am 19. Aug. 2015  ·  76Kommentare  ·  Quelle: ipfs/ipfs

Wir haben eine ziemlich stabile API erreicht und IPFS läuft jetzt ziemlich zuverlässig. Die Leute verwenden bereits IPFS aus anderen Sprachen, hauptsächlich JS über https://www.npmjs.com/package/ipfs-api

Es wurde darüber gesprochen, eine Anstrengung zu unternehmen, um API-Bindungen für mehr Sprachen zu erhalten. Vielleicht können wir anfangen mit:

Die API ist sehr einfach – es ist nur eine REST-ähnliche HTTP + JSON-API. Haben wir Freiwillige, die bei den oben aufgeführten (oder anderen) Sprachen helfen? Bitte antworten Sie hier, wenn Sie genügend Zeit investieren können. (Ich werde in der Zwischenzeit ein Leitfadendokument für Implementierer vorbereiten.) Dann können wir mehrere Leute gleichzeitig daran arbeiten lassen, wodurch es viel schneller geht. Und dann können wir sie alle auf einmal veröffentlichen!

Hilfreichster Kommentar

Besteht Interesse an einer Dart- und/oder Elixir-Implementierung der API? Ich weiß, dass keine der Sprachen speziell aufgeführt ist, aber ich persönlich würde beide für verschiedene Anwendungen verwenden.

Alle 76 Kommentare

Ich kann Code-Review für Ruby anbieten

Ich habe die Anfänge von Rust-API-Bindungen .

Ich wäre daran interessiert, an Ruby-Bindungen zu arbeiten, aber ich weiß noch nicht genug über das Projekt, also brauche ich etwas Anleitung.

C/C++ Ich bin bereit, mich freiwillig zu melden.

Ich möchte eine Implementierung für Julia hinzufügen.

Danke @lgierth @rschulman @Fryie @PayasR und @rened - ich werde hier mit einem kurzen Dock nachfassen.

In der Zwischenzeit finden Sie unter https://github.com/ipfs/node-ipfs-api einen Überblick über die Funktionsweise. Die wichtigsten Teile sind in:

@jbenet vielleicht das OP mit Links zu bestehenden Bindungsprojekten aktualisieren? ipfs/py-ipfs usw

@cryptix py-ipfs Ich denke, es ist keine Bindung, aber das Ziel, ein Impl zu sein? vielleicht kann jemand ipfs/py-ipfs-api make machen

Danke an alle die helfen! Okay,

  • Ich habe das Flag ipfs --api <multiaddr> <cmd> implementiert, um einen entfernten Daemon anzusprechen ( siehe diesen PR ) – was hier sehr nützlich ist, um es zu untersuchen: target nc .
  • Ich habe ein sehr einfaches vorläufiges Dokument erstellt: https://github.com/ipfs/go-ipfs/blob/master/docs/implement-api-bindings.md
  • Der nächste Schritt besteht darin, eine Markdown-Spezifikation der gesamten go-ipfs-API basierend auf dem Code zu generieren (kann jemand einen Stich machen?)

kann aber schon starten, da node-ipfs-api so trivial einfach ist.

Ich starte eine Java-Implementierung. Werde einen Link posten, sobald ich etwas nicht triviales habe.

API Blueprint ist eine Markdown-Spezifikation zur Beschreibung von APIs. Es hat eine Konzeptualisierung von Endpunkten und Anforderungstypen und Antworten und so weiter.

Es ist eine Teilmenge von Markdown, wird also immer gerendert , aber

Dies ist zum Beispiel dies ist das Rendering für eine Blaupause, an der ich kürzlich gearbeitet habe.

Ich habe den Node-Api-Index durchgesehen und gehe davon aus, dass ich die Endpunktnamen kenne. Ich habe noch keine Ahnung vom Datenmodell.

Wenn jemand, der die Datenstrukturen und Interaktionen erforscht, daran interessiert ist, sich dazu zu paaren, würde ich gerne dazu beitragen, aber ich habe das System noch nicht gut genug, um es zu tun.

Meine Java-Implementierung geht hier: https://github.com/ianopolous/IPFS-API-Java Ich möchte es in sich geschlossen und einfach machen.

Gerade rudimentäre Python-Bindungen fertiggestellt: https://github.com/amstocker/python-ipfs-api

Jeder Rat oder Test wäre sehr dankbar. Es ist bereits auf meinem lokalen Computer (Ubuntu 14.04.2/Python 2.7.6) etwas getestet.

Ich erwarte langsame , aber stetige Fortschritte bei den Ruby - Bindungen zu tun hier . :)

@amstocker Python-Bindungen nach https://github.com/ipfs/python-ipfs-api/ verschoben (danke!). Wenn noch jemand umgezogen sein möchte, lass es mich wissen. (Es ist für die Community einfacher, in einem Bindungssatz zusammenzuarbeiten)

@dysbulic hilft gerne beim API-Datenmodell. vielleicht bei #ipfs vorbeischauen oder Fragen stellen auf https://github.com/ipfs/go-ipfs oder https://github.com/ipfs/node-ipfs-api ?

@Fryie coolio, ich werde versuchen, mir anzusehen, was du bereits hast, aber wenn du möchtest, dass ich mir etwas kannst du IRC anpingen

Ich habe den Start einer C++-API-Bindung hier: https://github.com/MichaelMure/Arbore-qt/tree/master/src/ipfs

Es ist nicht wirklich universell und Qt-basiert, aber trotzdem ...

Hallo, ich habe mit einem Wrapper in Scala für die IPFS HTTP-API hier angefangen: https://github.com/cboddy/scala-ipfs-api/

Wenn jemand Interesse hat, einen Beitrag zu leisten (oder Wünsche oder Vorschläge hat), lassen Sie es mich bitte wissen, andernfalls werde ich aktualisieren, sobald es fertig ist.

Gut aussehen! @MichaelMure und @cboddy lassen es mich wissen, wenn es einen gewissen Grad der Fertigstellung erreicht hat und wir sie in die ipfs/ Organisation verschieben können (wenn Sie möchten)

@jbenet die Scala/JVM-Bindungen sind jetzt für die grundlegenden Befehle, die in der

ipfs --help

-Nachricht, zusammen mit den meisten Datenstrukturbefehlen und einer gewissen Abdeckung der anderen. Der Rest sollte in der nächsten Woche mit formelleren Integrationstests direkt eingespielt werden. Bitte fügen Sie ihn in der Zwischenzeit zu ipfs/ hinzu.

@cbody das sind tolle Neuigkeiten!! Möchten Sie das Repo an die ipfs Organisation übertragen, so wie wir es für die anderen tun? Ich habe Sie zur Organisation hinzugefügt - übertragen Sie einfach das Repository an den Benutzer ipfs (oder mich, wenn es nicht funktioniert). Ich werde dann sicherstellen, dass Sie Admin haben und so weiter.

@jbenet danke und sicher, getan!

Ich habe die Auflistung im ersten Beitrag aktualisiert, um die fantastischen neuen Python-, Java- und Scala-API-Bindungen aufzunehmen! Vielen Dank an alle Beteiligten! :Klatsch Klatsch:

Wir sollten unsere Go-Bindungen so schön machen... @whyrusleeping

Ich mache Lua!

Ich mache Lua!

Vielen Dank! Lmk, wenn Sie ein Repo haben, das Sie in die ipfs-Organisation einfügen können! :)

Ich arbeite an Swift-API-Bindungen.

Irgendwelche lustigen Einzeiler-Beispiele mit cURL, die ich direkt von der Befehlszeile (Linux) ausführen kann?

Indem man sich ipfs --help ipfs add --help und so anschaut, kombiniert mit
das API-Dokument ( https://ipfs.io/docs/api/ ) und Sie sollten in der Lage sein, die HTTP-API zu verstehen.

Kann zu Ihrer "Spaß" -Anforderung passen oder nicht :)

Aufrichtig,
Victor Bjelkholm
(+34) 672 15 90 89

Am Do, 5. November 2015 um 8:24 Uhr, bitcoinmeetups.org < [email protected]

schrieb:

Alle lustigen Einzeiler-Beispiele mit cURL kann ich direkt über den Befehl ausführen
Linie (Linux)?


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/ipfs/ipfs/issues/83#issuecomment -153976500.

Ich habe an einer API-Bindung in PHP gearbeitet . Im Moment ist es nur die Untermenge der IPFS-Befehle, die wir für ipfs.pics brauchten, aber ping mich, wenn du mehr brauchst und ich werde sie hinzufügen!

@cloutier Wenn Sie möchten, können wir Ihnen ein Repo unter der ipfs-Organisation namens php-ipfs-api erstellen und Sie können den Code dort einfügen

@whyrusleeping Ich würde es gerne mit der gleichen starken Copyleft-Lizenz veröffentlichen und ich weiß, dass das etwas umstritten sein könnte. Ist das für dich ok?

Ich habe jetzt den ersten Durchgang der Swift-API-Bindungen abgeschlossen . Fühlen Sie sich frei zu kommentieren und für Ihre großartigen iOS / OS X IPFS-Projekte zu verwenden und in die ipfs-Organisation zu wechseln :)

@whyrusleeping Ich würde es gerne mit der gleichen starken Copyleft-Lizenz veröffentlichen und ich weiß, dass das etwas umstritten sein könnte. Ist das für dich ok?

Hm. Ich bin diesbezüglich unentschlossen, würde aber stark dazu neigen, alles unter ipfs org permissiv zu halten, damit Benutzer nicht versehentlich Fehler machen.

@cloutier neugierig, warum eine starke Kopie für Bindungen übrig bleibt? die eine kommerzielle Nutzung strikt ausschließt, der Ort, an dem Benutzer am meisten Bindungen benötigen würden.

orthogonal dazu -- wenn man mehr darüber nachdenkt -- brauchen wir definitiv offizielle Bindings in PHP, die permissiv sind (MIT/BSD/Apache2). Wenn @cloutier sie nicht so machen möchte, brauchen wir einen anderen.

@cloutier @jbenet Wäre LGPL ein vernünftiger Kompromiss?

Nein, AFAIK LGPL ist nicht kompatibel mit MIT/BSD/Apache2.0

Ich habe noch etwas darüber nachgedacht und es wäre besser, es unter einer laxen Lizenz zu haben, um mehr Projekte mit einem offenen Standard wie IPFS zu bekommen, und somit besser für freie Software im Allgemeinen. Apache 2.0 wäre gut.

@davidar LGPL könnte eine gute Idee sein. Es würde die Einbettung in viele Lizenzen (einschließlich MIT und sogar proprietärem Code) ermöglichen, wenn der Quellcode zumindest der Bindung verfügbar ist, aber PHP ist ein besonderer Fall, da es fast nur auf Servern ausgeführt wird und die Copyleft-Klausel nicht ausgelöst durch den Code eines Servers . Könnte es genauso gut unter einer freizügigen Lizenz veröffentlichen.

@jbenet Fürs Protokoll bedeutet AGPL nicht nicht-kommerziell . Ich brauche aus technischen Gründen kein starkes Copyleft, aber ich will es aus politischen Gründen.

vielen Dank @cloutier!

@cloutier Ja, ich denke, Copyleft ist für Anwendungen _auf_ IPFS (wie ipfs.pics) sinnvoller als für Bibliotheken auf niedrigerer Ebene wie diese.

Von https://www.gnu.org/licenses/license-recommendations.html

Einige Bibliotheken implementieren freie Standards, die mit eingeschränkten Standards konkurrieren, wie z. B. Ogg Vorbis (das mit MP3-Audio konkurriert) und WebM (das mit MPEG-4-Video konkurriert). Für diese Projekte ist die weit verbreitete Verwendung des Codes von entscheidender Bedeutung, um die Sache freier Software voranzutreiben, und bringt mehr Nutzen, als ein Copyleft auf dem Code des Projekts tun würde.

In diesen speziellen Situationen empfehlen wir die Apache License 2.0.

@davidar Fasst sehr gut zusammen, worüber ich nachgedacht habe, danke! :+1:

Ich habe den Start der PHP-Bindungen: https://github.com/cloutier/php-ipfs-api

Es ist im Grunde derselbe Code, den wir in der Produktion bei ipfs.pics ausführen, aber unter Apache 2.0 neu lizenziert.

cc @mekarpeles

Danke, was ist, wenn ich diese API-Clientbibliotheken in einer Datei in ipfs/ipfs/clients (und ähnlich ipfs/ipfs/implementations) zusammenfasse, die wir auf dem neuesten Stand halten können?

Dies wird wahrscheinlich auch eine bessere Erfahrung für Leute sein, die versuchen, Clientbibliotheken zu durchsuchen (als dieses Problem). Wir können zusätzlich zu diesem Thema im Dokument verlinken, damit die Leute zur Diskussion beitragen können.

Irgendwelche dagegen?

C#/.NET hier . Ich verwende dieses Projekt für die Arbeit, daher wird es mindestens ein oder zwei Jahre lang unterstützt / verbessert.

Hallo zusammen und insbesondere @PayasR @jbenet @MichaelMure ,

Ich habe hier eine C++ API-Bindung implementiert: https://github.com/vasild/cpp-ipfs-api und habe gerade nach einigen Kämpfen mit Travis und Coveralls seine Testabdeckung auf 100% gebracht.

Bisher wurden die Methodensets Block, Config, Files, Generic, Object, Pin und Swarm der API (https://github.com/ipfs/interface-ipfs-core/tree/master/API) implementiert. Was bleibt, sind die dag- und dht-Dateien, die ich bald versuchen werde.

Cheerz!

Hallo alle zusammen! Ich hoffe, es geht dir gut! Ich habe mich gefragt, ob es Pläne gibt, eine API-Bindung in Visual Basic .NET zu erstellen?

Es gab einen Hinweis auf die .NET- Implementierung.

@Coder206 Siehe https://github.com/richardschneider/net-ipfs-core und https://github.com/richardschneider/net-ipfs-api.

Es ist in C# geschrieben, sollte aber über VB.Net zugänglich sein.

@jbenet Ich möchte meinen PHP-Client für ipfs https://github.com/digitalkaoz/php-ipfs widmen

Es ist unter dem MIT lizenziert, daher gibt es meiner Meinung nach keine Probleme.

Ich würde gerne sehen, wie mein Repo an die ipfs Organisation übertragen wird...

@digitalkaoz das ist toll. Möchten Sie es mir übertragen und ich werde es der IPFS-Organisation hinzufügen? Möchten Sie es auch zur Liste auf https://github.com/ipfs/ipfs#api -client-libraries hinzufügen?

Übrigens, jetzt gibt es ein tolles Logo für die HTTP-Client-Bibliotheken. Ich habe an alle geprft, die auf -- https://github.com/ipfs/ipfs#api -client-libraries -- waren, wenn Ihre nicht da war, hier ist sie:

image

Wenn Sie eine Implementierung vorgenommen haben, sollten Sie auch auf https://github.com/ipfs/ipfs#api-client-libraries verweisen und eine Notiz zur Vollständigkeit hinterlassen :)

@diasdavid lasst Clientbibliotheken hinzufügen :) Wirst du eine PR machen oder soll ich?

@digitalkaoz mach es :)

@diasdavid was ist mit dem Verschieben von https://github.com/vasild/cpp-ipfs-api nach https://github.com/ipfs/cpp-ipfs-api? Es war das letzte Mal, als ich es genossen habe, vollständig, aber ich hatte keine Zeit zu überprüfen, ob danach neue API-Funktionen hinzugefügt wurden.

@vasild das können wir machen. Sind Sie immer noch verfügbar, um weiterhin der Kapitän dieser Bibliothek zu sein?

@diasdavid Ich habe kürzlich den

@vasild verstanden. Ich denke, der beste Ansatz besteht darin, Ihrem Vorschlag zu folgen und den Stand der Implementierung in der README-Datei zu beschreiben + offene Probleme für bekannte Probleme + willkommene neue Mitwirkende. All dies + Umzug in die IPFS-Organisation.

Ich werde die IPFS-Clientbibliotheken im nächsten IPFS All Hands erwähnen :)

@diasdavid hat eine PR für die

Am Mi., 23. Aug. 2017, 17:37 schrieb Vasil Dimov [email protected] :

@diasdavid https://github.com/diasdavid vasild/ cpp-ipfs-api@b1c557e
https://github.com/vasild/cpp-ipfs-api/commit/b1c557e7a1165ea38d20d5806a35979bfc0a2575
in Ordnung? (es sind keine Probleme bekannt!)


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/ipfs/ipfs/issues/83#issuecomment-324374905 oder stumm
der Faden
https://github.com/notifications/unsubscribe-auth/AAR611I4GWv1OJkoJNiLvIVJXQnwE_rzks5sbEcygaJpZM4FuFH9
.

@jbenet hallo! Es wäre toll, den aktuellen Rost-Link auf den neuen zu ändern, da er schon seit 2 Jahren nicht mehr aktualisiert wurde.. rust-ipfs-api
Meine Implementierung ist noch roh, aber es funktioniert!

@rmnoff super ! Bitte öffnen Sie eine PR, um sie in die Liste aufzunehmen. (Beispiel https://github.com/ipfs/ipfs/pull/265)

@vasild Sieht gut aus für mich :)

@diasdavid fertig! :)

Besteht Interesse an einer Dart- und/oder Elixir-Implementierung der API? Ich weiß, dass keine der Sprachen speziell aufgeführt ist, aber ich persönlich würde beide für verschiedene Anwendungen verwenden.

Je mehr desto besser :)

Am Sa, 7. Okt 2017, 11:00 Tensor-Programming [email protected]
schrieb:

Besteht Interesse an einer Dart- und/oder Elixir-Implementierung der API? ich
weiß, dass keine der Sprachen speziell aufgeführt ist, aber ich persönlich würde es verwenden
beides für verschiedene Anwendungen.


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/ipfs/ipfs/issues/83#issuecomment-334917974 oder stumm
der Faden
https://github.com/notifications/unsubscribe-auth/ABL4HIInzOWvWTAIWjeRqR_mRuz22HC7ks5spy-ZgaJpZM4FuFH9
.

Ich habe ein bisschen Fortschritte gemacht (etwa 65-70% der Befehle) bei der Elixier-API. Wenn Sie einen Blick darauf werfen und sehen möchten, ob es dem Schnupftabak gewachsen ist; Ich würde es schätzen. Ich muss noch viele der Befehle sowie die Dokumentation und das Testmodul (und CircleCI) erstellen. Ich war jedoch in der Lage, die meisten schwierigen Höcker zu überwinden (mehrteilige Formularunterstützung usw.), sodass es zu diesem Zeitpunkt nur eine Frage von Tagen / Wochen ist, bis ich eine ziemlich anständige Menge der implementierten Funktionalität habe.

Hier ist das Repo: https://github.com/tensor-programming/Elixir-Ipfs-Api

Bearbeiten: Ich werde das Repo aufgeben, weil es niemanden zu interessieren scheint? Ich scheine nicht einmal eine Antwort von euch zu bekommen und es ist ein Monat her. Es macht keinen Sinn, eine Software zu warten, die niemand benutzen wird. Jeder, der daran interessiert ist, das Repo zu übernehmen und darauf aufzubauen, lässt es mich einfach wissen. Alle API-Endpunkte wurden nur mit der Basisfunktionalität implementiert. Es wäre nicht schwer, sie zu erweitern und den Rest hinzuzufügen.

Was ist mit einer Ulmen-Ipfs-Bindung, hat jemand Interesse, dies zu ermöglichen?

Kann bei Bedarf Perl-Binding schreiben.

haskell Ich bin bereit, mich freiwillig zu melden.

Ich kann Objective-C schreiben, gibt es eine Arbeitsliste?

Siehe https://github.com/ipfs/ipfs#api -client-libraries

Wie steht es um den Stand der Entwicklung mobiler Apps mit IPFS?
Es gibt mehrere Projekte für Android-Apps, was ziemlich gut ist.
Der Hauptschritt besteht darin, zuerst den ipfs-Daemon auf einem Mobiltelefon zu starten und einige Dateien hochzuladen usw.
Ich versuche, eine mobile App basierend auf der aktuellen Android-App zu erstellen und sie möglicherweise auf ein Android-SDK zu extrahieren.
Wenn wir meiner Meinung nach mehr Entwickler oder Unternehmen dazu bringen können, ihre Daten im ipfs-System in mobilen Apps zu speichern und abzurufen, dann ist es wahrscheinlich, dass das System von vielen normalen Benutzern verwendet werden kann.
Haben Sie diesbezüglich Pläne oder gibt es eine Diskussion darüber?
@jbenet

Ipfs objc-API?

Ja, der Client und der Server können mit statt mit einer Datei kommunizieren, was mehr wird
effizient.

TomorJM [email protected]于2018年9月13日周四 下午3:45写道:

Ipfs objc-API?


Sie erhalten dies, weil Sie einen Kommentar abgegeben haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/ipfs/ipfs/issues/83#issuecomment-420914945 oder stumm
der Faden
https://github.com/notifications/unsubscribe-auth/ABPHvCWs76QmmERDY7oqtQOuSPJ2eF54ks5uag0JgaJpZM4FuFH9
.

Ich habe vor einiger Zeit einen weiteren Satz von Common Lisp-Bindungen geschrieben (der andere weigerte sich, auf einem meiner PCs zu arbeiten, selbst nach einigem Herumprobieren und unterstützte Pubsub nicht).

Es ist gleich hier – es gibt auch einen GitHub- Spiegel .

Vielen Dank an alle, wir bereinigen dieses Repository. Wenn Sie zusätzliche Beiträge haben, teilen Sie uns dies bitte in https://discuss.ipfs.io mit .

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

brainframe-me picture brainframe-me  ·  3Kommentare

timthelion picture timthelion  ·  28Kommentare

amiyatulu picture amiyatulu  ·  3Kommentare

crazysoldier picture crazysoldier  ·  7Kommentare

nbingham1 picture nbingham1  ·  19Kommentare