Sebastian Martinez
564886b165
httpd: Add `path` property to `CodeLocation`
...
For the web client to be able to show file we need to provide
the web client with the file path.
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-03-23 11:41:13 +01:00
Sebastian Martinez
00ea587c6d
httpd: Add `CorsLayer` to `/raw` endpoint
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-03-23 11:07:58 +01:00
Sebastian Martinez
f2d31aa9c0
httpd: Add patch update endpoint
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-03-22 13:53:19 +01:00
Sebastian Martinez
fc724a2333
httpd: Add commit diff endpoint
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-03-21 18:50:26 +01:00
Sebastian Martinez
73221e43d7
httpd: Add more revision properties to patch
...
For display purposes in the web client, we add with this commit the
some needed properties to the revisions in the patch endpoint.
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-03-20 18:43:06 +01:00
Rūdolfs Ošiņš
d40f40b9af
httpd: Use camelCase in query params
...
It's more ergonomic to consume in JS/TS.
Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-03-17 17:11:00 +01:00
Sebastian Martinez
2c0cdcd1c5
httpd: Add timestamp to revisions json
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-03-17 13:54:48 +01:00
Rūdolfs Ošiņš
fdd6bca311
httpd: Fix status code in commit history endpoint
...
Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2023-03-15 10:17:41 +01:00
xphoniex
29b933e485
httpd: Use `RID` in tests
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-03-13 16:25:26 +01:00
xphoniex
3ee76c2891
httpd: Separate `Error` types of git route and `/raw`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-03-13 16:25:26 +01:00
xphoniex
b80fc5437c
httpd: Move `404` test from `git` to root router
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-03-13 16:25:26 +01:00
Alexis Sellier
7266729924
Make Patch `state` field similar to Issue
...
Since they are similar objects, they should have similar structure.
This also makes it easier to add state metadata like for issues.
2023-03-13 13:55:12 +01:00
xphoniex
9f1896e07f
httpd: Add root handlers for `/api/v1` and `/api`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-03-12 19:12:40 +01:00
Alexis Sellier
6e90444406
httpd: Basic alias support for git
...
Allows cloning via git using an alias instead of the full RID.
Eg. `git clone https://seed.radicle.xyz/heartwood.git `
2023-03-12 18:31:19 +01:00
Alexis Sellier
aacacf872f
cob: Use `EntryId` as the operation identifier
...
By introducing a small limitation: only allowing entries in the change
graph to be addressable, instead of individual operations; we
drastically simplify the CRDT implementation.
There are four advantages:
1. Op ids are just regular SHA-1s
2. There's no need for relative IDs, ops never refer to other ops within the
same commit
3. There's no need for a nonce, since commits can't collide, and neither can op IDs
4. `OpId` can just be an alias of `EntryId`
The disadvantage of course, is that we have to be mindful of how we
create op transactions, since each transaction creates an addressable
unit. For example, we must not include multiple patch revisions in the
same transaction.
2023-03-09 17:08:56 +01:00
xphoniex
c7a955e9fe
httpd: Run tests off another remote for `test::seed`
...
Keep `test::contributor(..)` to test interactions with a contributor node.
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-03-08 15:27:13 +01:00
xphoniex
900796956c
httpd: Remove `radicle_cli` from tests
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-03-07 15:08:11 +01:00
xphoniex
267b0ed312
httpd: Use `radicle-term` instead of `radicle-cli::terminal`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-03-07 14:49:18 +01:00
xphoniex
488468991c
httpd: Set a max allowed size of 4 MiB when serving files raw
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-03-07 09:37:02 +01:00
Alexis Sellier
9000a626d7
Use commit oid for COB parent
...
We were using the blob oid, which was causing the commit tree to
be invalid.
2023-03-06 15:39:34 +01:00
Alexis Sellier
be5c9c9258
cli: Add `--verbose` flag to `init`
2023-03-06 15:38:42 +01:00
Alexis Sellier
e69be6051d
cli: Give more control over `init` announcement
...
Instead of always announcing the inventory, by default we don't.
Users can run `rad push` to trigger an announcement.
2023-03-06 15:38:42 +01:00
Alexis Sellier
8c22012d61
Remove need to pass public key in cob store
2023-03-06 10:56:20 +01:00
Sebastian Martinez
05d2487a47
httpd: Add patch creation endpoint
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-03-06 10:26:38 +01:00
xphoniex
077c040c08
httpd: Change format of tracing messages
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-03-03 16:13:10 +01:00
Alexis Sellier
5f59493c70
cob: Don't require a local fork to exist
...
Before this change, the identity document would be loaded for the
COB signer. This meant that a fork would be needed for that signer.
After this change, it's no longer necessary, since the identity doc
head is computed from available remotes.
While making those changes, it was also apparent that some of the
identity-related functions had bad names and error types, this
was fixed as well.
2023-03-01 15:40:30 +01:00
Sebastian Martinez
796ae2f96a
httpd: Sort issues and patches by creation date
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-03-01 13:02:09 +01:00
Alexis Sellier
1bb6f9a921
httpd: Don't load project payload twice
2023-02-28 18:37:26 +01:00
xphoniex
de24a04621
httpd: Use `repo.identity_doc()` instead of `repo.identity_of(..)`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-02-28 18:08:26 +01:00
Alexis Sellier
06a92d52d9
cob: Use hashes for operation ids
...
It's fairly easy for a user to (by mistake or intentionally) create two
operations with the same OpId. This patch makes it much less likely,
and ensures that if the OpId is equal, it's because the operations
are identical.
2023-02-27 17:11:48 +01:00
Sebastian Martinez
97a2f8c1df
httpd: Add issue and patch counts
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-27 12:57:20 +01:00
xphoniex
34b15f9f16
httpd: Add `/raw` route
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-02-23 06:16:37 +00:00
xphoniex
2606372a14
httpd: Use `State` instead of `Extension` for `root_handler`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-02-23 05:54:31 +00:00
xphoniex
6ca1c89610
httpd: Update `/git` test to use `test` helper fns
...
Update `axum` to 0.6.7 to be able to use fix in:
https://github.com/tokio-rs/axum/pull/1767
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-02-22 17:06:32 +01:00
xphoniex
f290f6b4a5
httpd: Move `test` utility mod from inside `api` to root
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-02-22 17:06:32 +01:00
xphoniex
c1b6ceb141
httpd: Change `500` into `404` when project doesn't exist
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-02-22 17:06:32 +01:00
xphoniex
be5afcc600
httpd: Move `git` router & handler into its own file
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-02-22 17:06:32 +01:00
Fintan Halpenny
ef0628c48e
Exchange From for TryFrom for PathBuf and Home
...
The `From` implementation would allow someone to create a `Home` in an
incorrect fashion, for example the path is not canonical.
Exchange `From` for a `TryFrom` implementation.
Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
2023-02-17 10:37:39 +01:00
Sebastian Martinez
b04451a1bd
Use `Did` in a bunch more places
...
Instead of showing just public keys we need to show the fully qualified
spec for a NID which is prefixed by `did🔑 ` While we want to maintain
`Author` and `ActorId` for internal use.
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-16 18:01:42 +01:00
xphoniex
a1e1e04fd9
httpd: Return correct count for `patches`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-02-16 16:51:02 +01:00
Alexis Sellier
950fae209d
Make `ReadStorage` more usable
...
Previously, we were not able to access a `ReadRepository` instance
through `ReadStorage`. With this change, we are able to.
2023-02-15 22:08:20 +01:00
Sebastian Martinez
867eea5c38
httpd: Add delegates to project routes
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-14 14:50:42 +01:00
Sebastian Martinez
881e9af219
httpd: Add `assignees` to `Issues::create`
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-13 13:47:15 +01:00
Alexis Sellier
27d0c8f235
cli: Track projects we initialize
2023-02-12 16:48:46 +01:00
xphoniex
bdc0ab9881
Update `radicle-git` and `radicle-surf`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-02-10 22:14:50 +01:00
Sebastian Martinez
a57b33c785
httpd: Add `api::test::patch` request method
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-10 12:17:03 +01:00
Sebastian Martinez
0087a4b50c
radicle-httpd: Add DELETE to allowed methods
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-09 16:48:48 +01:00
Alexis Sellier
f01735bef6
cli: Have `init` trigger routing table updates
...
Before this change, nodes had to be restarted to announce newly
initialized projects.
2023-02-08 16:29:42 +01:00
Sebastian Martinez
1128842457
httpd: Add DELETE route to remove sessions
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-07 20:59:06 +01:00
Sebastian Martinez
af3ea6a11a
httpd: Add issue endpoints
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-06 14:14:06 +01:00
Sebastian Martinez
b4ddb31cf3
Extract `json!` into `api::json`
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-04 19:42:14 +01:00
Sebastian Martinez
d9f878bc45
httpd: Remove session serialization, improve tests
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-04 19:39:25 +01:00
Sebastian Martinez
58eeb3ab91
httpd: Refactor auth and session handling
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-04 19:38:26 +01:00
Sebastian Martinez
3d0a68eeb5
httpd: Remove session serialize and rework
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-04 19:37:35 +01:00
Sebastian Martinez
34064ef8b5
Add `GET /api/v1/sessions/:id` route to get session information
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-02-04 19:35:58 +01:00
Fintan Halpenny
3f48c2c516
Rust 1.67
...
Rust 1.67 was announced[0]. Update the necessary files for running
1.67 and fix the clippy suggestions for string interpolation.
[0]: https://blog.rust-lang.org/2023/01/26/Rust-1.67.0.html
Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
2023-02-04 19:30:29 +01:00
xphoniex
c1ba45fcd8
httpd: Extract `issue` json response
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-02-04 13:46:26 +00:00
xphoniex
4552c1f296
httpd: Add routes for patch ops
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-02-04 13:22:09 +00:00
Alexis Sellier
f1a6a86689
node: Check refs when getting local inventory
...
If we don't do this, we're going to be returning broken repos.
2023-01-30 11:38:00 +01:00
xphoniex
a5811e43a7
Update `radicle-surf`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-01-28 20:19:23 +01:00
Sebastian Martinez
f07a875ce1
Add web-based authentication
...
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-01-27 17:23:05 +01:00
Alexis Sellier
0a9bb23e4e
Replace `RAD_DEBUG` with `RAD_SEED`
...
The latter is strictly more powerful.
2023-01-25 17:09:16 +01:00
xphoniex
a3f4c2ec67
httpd: Remove `lastCommit` in `/tree` for entries
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-01-25 15:35:24 +01:00
xphoniex
59ff46e49c
httpd: Clean up `json.rs`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-01-25 15:35:24 +01:00
xphoniex
ccbcdd4998
httpd: Change `sha1` into `id`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-01-25 15:35:24 +01:00
xphoniex
57fbc1ed46
httpd: Use `commits`/`commit` instead of `headers`/`header`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-01-25 15:35:24 +01:00
xphoniex
f065bce876
httpd: change `committerTime` into `committer.time`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-01-25 15:35:24 +01:00
xphoniex
7ec903d712
httpd: Update axum from 0.5.x to 0.6.x
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-01-18 14:09:48 +00:00
Han Xu
4ea67250ea
httpd: Dogfood the new radicle-surf API
...
Signed-off-by: Han Xu <keepsimple@gmail.com>
2023-01-18 14:22:01 +01:00
Alexis Sellier
be9def8b11
Rename `profile::Paths` to `profile::Home`
...
This makes the intent clearer.
Signed-off-by: Alexis Sellier <self@cloudhead.io>
2023-01-17 11:01:36 +01:00
Alexis Sellier
d31968509d
Speed up node E2E tests
...
By allowing the node to run using a `MockSigner`, we speed up tests
significantly, since PBKDF2 doesn't need to run.
Signed-off-by: Alexis Sellier <self@cloudhead.io>
2023-01-17 11:01:36 +01:00
xphoniex
7962ac0a8e
httpd: Add api tests
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2023-01-12 20:30:53 +01:00
Alexis Sellier
911c194fb3
cob: Create proper `OpId` type
...
To still access a comment's author, we add a new `author` field.
2022-12-31 09:58:51 +01:00
xphoniex
bd1b4ac5c1
httpd: Use `TraceLayer` on uppermost router
...
This allows prefix of each route e.g. `/api/*` to be visible in logs.
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-12-26 15:56:21 +01:00
xphoniex
1f55d7a327
Update `radicle-git` to `79a94721366490053e2d8ac1c1afa14fb0c25f09`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-12-23 13:22:55 +01:00
Alexis Sellier
e47d7ca2aa
cob: Implement comment edit action
...
This implementation intentionally preserves all edits such that
they may be displayed in an application as an edit history.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-12-16 12:32:20 +01:00
Adam Szkoda
ac3ee5f709
Build container images for deployment
...
Signed-off-by: Adam Szkoda <adaszko@gmail.com>
2022-12-14 17:15:40 +01:00
Adam Szkoda
9186d1f30f
Do not install OpenSSL as it's statically linked
2022-12-14 17:15:40 +01:00
Adam Szkoda
294ae8fd24
Put fully static binaries into containers
2022-12-14 17:15:40 +01:00
Adam Szkoda
4abb24feca
Dockerize services
...
Signed-off-by: Adam Szkoda <adaszko@gmail.com>
2022-12-14 17:15:40 +01:00
Alexis Sellier
98c1566109
Make `Doc` type payload generic
2022-12-09 22:05:38 +01:00
xphoniex
46951b1b42
httpd: Use `HashSet` instead of `BTreeSet`
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-12-09 10:49:28 +01:00
xphoniex
fb8020e582
httpd: Conform response from issue handlers to previous model
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-12-09 10:49:09 +01:00
Alexis Sellier
5d2be57cd9
Rename patch/issue "status"
...
This reverts to the previous naming, since after serialization
we would otherwise end up with `{ status: { status: closed } }`.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-12-09 10:44:59 +01:00
Alexis Sellier
207d2133f9
Remove delegate names from identity doc
...
We are working on other mechanisms to help identify keys, and this
is just redundant.
Also update some of the CLI examples to create a canonical example
for documentation.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-12-07 12:16:00 +01:00
Alexis Sellier
09a8b46f34
cob: Move clock out of `Issue`
...
The clock shouldn't be part of the issue state, but rather
the local "actor" state.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-12-01 12:05:44 +01:00
xphoniex
1b00e8a413
httpd: implement `IntoResponse` for api error variants
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-11-30 13:06:03 +00:00
xphoniex
b96f357c2e
Migrate `/v1/stats` route
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-11-30 13:06:03 +00:00
xphoniex
e5e8a403fc
Migrate `/projects`: `issues`, `issue` handlers
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-11-30 13:06:03 +00:00
xphoniex
b4902d3408
Migrate `/projects`: `remotes`, `remote`, `blob`, `readme` handlers
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-11-30 13:06:03 +00:00
xphoniex
84c3cf4cf1
Migrate `/projects`: `history` and `tree` handlers
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-11-30 13:06:03 +00:00
xphoniex
dea7082a6f
Migrate `/projects`: `root`, `project`, `commit`, `activity` handlers
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-11-30 13:06:03 +00:00
xphoniex
77e0a176bd
Migrate `/v1/delegates` route
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-11-30 13:06:03 +00:00
xphoniex
6f8511c360
Migrate `/v1/sessions` route
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-11-30 13:06:03 +00:00
xphoniex
acd7aeb9c9
Migrate `/v1/`, `/v1/node` routes to heartwood
...
Signed-off-by: xphoniex <dj.2dixx@gmail.com>
2022-11-30 13:06:03 +00:00
Alexis Sellier
617e0c1877
Remove redundant `Options` type
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-19 11:47:29 +02:00
Alexis Sellier
2f6cf9c7a5
httpd: implement `git` fetch-only server
...
Introduces a new `radicle-httpd` crate which will serve as the basis
for heartwood's HTTP backend.
The first part of this is a git server which allows projects to be
fetched from storage using plain `git`.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-19 11:36:16 +02:00