Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IPFS API bindings #83

Closed
jbenet opened this issue Aug 19, 2015 · 76 comments
Closed

IPFS API bindings #83

jbenet opened this issue Aug 19, 2015 · 76 comments

Comments

@jbenet
Copy link
Member

jbenet commented Aug 19, 2015

We've reached a pretty stable API, and IPFS now runs pretty reliably. People are already using IPFS from other languages, primarily JS through https://www.npmjs.com/package/ipfs-api

There's been talk about organizing an effort to get API bindings for more languages. Maybe we can start with:

The API is very simple -- it is just a REST-like HTTP + JSON API. Do we have any volunteers to help out with languages listed above (or others)? Please respond here if you can dedicate a good chunk of time. (I'll prepare a guideline doc for implementors in the meantime.) Then we can have a bunch of people working on this at the same time, which will make it go way faster. And then we can release them all in one go!

@ghost
Copy link

ghost commented Aug 19, 2015

I can offer code review for Ruby

@rschulman
Copy link

I have the beginnings of Rust API bindings.

@Fryie
Copy link

Fryie commented Aug 19, 2015

I would be interested in working on Ruby bindings, but I don't know enough about the project yet, so would need some guidance.

@PayasR
Copy link
Contributor

PayasR commented Aug 19, 2015

C/C++ I am willing to volunteer.

@rened
Copy link

rened commented Aug 19, 2015

I'd like to add an implementation for Julia.

@jbenet
Copy link
Member Author

jbenet commented Aug 20, 2015

Thanks @lgierth @rschulman @Fryie @PayasR and @rened -- I'll follow up with a quick dock here.

In the meantime check out https://github.com/ipfs/node-ipfs-api for a gist of how it works. The key parts are in:

@cryptix
Copy link

cryptix commented Aug 20, 2015

@jbenet maybe update the OP with links to existing binding projects? ipfs/py-ipfs, etc

@jbenet
Copy link
Member Author

jbenet commented Aug 21, 2015

@cryptix py-ipfs i think is not bindings, but aiming to be an impl? maybe someone can make ipfs/py-ipfs-api

@jbenet
Copy link
Member Author

jbenet commented Aug 27, 2015

Thanks everyone who is helping! Ok,

but can already start, given node-ipfs-api is so trivially simple.

@ianopolous
Copy link
Member

I'm starting a Java implementation. Will post a link once I have something non trivial.

@dysbulic
Copy link

API Blueprint is a markdown specification for describing APIs. It has a conceptualization of endpoints and request types and responses and whatnot.

It's a subset of markdown, so it will always render, but apiary.io provides a more complex display.

For example, this is the markdown and this is the rendering for a blueprint I've been working on recently.

I've perused the node-api index and assume I know the endpoint names. I'm still clueless on the data model.

If anyone who groks the data structures and interactions is interested in pairing on this, I'd love to contribute, but I don't get the system well enough to do it just yet.

@ianopolous
Copy link
Member

My Java implementation is going here: https://github.com/ianopolous/IPFS-API-Java I'm aiming to make it self contained and simple.

@amstocker
Copy link

Just finished rudimentary python bindings: https://github.com/amstocker/python-ipfs-api

Any advice or testing would be greatly appreciated. It is already somewhat tested on my local machine (Ubuntu 14.04.2/Python 2.7.6).

@Fryie
Copy link

Fryie commented Sep 7, 2015

I'm expecting to do slow but steady progress on the Ruby bindings here. :)

@jbenet
Copy link
Member Author

jbenet commented Sep 7, 2015

Moved @amstocker python bindings to https://github.com/ipfs/python-ipfs-api/ (thanks!). If anyone else wants their moved as well, let me know. (it's easier for the community to all collaborate in one set of bindings)

@jbenet
Copy link
Member Author

jbenet commented Sep 7, 2015

@dysbulic happy to help with the API data model. maybe drop by #ipfs or ask questions on https://github.com/ipfs/go-ipfs or https://github.com/ipfs/node-ipfs-api ?

@ghost
Copy link

ghost commented Sep 7, 2015

@Fryie coolio, I'll try to have a look at what you already have, but if you want me to look at anything in particular, feel free to ping me on IRC

@MichaelMure
Copy link

I have the start of a C++ API binding here: https://github.com/MichaelMure/Arbore-qt/tree/master/src/ipfs

It's not really general purpose and Qt based, but still ...

@cboddy
Copy link
Member

cboddy commented Sep 13, 2015

Hello, I've started on a wrapper in Scala for the IPFS HTTP-API here: https://github.com/cboddy/scala-ipfs-api/

If anyone else is interested in contributing (or has requests or suggestions) please let me know, otherwise I'll update once it is complete.

@jbenet
Copy link
Member Author

jbenet commented Sep 13, 2015

Looking good! @MichaelMure and @cboddy let me know when it reaches some level of completion and we can move them into ipfs/ org (if you want)

@cboddy
Copy link
Member

cboddy commented Sep 14, 2015

@jbenet the Scala/JVM bindings are now complete for the basic commands enumerated in the

ipfs --help

message, along with most of the data-structure commands and some coverage of the others. The rest should be straight forward to plumb-in in the next week with more formal integration tests, please feel free to add it to ipfs/ in the mean time.

@jbenet
Copy link
Member Author

jbenet commented Sep 16, 2015

@cboddy this is great news!! would you like to transfer the repo to the ipfs org, the way we're doing for the others? I added you to the org-- just transfer the repo to ipfs user (or me if it doesn't work). I'll then make sure you have admin and so on.

