Skip to content

Commit 576c8ee

Browse files
YermekGImmutableJeffrey
authored andcommitted
chore: updated zkevm api (#148)
1 parent e8971cc commit 576c8ee

20 files changed

+674
-26
lines changed

Source/Experimental/ImmutablezkEVMAPI/Private/APIChainWithDetails.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@ void APIChainWithDetails::WriteJson(JsonWriter& Writer) const
2929
{
3030
Writer->WriteIdentifierPrefix(TEXT("rpc_url")); WriteJsonValue(Writer, RpcUrl.GetValue());
3131
}
32+
if (OperatorAllowlistAddress.IsSet())
33+
{
34+
Writer->WriteIdentifierPrefix(TEXT("operator_allowlist_address")); WriteJsonValue(Writer, OperatorAllowlistAddress.GetValue());
35+
}
36+
if (MinterAddress.IsSet())
37+
{
38+
Writer->WriteIdentifierPrefix(TEXT("minter_address")); WriteJsonValue(Writer, MinterAddress.GetValue());
39+
}
3240
Writer->WriteObjectEnd();
3341
}
3442

@@ -43,6 +51,8 @@ bool APIChainWithDetails::FromJson(const TSharedPtr<FJsonValue>& JsonValue)
4351
ParseSuccess &= TryGetJsonValue(*Object, TEXT("id"), Id);
4452
ParseSuccess &= TryGetJsonValue(*Object, TEXT("name"), Name);
4553
ParseSuccess &= TryGetJsonValue(*Object, TEXT("rpc_url"), RpcUrl);
54+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("operator_allowlist_address"), OperatorAllowlistAddress);
55+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("minter_address"), MinterAddress);
4656

