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