Commit Graph

46 Commits

Author SHA1 Message Date
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
Joonas Koivunen
cb664e11f8 fix: go back to using futures channels
we cannot simply replace async aware channels with crossbeam channels,
which cannot wake us up. keeping the channel buffer size at 1 to catch
any errors.
2020-03-17 10:34:43 +02:00
David Craven
d755576a17 Add boilerplate. 2020-03-13 13:53:55 +01:00
Joonas Koivunen
e0179d5ef4 add: test for loading go-ipfs 0.4.23 rsa key 2020-03-12 16:30:36 +02:00
Joonas Koivunen
6b780a767d add: tests for pem_to_der 2020-03-12 16:30:36 +02:00
Joonas Koivunen
53236d6665 fix: deny init with <= 2048 bit keys
this might need to be changed silently to 2048 if the tests use 1024 bit
keys.
2020-03-12 16:30:36 +02:00
Joonas Koivunen
5fb9add3c3 doc: add doc comments for config 2020-03-12 16:30:36 +02:00
Joonas Koivunen
abb6ef1e0a fix: warning on unused variable 2020-03-12 16:30:36 +02:00
Joonas Koivunen
f3e0b8a890 chore: cargo fmt 2020-03-12 16:30:36 +02:00
Joonas Koivunen
f690d51b8e fix: output the generated peerid in main 2020-03-12 16:30:36 +02:00
Joonas Koivunen
9b76a35275 fix: use base64pad instead of base64, field names 2020-03-12 16:30:36 +02:00
Joonas Koivunen
47b9d02a2a feat: rsa keygen using openssl with compat storage
taking on the openssl dependency is used for:

 - rsa key generation
 - from/to `pkcs#1` and `pkcs#8` transformations

Crate `rsa` was also considered but it does not support exporting keys
in any format at the moment and it's import code looks different from
`ring`s (this could be the case of not importing the "precomputed"
values in `rsa`).

The `pkcs#1` is (hopefully) used with go-ipfs-config/go-libp2p
compatible key storage but rust-libp2p/ring need the key in `pkcs#8` der
format. PEM parsing and PEM to DER was implemented by hand as it looked
like the existingly depended on crates are not compatible as much as
possible.
2020-03-12 16:30:36 +02:00
Joonas Koivunen
826755500a refactor: move v0::version in own module 2020-03-12 16:30:36 +02:00
Joonas Koivunen
992838f9a2 add: /api/v0/version with query args 2020-03-11 14:02:29 -04:00
Joonas Koivunen
c316a1c824 add: build metadata with vergen
this could be moved over to rust-ipfs but I think that people will
prefer to track their own binarys version (which is tracked hopefully in
a vcs) instead of their `rust-ipfs` deps version, which will be in their
`Cargo.lock` file.
2020-03-11 14:02:29 -04:00
Joonas Koivunen
e032d3d4aa
Http v0 for testing (#71)
* add first draft of the http api

* chore note on the difficulties with with_graceful_shutdown

* add the second required output line by js-ipfsd-ctl

* run cargo fmt for different formatting from rls?

* chore note on (stalled) progress

* add remaining cli args boilerplate

what is missing now is using ephemeral addresses with the warp, as
js-ipfsd-ctl doesn't always to shutdown the older one, or then it just
doesn't shut down correctly.

* fix bind to ephemeral localhost port

* add env_logger initialization

* fix faked multiaddr typo

never remember its "ip4" instead of "ipv4"

* fix do GET on every method in /id

for some reason js-ipfsd-ctl will do a POST against /api/v0/id.

* chore run cargo fmt

* Adding placeholder NOT_IMPLEMENTED endpiints

* rustfmt

* Feedback from PR

* Update http/Cargo.toml

Co-Authored-By: Joonas Koivunen <joonas@equilibrium.co>

Co-authored-by: Mark Robert Henderson <henderson.mark@gmail.com>
2020-03-05 21:38:44 +02:00