4757
return ParseSuccess;
4858
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* Immutable zkEVM API
3+
* Immutable Multi Rollup API
4+
*
5+
* OpenAPI spec version: 1.0.0
6+
* Contact: [email protected]
7+
*
8+
* NOTE: This class is auto generated by OpenAPI Generator
9+
* https://github.com/OpenAPITools/openapi-generator
10+
* Do not edit the class manually.
11+
*/
12+
13+
#include "APIFilter.h"
14+
15+
#include "ImmutablezkEVMAPIModule.h"
16+
#include "APIHelpers.h"
17+
18+
#include "Templates/SharedPointer.h"
19+
20+
namespace ImmutablezkEVMAPI
21+
{
22+
23+
void APIFilter::WriteJson(JsonWriter& Writer) const
24+
{
25+
Writer->WriteObjectStart();
26+
Writer->WriteIdentifierPrefix(TEXT("name")); WriteJsonValue(Writer, Name);
27+
Writer->WriteIdentifierPrefix(TEXT("values")); WriteJsonValue(Writer, Values);
28+
Writer->WriteIdentifierPrefix(TEXT("omitted_values_count")); WriteJsonValue(Writer, OmittedValuesCount);
29+
Writer->WriteObjectEnd();
30+
}
31+
32+
bool APIFilter::FromJson(const TSharedPtr<FJsonValue>& JsonValue)
33+
{
34+
const TSharedPtr<FJsonObject>* Object;
35+
if (!JsonValue->TryGetObject(Object))
36+
return false;
37+
38+
bool ParseSuccess = true;
39+
40+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("name"), Name);
41+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("values"), Values);
42+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("omitted_values_count"), OmittedValuesCount);
43+
44+
return ParseSuccess;
45+
}
46+
47+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* Immutable zkEVM API
3+
* Immutable Multi Rollup API
4+
*
5+
* OpenAPI spec version: 1.0.0
6+
* Contact: [email protected]
7+
*
8+
* NOTE: This class is auto generated by OpenAPI Generator
9+
* https://github.com/OpenAPITools/openapi-generator
10+
* Do not edit the class manually.
11+
*/
12+
13+
#include "APIFilterResult.h"
14+
15+
#include "ImmutablezkEVMAPIModule.h"
16+
#include "APIHelpers.h"
17+
18+
#include "Templates/SharedPointer.h"
19+
20+
namespace ImmutablezkEVMAPI
21+
{
22+
23+
void APIFilterResult::WriteJson(JsonWriter& Writer) const
24+
{
25+
Writer->WriteObjectStart();
26+
Writer->WriteIdentifierPrefix(TEXT("chain")); WriteJsonValue(Writer, Chain);
27+
Writer->WriteIdentifierPrefix(TEXT("contract_address")); WriteJsonValue(Writer, ContractAddress);
28+
Writer->WriteIdentifierPrefix(TEXT("filters")); WriteJsonValue(Writer, Filters);
29+
Writer->WriteObjectEnd();
30+
}
31+
32+
bool APIFilterResult::FromJson(const TSharedPtr<FJsonValue>& JsonValue)
33+
{
34+
const TSharedPtr<FJsonObject>* Object;
35+
if (!JsonValue->TryGetObject(Object))
36+
return false;
37+
38+
bool ParseSuccess = true;
39+
40+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("chain"), Chain);
41+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("contract_address"), ContractAddress);
42+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("filters"), Filters);
43+
44+
return ParseSuccess;
45+
}
46+
47+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* Immutable zkEVM API
3+
* Immutable Multi Rollup API
4+
*
5+
* OpenAPI spec version: 1.0.0
6+
* Contact: [email protected]
7+
*
8+
* NOTE: This class is auto generated by OpenAPI Generator
9+
* https://github.com/OpenAPITools/openapi-generator
10+
* Do not edit the class manually.
11+
*/
12+
13+
#include "APIFilterValue.h"
14+
15+
#include "ImmutablezkEVMAPIModule.h"
16+
#include "APIHelpers.h"
17+
18+
#include "Templates/SharedPointer.h"
19+
20+
namespace ImmutablezkEVMAPI
21+
{
22+
23+
void APIFilterValue::WriteJson(JsonWriter& Writer) const
24+
{
25+
Writer->WriteObjectStart();
26+
Writer->WriteIdentifierPrefix(TEXT("value")); WriteJsonValue(Writer, Value);
27+
Writer->WriteIdentifierPrefix(TEXT("nft_count")); WriteJsonValue(Writer, NftCount);
28+
Writer->WriteObjectEnd();
29+
}
30+
31+
bool APIFilterValue::FromJson(const TSharedPtr<FJsonValue>& JsonValue)
32+
{
33+
const TSharedPtr<FJsonObject>* Object;
34+
if (!JsonValue->TryGetObject(Object))
35+
return false;
36+
37+
bool ParseSuccess = true;
38+
39+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("value"), Value);
40+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("nft_count"), NftCount);
41+
42+
return ParseSuccess;
43+
}
44+
45+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* Immutable zkEVM API
3+
* Immutable Multi Rollup API
4+
*
5+
* OpenAPI spec version: 1.0.0
6+
* Contact: [email protected]
7+
*
8+
* NOTE: This class is auto generated by OpenAPI Generator
9+
* https://github.com/OpenAPITools/openapi-generator
10+
* Do not edit the class manually.
11+
*/
12+
13+
#include "APIListFiltersResult.h"
14+
15+
#include "ImmutablezkEVMAPIModule.h"
16+
#include "APIHelpers.h"
17+
18+
#include "Templates/SharedPointer.h"
19+
20+
namespace ImmutablezkEVMAPI
21+
{
22+
23+
void APIListFiltersResult::WriteJson(JsonWriter& Writer) const
24+
{
25+
Writer->WriteObjectStart();
26+
Writer->WriteIdentifierPrefix(TEXT("result")); WriteJsonValue(Writer, Result);
27+
Writer->WriteIdentifierPrefix(TEXT("page")); WriteJsonValue(Writer, Page);
28+
Writer->WriteObjectEnd();
29+
}
30+
31+
bool APIListFiltersResult::FromJson(const TSharedPtr<FJsonValue>& JsonValue)
32+
{
33+
const TSharedPtr<FJsonObject>* Object;
34+
if (!JsonValue->TryGetObject(Object))
35+
return false;
36+
37+
bool ParseSuccess = true;
38+
39+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("result"), Result);
40+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("page"), Page);
41+
42+
return ParseSuccess;
43+
}
44+
45+
}