@cboddy
Copy link
Member

cboddy commented Sep 17, 2015

@jbenet thanks and sure, have done!

@jbenet
Copy link
Member Author

jbenet commented Oct 2, 2015

I've updated the listing in the first post to include the awesome new Python, Java, and Scala api bindings! Thanks so much to everyone involved! 👏 👏

We should make our Go bindings as nice... @whyrusleeping

@seclorum
Copy link

seclorum commented Oct 5, 2015

I'll do Lua!

@jbenet
Copy link
Member Author

jbenet commented Oct 9, 2015 via email

@NeoTeo
Copy link

NeoTeo commented Oct 15, 2015

I'm working on Swift API bindings.

@daviddias
Copy link
Member

@digitalkaoz go for it :)

@vasild
Copy link

vasild commented Aug 23, 2017

@diasdavid what about moving https://github.com/vasild/cpp-ipfs-api to https://github.com/ipfs/cpp-ipfs-api? It was complete last time I enjoyed with it, but I haven't had the time to check if new API functions have been added after that.

@daviddias
Copy link
Member

@vasild we can do that. Are you still available to continue being the captain for that lib?

@vasild
Copy link

vasild commented Aug 23, 2017

@diasdavid I changed jobs recently and haven't been able to find enough time to give cpp-ipfs-api some love (e.g. check if new functions have been added to the main API and implement them if that is the case). Moving it under /ipfs/ will increase its visibility so maybe others would contribute too. OTOH if you do not want to adopt code written by just one developer that is not working on it actively then maybe then it would be better to leave it under /vasild/. IMO it would be best to move it to /ipfs/ and I will eventually find time to play further with it. What do you think?

@daviddias
Copy link
Member

@vasild understood. I think the best approach is to follow your suggestion and describe the state of the implementation on the README + open issues for known issues + welcome new contributors. All of this + moving to the IPFS org.

I'll mention the IPFS client libraries in the next IPFS All Hands :)

@vasild
Copy link

vasild commented Aug 23, 2017

@diasdavid vasild/cpp-ipfs-http-client@b1c557e ok? (there are no known issues!)

@digitalkaoz
Copy link
Contributor

digitalkaoz commented Aug 23, 2017 via email

@bebehack3r
Copy link
Contributor

bebehack3r commented Aug 24, 2017

@jbenet hello! It would be great to change the current rust link to the new one, because it wasn't updated for 2 years already.. rust-ipfs-api
My implementation is still raw, but it works!

@daviddias
Copy link
Member

@rmnoff great! Please open a PR to include it to the list. (Example #265)

@daviddias
Copy link
Member

@vasild Looks good to me :)

@bebehack3r
Copy link
Contributor

@diasdavid done! :)

@tensor-programming
Copy link

Is there any interest in a Dart and/or Elixir implementation of the API? I know neither languages are specifically listed but I personally would use both for various different applications.

@whyrusleeping
Copy link
Member

whyrusleeping commented Oct 7, 2017 via email

@tensor-programming
Copy link

tensor-programming commented Oct 12, 2017

I've made a bit of headway (about 65-70% of the commands) on the elixir API. If you want to take a look at it and see if it is up to snuff; I would appreciate it. I still need to build out many of the commands as well as documentation and the test module (and circleCI). I was able to get over most of the difficult humps though (multipart form support etc) so its just a matter of days/weeks at this point until I have a fairly decent amount of the functionality implemented.

Here is the repo: https://github.com/tensor-programming/Elixir-Ipfs-Api

Edit: I will be abandoning the repo because no one seems to care? I didn't seem to even get a response from you guys and its been a month. No point in maintaining a piece of software no one is going to use. Anyone interested in taking the repo and building on it just let me know. All of the API endpoints were implemented with just the basic functionality. It wouldn't be hard to extend them and add the rest.

@waozi-dev
Copy link

What about an elm-ipfs-binding, is anyone interested in making this possible?

@foxcool
Copy link

foxcool commented Jan 6, 2018

Can write Perl binding if needed.

@gguoss
Copy link

gguoss commented Feb 8, 2018

haskell I am willing to volunteer.

@yishuiliunian
Copy link

i can write Objective-C , is there a work list to do?

@daviddias
Copy link
Member

@rogerlzp
Copy link

rogerlzp commented Jun 7, 2018

How about the status of developing mobile app using IPFS?
There are several projects for Android app, which is quite good.
The main step is first to start the ipfs daemon on a mobile, and do some file upload, etc.
I am trying to do mobile app based on current android app, and may extract them to an android sdk.
In my opinion, if we can get more developers or companies to store and retrieve their data in the ipfs system in mobile apps, then it is likely that the system can be used by lots of common users.
Do you have any plan on this or is there any discussion on it?
@jbenet

@TomorJM
Copy link

TomorJM commented Sep 13, 2018

Ipfs objc api?

@rogerlzp
Copy link

rogerlzp commented Sep 29, 2018 via email

@JadedCtrl
Copy link

JadedCtrl commented Jul 22, 2019

I wrote another set of Common Lisp bindings a while back (the other refused to work on either of my PCs even after some fiddling, and didn't support pubsub).

It's right over here— there's a GitHub mirror, too.

@daviddias daviddias removed the ready label Nov 12, 2019
@hsanjuan
Copy link
Contributor

Thank you all, we are cleaning up this repository. If you have additional contributions please let us know in https://discuss.ipfs.io .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Development

No branches or pull requests