ScuffleTV / scuffle

Live streaming platform
https://scuffle.tv
224 stars 25 forks source link

feat(platform): add file upload endpoint #172

Closed TroyKomodo closed 6 months ago

TroyKomodo commented 6 months ago

Proposed changes

Adds a generic file upload rest endpoint.

The idea is, you will query GQL and the GQL API will return a token you can use to upload a file to. (Something like a singed URL, except its just a token you put into the Authentication Header). We then query (delete) the token in the database to validate that the token has not already been used (deleted). Once we have everything we need, the database will tell us how we need to handle the uploaded file. Right now all we will support is image uploads for Profile pictures, or banners or whatever. But in future we may allow any file upload and it will all use the same endpoint which makes things nice and simple.

Types of changes

What types of changes does your code introduce to Scuffle? Put an x in the boxes that apply

Checklist

Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

Further comments

.-.

codecov[bot] commented 6 months ago

Codecov Report

Attention: 588 lines in your changes are missing coverage. Please review.

Comparison is base (1e25f4b) 53.24% compared to head (58010f5) 52.38%.

:exclamation: Current head 58010f5 differs from pull request most recent head 138cecd. Consider uploading reports for the commit 138cecd to get more accurate results

Additional details and impacted files ```diff @@ Coverage Diff @@ ## feature/website #172 +/- ## =================================================== - Coverage 53.24% 52.38% -0.87% =================================================== Files 441 449 +8 Lines 26885 27327 +442 =================================================== Hits 14316 14316 - Misses 12569 13011 +442 ``` | [Files](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV) | Coverage Δ | | |---|---|---| | [platform/api/src/api/error.rs](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV#diff-cGxhdGZvcm0vYXBpL3NyYy9hcGkvZXJyb3IucnM=) | `0.00% <ø> (ø)` | | | [platform/api/src/api/v1/gql/models/ulid.rs](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV#diff-cGxhdGZvcm0vYXBpL3NyYy9hcGkvdjEvZ3FsL21vZGVscy91bGlkLnJz) | `0.00% <ø> (ø)` | | | [platform/api/src/database/user.rs](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV#diff-cGxhdGZvcm0vYXBpL3NyYy9kYXRhYmFzZS91c2VyLnJz) | `0.00% <ø> (ø)` | | | [platform/image\_processor/src/config.rs](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV#diff-cGxhdGZvcm0vaW1hZ2VfcHJvY2Vzc29yL3NyYy9jb25maWcucnM=) | `0.00% <ø> (ø)` | | | [platform/api/src/api/middleware/auth.rs](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV#diff-cGxhdGZvcm0vYXBpL3NyYy9hcGkvbWlkZGxld2FyZS9hdXRoLnJz) | `0.00% <0.00%> (ø)` | | | [platform/api/src/api/v1/gql/handlers.rs](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV#diff-cGxhdGZvcm0vYXBpL3NyYy9hcGkvdjEvZ3FsL2hhbmRsZXJzLnJz) | `0.00% <0.00%> (ø)` | | | [platform/api/src/api/v1/gql/mutations/chat.rs](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV#diff-cGxhdGZvcm0vYXBpL3NyYy9hcGkvdjEvZ3FsL211dGF0aW9ucy9jaGF0LnJz) | `0.00% <0.00%> (ø)` | | | [platform/api/src/api/v1/gql/subscription/chat.rs](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV#diff-cGxhdGZvcm0vYXBpL3NyYy9hcGkvdjEvZ3FsL3N1YnNjcmlwdGlvbi9jaGF0LnJz) | `0.00% <0.00%> (ø)` | | | [platform/api/src/api/v1/mod.rs](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV#diff-cGxhdGZvcm0vYXBpL3NyYy9hcGkvdjEvbW9kLnJz) | `0.00% <0.00%> (ø)` | | | [platform/api/src/database/file\_type.rs](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV#diff-cGxhdGZvcm0vYXBpL3NyYy9kYXRhYmFzZS9maWxlX3R5cGUucnM=) | `0.00% <0.00%> (ø)` | | | ... and [20 more](https://app.codecov.io/gh/ScuffleTV/scuffle/pull/172?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ScuffleTV) | |