This repository has been archived by the owner on Feb 12, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move interop-example1 to examples/access-go-ipfs-files/cat-a-file. Remove dependency on ipfs-daemon and use ipfs.js. Add start-ipfs function to handle the init dance. Update instructions in README.
- Loading branch information
Showing
8 changed files
with
189 additions
and
143 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
node_modules/ | ||
public/ipfs.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
# access-go-ipfs-files - cat-a-file | ||
|
||
**WIP** | ||
|
||
## TODO | ||
|
||
- Add "connect to peer" input field and "connect" button under the "Peers" section in index.html | ||
- Add `connectToPeer` function which calls `ipfs.swarm.connect(multiaddr)`. See https://github.com/ipfs/js-ipfs/blob/b0a7cd83cbf146b0f147467dedc686f94a5f751f/examples/ipfm/src/DataStore.js#L82 and https://github.com/ipfs/js-ipfs/blob/b0a7cd83cbf146b0f147467dedc686f94a5f751f/examples/ipfm/README.md#start-an-interplanetary-file-exchange-daemon. The multiaddr to connect to looks like this: `/ip4/127.0.0.1/tcp/9999/ws/ipfs/QmZGH8GeASSkSZoNLPEBu1MqtzLTERNUEwh9yTHLEF5kcW` | ||
- Hook up "connect" button's click event to `connectToPeer` function | ||
- Add instructions to this README on how to add a file in go-ipfs | ||
- Add instructions to this README on how to cat it in the UI | ||
- Make sure the "Start a go-ipfs daemon" instructions are correct | ||
- Make sure go-ipfs daemon and the example connect to each other | ||
|
||
## Step-by-step Instructions | ||
|
||
### Start a go-ipfs daemon | ||
|
||
1. Install go-ipfs from master (TODO: link). | ||
|
||
2. Run `ipfs init` | ||
|
||
3. Edit your IPFS config file, located at `~/.ipfs/config` | ||
|
||
4. Add a Websocket listener address to `Addresses.Swarm`. It should look like this after editing: | ||
``` | ||
"Addresses": { | ||
"API": "/ip4/127.0.0.1/tcp/5001", | ||
"Gateway": "/ip4/0.0.0.0/tcp/8080", | ||
"Swarm": [ | ||
"/ip4/0.0.0.0/tcp/4001", | ||
"/ip4/0.0.0.0/tcp/9999/ws" | ||
] | ||
}, | ||
``` | ||
|
||
5. Start the go-ipfs daemon with: | ||
``` | ||
ipfs daemon | ||
``` | ||
|
||
6. You should see the Websocket address in the output: | ||
``` | ||
Initializing daemon... | ||
Swarm listening on /ip4/127.0.0.1/tcp/4001 | ||
Swarm listening on /ip4/127.0.0.1/tcp/9999/ws | ||
Swarm listening on /ip4/192.168.10.38/tcp/4001 | ||
Swarm listening on /ip4/192.168.10.38/tcp/9999/ws | ||
API server listening on /ip4/127.0.0.1/tcp/5001 | ||
Gateway (readonly) server listening on /ip4/0.0.0.0/tcp/8080 | ||
Daemon is ready | ||
``` | ||
|
||
If you see address like `Swarm listening on /ip4/127.0.0.1/tcp/9999/ws`, it means all good! | ||
|
||
## Start the example | ||
|
||
**NOTE!** Before running the examples, you need to build `js-ipfs`. You can do this by following the instructions in https://github.com/ipfs/js-ipfs#clone-and-install-dependnecies and then building it as per https://github.com/ipfs/js-ipfs#build-a-dist-version. | ||
|
||
``` | ||
npm install | ||
npm start | ||
``` | ||
|
||
Open http://127.0.0.1:8080 in a browser. | ||
|
||
**TODO: add instructions how to cat a hash in the UI.** | ||
|
||
## Tutorial | ||
|
||
Steps | ||
1. create IPFS instance | ||
|
||
TODO. See `./start-ipfs.js` | ||
|
||
3. add a file in go-ipfs | ||
4. copy file's hash | ||
5. ipfs.files.cat | ||
|
||
TODO. add ipfs.files.cat code examples from index.html | ||
|
||
6. output the buffer to <img> | ||
|
||
``` | ||
... | ||
stream.on('end', () => { | ||
const blob = new Blob(buf) | ||
picture.src = URL.createObjectURL(blob) | ||
}) | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
{ | ||
"name": "cat-a-file", | ||
"version": "1.0.0", | ||
"description": "", | ||
"scripts": { | ||
"postinstall": "cp ../../../dist/index.js ./public/ipfs.js", | ||
"start": "http-server -c-1" | ||
}, | ||
"author": "Haad", | ||
"license": "MIT", | ||
"devDependencies": { | ||
"http-server": "^0.9.0" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
47 changes: 47 additions & 0 deletions
47
examples/access-go-ipfs-files/cat-a-file/public/start-ipfs.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
'use strict' | ||
|
||
// Start an IPFS instance | ||
window.startIpfs = (options, callback) => { | ||
const repoPath = options.IpfsDataDir || '/tmp/ipfs' | ||
|
||
const node = new window.Ipfs(repoPath) | ||
|
||
node.init({ emptyRepo: true, bits: 2048 }, (err) => { | ||
if (err && err.message !== 'repo already exists') { | ||
return callback(err) | ||
} | ||
|
||
node.config.get((err, config) => { | ||
if (err) { | ||
return callback(err) | ||
} | ||
|
||
const host = options.SignalServer.split(':')[0] || '127.0.0.1' | ||
const port = options.SignalServer.split(':')[1] || 9090 | ||
const signalServer = `/libp2p-webrtc-star/ip4/${host}/tcp/${port}/ws/ipfs/${config.Identity.PeerID}` | ||
|
||
config.Addresses = { | ||
Swarm: [ | ||
signalServer | ||
], | ||
API: '', | ||
Gateway: '' | ||
} | ||
|
||
config.Discovery.MDNS.Enabled = false | ||
|
||
node.config.replace(config, (err) => { | ||
if (err) { return callback(err) } | ||
|
||
node.load((err) => { | ||
if (err) { return callback(err) } | ||
node.goOnline((err) => { | ||
if (err) { return callback(err) } | ||
console.log('IPFS node is ready') | ||
callback(null, node) | ||
}) | ||
}) | ||
}) | ||
}) | ||
}) | ||
} |
File renamed without changes.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.