mirror of
https://github.com/status-im/nft-faucet.git
synced 2025-02-23 03:58:23 +00:00
Speed up file uploading
This commit is contained in:
parent
f6dce1d63d
commit
0e106048c8
@ -3,12 +3,12 @@ using RestEase;
|
||||
|
||||
namespace NftFaucet.ApiClients;
|
||||
|
||||
[BaseAddress("https://gw.crustapps.net")]
|
||||
[BaseAddress("https://pin.crustcode.com")]
|
||||
public interface ICrustApiClient
|
||||
{
|
||||
[Header("Authorization")]
|
||||
public string Auth { get; set; }
|
||||
|
||||
[Post("api/v0/add")]
|
||||
Task<UploadResponse> UploadFile([Body] MultipartContent content, [Query("pin")] bool pin = true);
|
||||
[Post("psa/pins")]
|
||||
Task PinFile([Body] PinRequest request);
|
||||
}
|
||||
|
11
NftFaucet/ApiClients/IInfuraIpfsApiClient.cs
Normal file
11
NftFaucet/ApiClients/IInfuraIpfsApiClient.cs
Normal file
@ -0,0 +1,11 @@
|
||||
using NftFaucet.ApiClients.Models;
|
||||
using RestEase;
|
||||
|
||||
namespace NftFaucet.ApiClients;
|
||||
|
||||
[BaseAddress("https://ipfs.infura.io:5001")]
|
||||
public interface IInfuraIpfsApiClient
|
||||
{
|
||||
[Post("api/v0/add")]
|
||||
Task<UploadResponse> UploadFile([Body] MultipartContent content, [Query("stream-channels")] bool streamChannels = true);
|
||||
}
|
7
NftFaucet/ApiClients/Models/PinRequest.cs
Normal file
7
NftFaucet/ApiClients/Models/PinRequest.cs
Normal file
@ -0,0 +1,7 @@
|
||||
namespace NftFaucet.ApiClients.Models;
|
||||
|
||||
public class PinRequest
|
||||
{
|
||||
public string cid { get; set; }
|
||||
public string name { get; set; }
|
||||
}
|
@ -6,7 +6,7 @@ public class StateStorage
|
||||
{
|
||||
public string TokenName { get; set; }
|
||||
public string TokenDescription { get; set; }
|
||||
public IpfsGatewayType IpfsGatewayType { get; set; } = IpfsGatewayType.Crust;
|
||||
public IpfsGatewayType IpfsGatewayType { get; set; } = IpfsGatewayType.Infura;
|
||||
public TokenType TokenType { get; set; } = TokenType.ERC721;
|
||||
public double TokenAmount { get; set; } = 1;
|
||||
public Uri LocalImageUrl { get; set; }
|
||||
|
@ -71,7 +71,7 @@
|
||||
</SpaceItem>
|
||||
<SpaceItem>
|
||||
<Select DataSource="@IpfsGateways"
|
||||
DefaultValue="@(nameof(IpfsGatewayType.Crust))"
|
||||
DefaultValue="@(nameof(IpfsGatewayType.Infura))"
|
||||
ValueName="@nameof(EnumWrapper<IpfsGatewayType>.ValueString)"
|
||||
LabelName="@nameof(EnumWrapper<IpfsGatewayType>.Description)"
|
||||
OnSelectedItemChanged="OnIpfsGatewayChange">
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System.Text;
|
||||
using NftFaucet.ApiClients;
|
||||
using NftFaucet.ApiClients.Models;
|
||||
using NftFaucet.Models;
|
||||
using NftFaucet.Models.Enums;
|
||||
using NftFaucet.Options;
|
||||
@ -48,9 +49,18 @@ public class IpfsService : IIpfsService
|
||||
public async Task<Uri> Upload(string fileName, string fileType, byte[] fileBytes)
|
||||
{
|
||||
var fileUploadRequest = ToMultipartContent(fileName, fileType, fileBytes);
|
||||
var client = RestClient.For<ICrustApiClient>();
|
||||
client.Auth = GenerateAuthHeader();
|
||||
var response = await client.UploadFile(fileUploadRequest);
|
||||
var uploadClient = RestClient.For<IInfuraIpfsApiClient>();
|
||||
var response = await uploadClient.UploadFile(fileUploadRequest);
|
||||
|
||||
var pinningClient = RestClient.For<ICrustApiClient>();
|
||||
pinningClient.Auth = GenerateAuthHeader();
|
||||
var pinRequest = new PinRequest
|
||||
{
|
||||
cid = response.Hash,
|
||||
name = fileName,
|
||||
};
|
||||
await pinningClient.PinFile(pinRequest);
|
||||
|
||||
var uri = IpfsUrlPrefix + response.Hash;
|
||||
return new Uri(uri);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user