Source/Experimental/ImmutablezkEVMAPI/Private/APIListing.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ void APIListing::WriteJson(JsonWriter& Writer) const
2525
Writer->WriteObjectStart();
2626
Writer->WriteIdentifierPrefix(TEXT("listing_id")); WriteJsonValue(Writer, ListingId);
2727
Writer->WriteIdentifierPrefix(TEXT("price_details")); WriteJsonValue(Writer, PriceDetails);
28-
Writer->WriteIdentifierPrefix(TEXT("converted_prices")); WriteJsonValue(Writer, ConvertedPrices);
2928
Writer->WriteIdentifierPrefix(TEXT("token_id")); WriteJsonValue(Writer, TokenId);
3029
Writer->WriteIdentifierPrefix(TEXT("contract_address")); WriteJsonValue(Writer, ContractAddress);
3130
Writer->WriteIdentifierPrefix(TEXT("creator")); WriteJsonValue(Writer, Creator);
@@ -43,7 +42,6 @@ bool APIListing::FromJson(const TSharedPtr<FJsonValue>& JsonValue)
4342

4443
ParseSuccess &= TryGetJsonValue(*Object, TEXT("listing_id"), ListingId);
4544
ParseSuccess &= TryGetJsonValue(*Object, TEXT("price_details"), PriceDetails);
46-
ParseSuccess &= TryGetJsonValue(*Object, TEXT("converted_prices"), ConvertedPrices);
4745
ParseSuccess &= TryGetJsonValue(*Object, TEXT("token_id"), TokenId);
4846
ParseSuccess &= TryGetJsonValue(*Object, TEXT("contract_address"), ContractAddress);
4947
ParseSuccess &= TryGetJsonValue(*Object, TEXT("creator"), Creator);

Source/Experimental/ImmutablezkEVMAPI/Private/APIMarketPriceDetails.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ void APIMarketPriceDetails::WriteJson(JsonWriter& Writer) const
2727
Writer->WriteIdentifierPrefix(TEXT("amount")); WriteJsonValue(Writer, Amount);
2828
Writer->WriteIdentifierPrefix(TEXT("fee_inclusive_amount")); WriteJsonValue(Writer, FeeInclusiveAmount);
2929
Writer->WriteIdentifierPrefix(TEXT("fees")); WriteJsonValue(Writer, Fees);
30+
if (ConvertedPrices.IsSet())
31+
{
32+
Writer->WriteIdentifierPrefix(TEXT("converted_prices")); WriteJsonValue(Writer, ConvertedPrices.GetValue());
33+
}
3034
Writer->WriteObjectEnd();
3135
}
3236

@@ -42,6 +46,7 @@ bool APIMarketPriceDetails::FromJson(const TSharedPtr<FJsonValue>& JsonValue)
4246
ParseSuccess &= TryGetJsonValue(*Object, TEXT("amount"), Amount);
4347
ParseSuccess &= TryGetJsonValue(*Object, TEXT("fee_inclusive_amount"), FeeInclusiveAmount);
4448
ParseSuccess &= TryGetJsonValue(*Object, TEXT("fees"), Fees);
49+
ParseSuccess &= TryGetJsonValue(*Object, TEXT("converted_prices"), ConvertedPrices);
4550

4651
return ParseSuccess;
4752
}

Source/Experimental/ImmutablezkEVMAPI/Private/APIStacksApi.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,33 @@ void APIStacksApi::HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceeded
133133
InOutResponse.SetHttpResponseCode(EHttpResponseCodes::RequestTimeout);
134134
}
135135

