@@ -12,25 +12,19 @@ public class LinkFactory
12
12
/// <param name="environment">Specifies the environment (<c>Sandbox</c> or <c>Production</c>).</param>
13
13
/// <param name="email">The user's email address, pre-filled in the on-ramp flow.</param>
14
14
/// <param name="address">The user's wallet address, where tokens will be sent.</param>
15
- /// <param name="fiatCurrency">The fiat currency to use (default: "USD").</param>
16
- /// <param name="fiatAmount">The amount of fiat currency to spend when purchasing cryptocurrency (default: "50").</param>
17
- /// <param name="cryptoCurrency">The cryptocurrency to purchase (default: "IMX").</param>
18
- /// <param name="cryptoCurrencyList">A comma-separated list of available cryptocurrencies for purchase (default: "imx,eth,usdc").</param>
15
+ /// <param name="queryParams">The query parameters for the on-ramp flow. Uses default values if not specified.</param>
19
16
/// <returns>The generated on-ramp URL.</returns>
20
17
public static string GenerateOnRampLink (
21
18
Environment environment ,
22
19
string email ,
23
20
string address ,
24
- string fiatCurrency = "USD" ,
25
- string fiatAmount = "50" ,
26
- string cryptoCurrency = "IMX" ,
27
- string cryptoCurrencyList = "imx,eth,usdc"
21
+ OnRampQueryParams queryParams = default
28
22
)
29
23
{
30
24
var baseUrl = LinkConfig . GetBaseUrl ( environment , Flow . OnRamp ) ;
31
25
var apiKey = LinkConfig . GetApiKey ( environment , Flow . OnRamp ) ;
32
26
33
- var queryParams = new Dictionary < string , string >
27
+ var queryParamsDictionary = new Dictionary < string , string >
34
28
{
35
29
{ "apiKey" , apiKey } ,
36
30
{ "network" , "immutablezkevm" } ,
@@ -39,17 +33,17 @@ public static string GenerateOnRampLink(
39
33
{ "productsAvailed" , "buy" } ,
40
34
{ "exchangeScreenTitle" , "Buy" } ,
41
35
{ "themeColor" , "0D0D0D" } ,
42
- { "defaultCryptoCurrency" , cryptoCurrency } ,
36
+ { "defaultCryptoCurrency" , queryParams . CryptoCurrency } ,
43
37
{ "email" , Uri . EscapeDataString ( email ) } ,
44
38
{ "isAutoFillUserData" , "true" } ,
45
39
{ "disableWalletAddressForm" , "true" } ,
46
- { "defaultFiatAmount" , fiatAmount } ,
47
- { "defaultFiatCurrency" , fiatCurrency } ,
40
+ { "defaultFiatAmount" , queryParams . FiatAmount } ,
41
+ { "defaultFiatCurrency" , queryParams . FiatCurrency } ,
48
42
{ "walletAddress" , address } ,
49
- { "cryptoCurrencyList" , cryptoCurrencyList }
43
+ { "cryptoCurrencyList" , queryParams . CryptoCurrencyList }
50
44
} ;
51
45
52
- var queryString = string . Join ( "&" , queryParams . Select ( kvp => $ "{ kvp . Key } ={ Uri . EscapeDataString ( kvp . Value ) } ") . ToArray ( ) ) ;
46
+ var queryString = string . Join ( "&" , queryParamsDictionary . Select ( kvp => $ "{ kvp . Key } ={ Uri . EscapeDataString ( kvp . Value ) } ") . ToArray ( ) ) ;
53
47
return $ "{ baseUrl } ?{ queryString } ";
54
48
}
55
49
@@ -58,72 +52,64 @@ public static string GenerateOnRampLink(
58
52
/// </summary>
59
53
/// <param name="environment">Specifies the environment (<c>Sandbox</c> or <c>Production</c>).</param>
60
54
/// <param name="publishableKey">The publishable key obtained from <a href="https://hub.immutable.com/">Immutable Hub</a>. See <a href="https://docs.immutable.com/api/zkEVM/apikeys">API keys</a> for more details.</param>
61
- /// <param name="fromTokenAddress">The address of the token being swapped from (default is null).</param>
62
- /// <param name="toTokenAddress">The address of the token being swapped to (default is null).</param>
63
- /// <returns>A swap URL</returns>
55
+ /// <param name="queryParams">The query parameters for the swap flow. Uses default values if not specified.</param>
56
+ /// <returns>A swap URL.</returns>
64
57
public static string GenerateSwapLink (
65
58
Environment environment ,
66
59
string publishableKey ,
67
- string ? fromTokenAddress = null ,
68
- string ? toTokenAddress = null
60
+ SwapQueryParams queryParams = default
69
61
)
70
62
{
71
63
var baseUrl = LinkConfig . GetBaseUrl ( environment , Flow . Swap ) ;
72
64
73
- var queryParams = new Dictionary < string , string >
65
+ var queryParamsDictionary = new Dictionary < string , string >
74
66
{
75
67
{ "publishableKey" , publishableKey }
76
68
} ;
77
69
78
- if ( ! string . IsNullOrEmpty ( fromTokenAddress ) )
70
+ if ( ! string . IsNullOrEmpty ( queryParams . FromTokenAddress ) )
79
71
{
80
- queryParams [ "fromTokenAddress" ] = fromTokenAddress ;
72
+ queryParamsDictionary [ "fromTokenAddress" ] = queryParams . FromTokenAddress ;
81
73
}
82
74
83
- if ( ! string . IsNullOrEmpty ( toTokenAddress ) )
75
+ if ( ! string . IsNullOrEmpty ( queryParams . ToTokenAddress ) )
84
76
{
85
- queryParams [ "toTokenAddress" ] = toTokenAddress ;
77
+ queryParamsDictionary [ "toTokenAddress" ] = queryParams . ToTokenAddress ;
86
78
}
87
79
88
- var queryString = string . Join ( "&" , queryParams . Select ( kvp => $ "{ kvp . Key } ={ Uri . EscapeDataString ( kvp . Value ) } ") . ToArray ( ) ) ;
80
+ var queryString = string . Join ( "&" , queryParamsDictionary . Select ( kvp => $ "{ kvp . Key } ={ Uri . EscapeDataString ( kvp . Value ) } ") . ToArray ( ) ) ;
89
81
return $ "{ baseUrl } ?{ queryString } ";
90
82
}
91
83
92
84
/// <summary>
93
85
/// Generates a link for the bridge flow.
94
86
/// </summary>
95
87
/// <param name="environment">Specifies the environment (<c>Sandbox</c> or <c>Production</c>).</param>
96
- /// <param name="fromTokenAddress">The address of the token being moved from (default is null).</param>
97
- /// <param name="fromChainID">The ID of the source blockchain (default is null).</param>
98
- /// <param name="toTokenAddress">The address of the token being moved to (default is null).</param>
99
- /// <param name="toChainID">The ID of the destination blockchain (default is null).</param>
88
+ /// <param name="queryParams">The query parameters for the bridge flow. Uses default values if not specified.</param>
100
89
/// <returns>A bridge URL.</returns>
101
90
public static string GenerateBridgeLink (
102
91
Environment environment ,
103
- string ? fromTokenAddress = null ,
104
- string ? fromChainID = null ,
105
- string ? toTokenAddress = null ,
106
- string ? toChainID = null
92
+ BridgeQueryParams queryParams = default
107
93
)
108
94
{
109
95
var baseUrl = LinkConfig . GetBaseUrl ( environment , Flow . Bridge ) ;
110
96
111
- var queryParams = new Dictionary < string , string > ( ) ;
97
+ var queryParamsDictionary = new Dictionary < string , string > ( ) ;
112
98
113
- if ( ! string . IsNullOrEmpty ( fromTokenAddress ) )
114
- queryParams [ "fromToken" ] = fromTokenAddress . ToLower ( ) ;
99
+ if ( ! string . IsNullOrEmpty ( queryParams . FromTokenAddress ) )
100
+ queryParamsDictionary [ "fromToken" ] = queryParams . FromTokenAddress . ToLower ( ) ;
115
101
116
- if ( ! string . IsNullOrEmpty ( fromChainID ) )
117
- queryParams [ "fromChain" ] = fromChainID ;
102
+ if ( ! string . IsNullOrEmpty ( queryParams . FromChainID ) )
103
+ queryParamsDictionary [ "fromChain" ] = queryParams . FromChainID ;
118
104
119
- if ( ! string . IsNullOrEmpty ( toTokenAddress ) )
120
- queryParams [ "toToken" ] = toTokenAddress . ToLower ( ) ;
105
+ if ( ! string . IsNullOrEmpty ( queryParams . ToTokenAddress ) )
106
+ queryParamsDictionary [ "toToken" ] = queryParams . ToTokenAddress . ToLower ( ) ;
121
107
122
- if ( ! string . IsNullOrEmpty ( toChainID ) )
123
- queryParams [ "toChain" ] = toChainID ;
108
+ if ( ! string . IsNullOrEmpty ( queryParams . ToChainID ) )
109
+ queryParamsDictionary [ "toChain" ] = queryParams . ToChainID ;
124
110
125
- var queryString = string . Join ( "&" , queryParams . Select ( kvp => $ "{ kvp . Key } ={ Uri . EscapeDataString ( kvp . Value ) } ") . ToArray ( ) ) ;
111
+ var queryString = string . Join ( "&" , queryParamsDictionary . Select ( kvp => $ "{ kvp . Key } ={ Uri . EscapeDataString ( kvp . Value ) } ") . ToArray ( ) ) ;
126
112
return $ "{ baseUrl } ?{ queryString } ";
127
113
}
128
114
}
129
- }
115
+ }
0 commit comments