65 Commits

Author SHA1 Message Date
Joonas Koivunen
efff60a41c wip: initial hack of dag.resolve 2020-04-17 16:19:03 +03:00
Joonas Koivunen
f080ac9056 fix: dag.put create cidv0 for dagpb with sha2-256 2020-04-17 16:19:03 +03:00
Joonas Koivunen
158d36ba16 chore: cargo fmt again 2020-04-16 22:13:14 -04:00
Joonas Koivunen
0ed641c705 refactor: remove clippy warnings
it is quite difficult to remember the --workspace --tests parameters..
2020-04-16 22:13:14 -04:00
Joonas Koivunen
114638be4b fix: use correct query param name
this gets us to pass all conformance tests for dag.put.
2020-04-16 16:46:54 +03:00
Joonas Koivunen
4269887cb2 chore: cargo fmt 2020-04-16 16:40:40 +03:00
Joonas Koivunen
1ea02418a5 refactor: get rid of clippy warnings 2020-04-16 16:40:40 +03:00
Joonas Koivunen
79985e4140
Add refs endpoint (#147)
A lot of code but going back and forth as well.

* fix: request logger name for good

* wip: initial broilerplate

* feat: ipfspath parsing and walking

* refactor: rewrite to walk the path before streaming

* fix: handling 0 for ipld link

* wip: get first tests to pass

still need to figure out the Send + Sync + 'static bound, issue is with
Sync, which might come from the refs used, get_block(&cid)..

this required some unsafety to be able to present the Stream as Send +
Sync + 'static as required by hyper. not 100% sure if that pin_project
is ok to do, but the only interfaces exposed are callable as futures so
it shouldn't be too bad.

* feat: format string support
* add: manual RefsOptions deserialization to have multiple `arg`

* fix: resolve multiple paths

I had not originally noticed that we need to do the walk from multiple
paths.

* add: dag-pb specific ipfspath walking

* add: make IpfsPath better debuggable

* wip: adjust logging

* add: yield ipld parsing failed err's

* add: "specialize" ipld_links for dag-pb

* feat: support visiting unique nodes

* fix: instead of stopping, filter out too deep elements

also, this should be done when expanding the nodes, not at this stage.

* refactor: reorg and document

originally it was easier to write everything to the same file, but it
gets difficult to read after 1000 lines. while reorganising stuff into
more tight modules, some direct calls were changed not to be needed,
like RefsOptions creating the EdgeFormatter; the EdgeFormatter is not
created in the refs function itself.

chopped off parts:

 * RefsOptions stuff to refs/options.rs
 * EdgeFormatter and the string format to refs/format.rs
 * Unshared to refs/unshared.rs
 * HandledErr, StreamResponse to refs/support.rs

* refactor: minor cleanup and docs

* fix: refs tests, enable unique test

* fix: use specific rust-ipld version with cbor fix

the situation is not good, as it would make sense to re-export libipld
from ipfs as parts are already re-exported but with strange names.

* refactor: allow dead_code StringError::new

* refactor: use the Edge for refs-local as well

* chore: cargo fmt and reorder tests

* doc: replace fixme with confirmed

* add: port tests for ipfspath

* fix: unignore good_but_unsupported test

* add: test cases for slash dedup per discussion

* add: walk dag-cbor tests for IpfsPath

* add: dag-pb path walking test

* add: tests for walking over a cbor link

* add: test case for dapb link listing

* fix: refs_local test, move all tests under mod test

* fix: remove unwrap from refs-local

kept the return value as a stream. it'll at least save us the trouble of
concatenating all of the values into a big vector.
2020-04-16 16:39:48 +03:00
Joonas Koivunen
a89ce4be45 chore: cargo fmt missing from master 2020-04-15 09:54:53 -04:00
Joonas Koivunen
97b5817381 refactor: remove unnecessary mut refs
unsure why this isn't picked up by clippy.
2020-04-15 09:54:53 -04:00
Mark Henderson
c8cabd1616 feat: /refs/local endpoint
Adding list to BlockStore trait and cleanup support

Adding list functionality and tests

wip dag put

Update Cargo.toml

Co-Authored-By: Joonas Koivunen <joonas.koivunen@gmail.com>

Update Cargo.toml

Delete config

rustfmt

fix: examples and unused"

fix: switching back to Vecs

feat: adding list functions to repo and ipfs

feat: working endpoint

fix: more sane newline adding

fix: clippy

fix: cargo fmt

fix: inner Result

fix: warp filter chain fixes part 1

fix: HandledErr and some cargo fmt

fix: StringError

removing HandledErr

fix: HandledErr

fix: unwrap placement
2020-04-14 12:26:31 -04:00
Mark Henderson
d3912d511b fix: examples and unused" 2020-04-14 08:04:06 -04:00
Mark Henderson
b6430b56c9 rustfmt 2020-04-14 08:04:06 -04:00
Mark Robert Henderson
63f81b605a Update Cargo.toml 2020-04-14 08:04:06 -04:00
David Craven
028b8074c3 wip dag put 2020-04-14 08:04:06 -04:00
Joonas Koivunen
2af43b4782 refactor: to_vec to into_vec per clippy 2020-04-02 13:04:00 +03:00
Joonas Koivunen
c1b1626399 chore: cargo fmt 2020-04-02 13:04:00 +03:00
Joonas Koivunen
0c9b997ea4 add: http log pid for easier correlation 2020-04-02 13:04:00 +03:00
Joonas Koivunen
f0cbecc92e fix: enable bitswap logging by default 2020-04-02 13:04:00 +03:00
Joonas Koivunen
72ff94cecf wip salvage
This is originally from the non-merging branch by David in
https://github.com/ipfs-rust/rust-ipfs/pull/126.

Co-authored-by: David Craven <david@craven.ch>
2020-04-02 13:04:00 +03:00
Joonas Koivunen
fb6e80b954 add: shutdown to release subscriptionfuts on exit
without this any future created by get_block will never complete, which
will hang http requests with the block api for example.
2020-04-01 14:30:25 +02:00
Joonas Koivunen
6cbf679644
Add pubsub http (#120)
* add: pubsub http api
* add: get shoveling and subscription complications going

currently the missing piece is seeing locally sent messages in the
subscribed streams, then maybe creating a more complicated API for
subscribing which will require a single task for shoveling into the
responses.

* chore: lower timeout to pass the tests

Should probably have another drop sender here.

* fix: close stream on first error

tokio::sync::broadcast will continue after telling how many items were
lost, which seems likely with the small buffer and quickly firing more
than the buffer elements.

* fix: raise the buffer size for subscribe responses
* feat: use custom rust-libp2p to pass tests

the v0.16.2-with-floodsub-opts includes "subscribers see locally
published messages" which is needed for the conformance tests to pass.
this has been PR'd as https://github.com/libp2p/rust-libp2p/pull/1520.

* fix: pubsub test after changing the floodsub impl
2020-03-25 21:42:06 +02:00
Joonas Koivunen
374512a948 fix: stop doing reading common config during tests
IpfsOptions::<T>::default() reads from disk, which I had forgotten when
writing the test case.
2020-03-22 17:49:49 -03:00
Joonas Koivunen
c33b87e8ef refactor: remove extra version fields
Created https://github.com/ferristseng/rust-ipfs-api/issues/46 instead.
2020-03-22 17:48:43 -03:00
Joonas Koivunen
89354e7075 fix: version to contain all fields for tests
incl. additional fields for rust-ipfs-api.
2020-03-22 17:48:43 -03:00
Joonas Koivunen
f624d1f7bd fix: both crate names were wrong by default
This is a leftover from PR #103.
2020-03-22 09:00:49 -03:00
David Craven
07481a65b3 Make mdns togglable. 2020-03-21 12:41:21 -03:00
David Craven
f121a21c81 Implement swarm http api. 2020-03-21 12:41:21 -03:00
Joonas Koivunen
ebcb230d6b refactor: rename rust-ipfs-http to ipfs-http 2020-03-17 11:14:03 +02:00
Joonas Koivunen
9ae816e363 add: README for http 2020-03-17 11:14:03 +02:00
Joonas Koivunen
1f6e081fb9 chore: remove unused arg warnings 2020-03-17 11:08:33 +02:00
Joonas Koivunen
c96c020b79 chore: cargo fmt again 2020-03-17 11:08:33 +02:00
Joonas Koivunen
21a6bbc621 refactor: simplify bounds 2020-03-17 11:08:33 +02:00
Joonas Koivunen
8bf88b972c doc: remove handled notes 2020-03-17 11:08:33 +02:00
Joonas Koivunen
8c7f9a3ce3 refactor: tests under v0::tests 2020-03-17 11:08:33 +02:00
Joonas Koivunen
5661eeb66a refactor: get rid of clippy warning 2020-03-17 11:08:33 +02:00
Joonas Koivunen
2111575c36 chore: cargo fmt 2020-03-17 11:08:33 +02:00
Joonas Koivunen
d13fe11dee refactor: move routes to lib, add tests 2020-03-17 11:08:33 +02:00
Joonas Koivunen
8b1abb3333 fix: log warning instead of eprintln 2020-03-17 11:08:33 +02:00
Joonas Koivunen
fde925f26a refactor: move MessageResp etc under v0::support 2020-03-17 11:08:33 +02:00
Joonas Koivunen
46ae2e2586 chore: clippy and other warnings 2020-03-17 11:08:33 +02:00
Joonas Koivunen
971b30a90b chore: cargo fmt 2020-03-17 11:08:33 +02:00
Joonas Koivunen
a065912219 fix: respond errors in ipfs api fashion
in warp this means recovering from the rejections in some filter chain.
they also need to be done in the order of "detail" to general (not
found, method not allowed) in order to match the most specific first.
2020-03-17 11:08:33 +02:00
Joonas Koivunen
8f4311aef6 fix: use exact path with /shutdown 2020-03-17 11:08:33 +02:00
Joonas Koivunen
5adea41251 wip: wrangle identity into more warpish ways 2020-03-17 11:08:33 +02:00
Joonas Koivunen
d348199568 add: common errors, recover handler
recover handler should be able to transform all errors to ipfs api
responses.
2020-03-17 11:08:33 +02:00
Joonas Koivunen
1777020cb3 refactor: move with_ipfs under ::v0 2020-03-17 11:08:33 +02:00
Joonas Koivunen
752968f12d doc: add notes on messageresponse 2020-03-17 10:34:43 +02:00
Joonas Koivunen
8f9d0440f6 refactor: use warp::query at least
I was initially thinking that the `query` might need to be changed away,
but it might provide just the rejection we'd need in order to recover
and give that similar error message back.
2020-03-17 10:34:43 +02:00
Joonas Koivunen
9e44c069d3 feat: propagate ipfs to filters, local id query
when query parsing fails, go-ipfs returns 500 and the
v0::ResponseMessage for which this adds a builder. Perhaps we'll need a
custom query parsing filter and an Ser/Deserialize implementation for Cids,
Multiaddrs, PeerIds and whatnot, which luckily might all have FromStr
already.

the current structure in the big handler of id needs refactoring, and a
way to handle the rejections.
2020-03-17 10:34:43 +02:00