136+
FHttpRequestPtr APIStacksApi::ListFilters(const ListFiltersRequest& Request, const FListFiltersDelegate& Delegate /*= FListFiltersDelegate()*/) const
137+
{
138+
if (!IsValid())
139+
return nullptr;
140+
141+
FHttpRequestRef HttpRequest = CreateHttpRequest(Request);
142+
HttpRequest->SetURL(*(Url + Request.ComputePath()));
143+
144+
for(const auto& It : AdditionalHeaderParams)
145+
{
146+
HttpRequest->SetHeader(It.Key, It.Value);
147+
}
148+
149+
Request.SetupHttpRequest(HttpRequest);
150+
151+
HttpRequest->OnProcessRequestComplete().BindRaw(this, &APIStacksApi::OnListFiltersResponse, Delegate);
152+
HttpRequest->ProcessRequest();
153+
return HttpRequest;
154+
}
155+
156+
void APIStacksApi::OnListFiltersResponse(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FListFiltersDelegate Delegate) const
157+
{
158+
ListFiltersResponse Response;
159+
HandleResponse(HttpResponse, bSucceeded, Response);
160+
Delegate.ExecuteIfBound(Response);
161+
}
162+
136163
FHttpRequestPtr APIStacksApi::ListStacks(const ListStacksRequest& Request, const FListStacksDelegate& Delegate /*= FListStacksDelegate()*/) const
137164
{
138165
if (!IsValid())

Source/Experimental/ImmutablezkEVMAPI/Private/APIStacksApiOperations.cpp

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,60 @@
2323
namespace ImmutablezkEVMAPI
2424
{
2525

26+
FString APIStacksApi::ListFiltersRequest::ComputePath() const
27+
{
28+
TMap<FString, FStringFormatArg> PathParams = {
29+
{ TEXT("chain_name"), FStringFormatArg(ToUrlString(ChainName)) },
30+
{ TEXT("contract_address"), FStringFormatArg(ToUrlString(ContractAddress)) } };
31+
32+
FString Path = FString::Format(TEXT("/experimental/chains/{chain_name}/search/filters/{contract_address}"), PathParams);
33+
34+
return Path;
35+
}
36+
37+
void APIStacksApi::ListFiltersRequest::SetupHttpRequest(const FHttpRequestRef& HttpRequest) const
38+
{
39+
static const TArray<FString> Consumes = { };
40+
//static const TArray<FString> Produces = { TEXT("application/json") };
41+
42+
HttpRequest->SetVerb(TEXT("GET"));
43+
44+
}
45+
46+
void APIStacksApi::ListFiltersResponse::SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode)
47+
{
48+
Response::SetHttpResponseCode(InHttpResponseCode);
49+
switch ((int)InHttpResponseCode)
50+
{
51+
case 200:
52+
SetResponseString(TEXT("200 response"));
53+
break;
54+
case 400:
55+
SetResponseString(TEXT("Bad Request (400)"));
56+
break;
57+
case 401:
58+
SetResponseString(TEXT("Unauthorised Request (401)"));
59+
break;
60+
case 403:
61+
SetResponseString(TEXT("Forbidden Request (403)"));
62+
break;
63+
case 404:
64+
SetResponseString(TEXT("The specified resource was not found (404)"));
65+
break;
66+
case 429:
67+
SetResponseString(TEXT("Too Many Requests (429)"));
68+
break;
69+
case 500:
70+
SetResponseString(TEXT("Internal Server Error (500)"));
71+
break;
72+
}
73+
}
74+
75+
bool APIStacksApi::ListFiltersResponse::FromJson(const TSharedPtr<FJsonValue>& JsonValue)
76+
{
77+
return TryGetJsonValue(JsonValue, Content);
78+
}
79+
2680
FString APIStacksApi::ListStacksRequest::ComputePath() const
2781
{
2882
TMap<FString, FStringFormatArg> PathParams = {
@@ -230,9 +284,9 @@ FString APIStacksApi::SearchStacksRequest::ComputePath() const
230284
{
231285
QueryParams.Add(FString(TEXT("only_if_has_active_listings=")) + ToUrlString(OnlyIfHasActiveListings.GetValue()));
232286
}
233-
if(Trait.IsSet())
287+
if(Traits.IsSet())
234288
{
235-
QueryParams.Add(FString(TEXT("trait=")) + ToUrlString(Trait.GetValue()));
289+
QueryParams.Add(FString(TEXT("traits=")) + ToUrlString(Traits.GetValue()));
236290
}
237291
if(Keyword.IsSet())
238292
{

Source/Experimental/ImmutablezkEVMAPI/Public/APIChainWithDetails.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ class IMMUTABLEZKEVMAPI_API APIChainWithDetails : public Model
3535
FString Name;
3636
/* URL for RPC node */
3737
TOptional<FString> RpcUrl;
38+
/* The address of the Operator Allowlist - https://docs.immutable.com/products/zkevm/minting/royalties/allowlist-spec/ */
39+
TOptional<FString> OperatorAllowlistAddress;
40+
/* The address of the minter used in the Minting API - https://docs.immutable.com/products/zkEVM/minting/minting-api#minting-api-prerequisites */
41+
TOptional<FString> MinterAddress;
3842
};
3943

4044
}

0 commit comments

Comments
 (0)