Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zabirauf/elixir-ipfs-api
The Elixir library that is used to communicate with the IPFS REST endpoint.
https://github.com/zabirauf/elixir-ipfs-api
Last synced: 1 day ago
JSON representation
The Elixir library that is used to communicate with the IPFS REST endpoint.
- Host: GitHub
- URL: https://github.com/zabirauf/elixir-ipfs-api
- Owner: zabirauf
- License: mit
- Created: 2015-11-16T00:16:35.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2020-03-03T15:02:00.000Z (over 4 years ago)
- Last Synced: 2024-04-22T13:34:01.830Z (7 months ago)
- Language: Elixir
- Homepage:
- Size: 13.7 KB
- Stars: 47
- Watchers: 4
- Forks: 12
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - IPFS (InterPlanetary File System) API client for Elixir. (Third Party APIs)
- fucking-awesome-elixir - elixir_ipfs_api - IPFS (InterPlanetary File System) API client for Elixir. (Third Party APIs)
- awesome-elixir - elixir_ipfs_api - IPFS (InterPlanetary File System) API client for Elixir. (Third Party APIs)
README
[![Build Status](https://travis-ci.org/zabirauf/elixir-ipfs-api.svg)](https://travis-ci.org/zabirauf/elixir-ipfs-api) [![Inline docs](http://inch-ci.org/github/zabirauf/elixir-ipfs-api.svg)](http://inch-ci.org/github/zabirauf/elixir-ipfs-api)
Current Version: [v0.1.0](https://hex.pm/packages/elixir_ipfs_api)
# Elixir-Ipfs-Api
The Elixir library that is used to communicate with the IPFS REST endpoint.
![elixir_ipfs_api](https://cloud.githubusercontent.com/assets/1104560/11236786/a332e2ba-8d90-11e5-9b21-e37a0931130c.png)
# [Documentation](http://hexdocs.pm/elixir_ipfs_api/)
The documentation is posted at [hexdocs](http://hexdocs.pm/elixir_ipfs_api/)
# How to use it
## 1. Add the library to mix.exs
The package is published on [Hex](https://hex.pm). Add the elixir\_ipfs\_api as follow
```
defp deps do
[
...
{:elixir_ipfs_api, "~> 0.1.0"}
...
]
end
```## 2. Start the IPFS Daemon
Start the IPFS daemon by running the following in terminal
```
$ ipfs daemon
```This will start the ipfs daemon with the API endpoint at localhost:5001.
If you want to start the API endpoint at a different address then add to the config```
$ ipfs config Addresses.API /ipfs/127.0.0.1/tcp/5007
```## 3. Create the IpfsConnection in your code
The [IpfsConnection](http://hexdocs.pm/elixir_ipfs_api/IpfsConnection.html) entity contains the information of the IPFS API endpoint. By default it will try to connect to http://localhost:5001/api/v0
```
conn = %IpfsConnection{host: "127.0.0.1", base: "api/v0", port: 5007}
```## Examples
### Adding content to IPFS
```
iex> conn = %IpfsConnection{}
iex> IpfsApi.add(conn, "Hello world from Elixir-Ipfs-Api")
{:ok,
%{"Hash" => "QmTcCZJEW1kUcYU1bKQk9SMGRsTisMMWXuxJ1AQerHwyaA",
"Name" => "QmTcCZJEW1kUcYU1bKQk9SMGRsTisMMWXuxJ1AQerHwyaA"}}
```### Getting content from IPFS
```
iex> conn = %IpfsConnection{}
iex> IpfsApi.get(conn, "QmTcCZJEW1kUcYU1bKQk9SMGRsTisMMWXuxJ1AQerHwyaA")
<<81, 109, 84, 99, 67, 90, 74, 69, 87, 49, 107, 85, 99, 89, 85, 49, 98, 75, 81, 107, 57, 83, 77, 71, 82, 115, 84, 105, 115, 77, 77, 87, 88, 117, 120, 74, 49, 65, 81, 101, 114, 72, 119, 121, 97, 65, 0, 0, 0, 0, ...>>
```# TODO
- [] Add stream for adding & getting files to and from IPFS
- [] Add a pool to request from multiple different IPFS nodes