Skip to content

Commit 0a2ad00

Browse files
authored
fix(forge): base url for verification providers other than etherscan (#10045)
fix(forge): base url for custom verification providers type
1 parent c627603 commit 0a2ad00

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

crates/verify/src/bytecode.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ impl VerifyBytecodeArgs {
138138
// Etherscan client
139139
let etherscan = EtherscanVerificationProvider.client(
140140
self.etherscan.chain.unwrap_or_default(),
141+
&self.verifier.verifier,
141142
self.verifier.verifier_url.as_deref(),
142143
self.etherscan.key().as_deref(),
143144
&config,

crates/verify/src/etherscan/mod.rs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::{
2-
provider::{VerificationContext, VerificationProvider},
2+
provider::{VerificationContext, VerificationProvider, VerificationProviderType},
33
retry::RETRY_CHECK_ON_VERIFY,
44
verify::{VerifyArgs, VerifyCheckArgs},
55
};
@@ -152,6 +152,7 @@ impl VerificationProvider for EtherscanVerificationProvider {
152152
let config = args.load_config()?;
153153
let etherscan = self.client(
154154
args.etherscan.chain.unwrap_or_default(),
155+
&args.verifier.verifier,
155156
args.verifier.verifier_url.as_deref(),
156157
args.etherscan.key().as_deref(),
157158
&config,
@@ -220,6 +221,7 @@ impl EtherscanVerificationProvider {
220221
let config = args.load_config()?;
221222
let etherscan = self.client(
222223
args.etherscan.chain.unwrap_or_default(),
224+
&args.verifier.verifier,
223225
args.verifier.verifier_url.as_deref(),
224226
args.etherscan.key().as_deref(),
225227
&config,
@@ -251,6 +253,7 @@ impl EtherscanVerificationProvider {
251253
pub(crate) fn client(
252254
&self,
253255
chain: Chain,
256+
verifier_type: &VerificationProviderType,
254257
verifier_url: Option<&str>,
255258
etherscan_key: Option<&str>,
256259
config: &Config,
@@ -275,10 +278,13 @@ impl EtherscanVerificationProvider {
275278
builder = if let Some(api_url) = api_url {
276279
// we don't want any trailing slashes because this can cause cloudflare issues: <https://github.com/foundry-rs/foundry/pull/6079>
277280
let api_url = api_url.trim_end_matches('/');
278-
builder
279-
.with_chain_id(chain)
280-
.with_api_url(api_url)?
281-
.with_url(base_url.unwrap_or(api_url))?
281+
let base_url = if *verifier_type != VerificationProviderType::Etherscan {
282+
// If verifier is not Etherscan then set base url as api url without trialing /api.
283+
api_url.strip_prefix("/api").unwrap_or(api_url)
284+
} else {
285+
base_url.unwrap_or(api_url)
286+
};
287+
builder.with_chain_id(chain).with_api_url(api_url)?.with_url(base_url)?
282288
} else {
283289
builder.chain(chain)?
284290
};
@@ -384,6 +390,7 @@ impl EtherscanVerificationProvider {
384390
let provider = get_provider(&context.config)?;
385391
let client = self.client(
386392
args.etherscan.chain.unwrap_or_default(),
393+
&args.verifier.verifier,
387394
args.verifier.verifier_url.as_deref(),
388395
args.etherscan.key.as_deref(),
389396
&context.config,
@@ -490,6 +497,7 @@ mod tests {
490497
let client = etherscan
491498
.client(
492499
args.etherscan.chain.unwrap_or_default(),
500+
&args.verifier.verifier,
493501
args.verifier.verifier_url.as_deref(),
494502
args.etherscan.key().as_deref(),
495503
&config,
@@ -517,6 +525,7 @@ mod tests {
517525
let client = etherscan
518526
.client(
519527
args.etherscan.chain.unwrap_or_default(),
528+
&args.verifier.verifier,
520529
args.verifier.verifier_url.as_deref(),
521530
args.etherscan.key().as_deref(),
522531
&config,

0 commit comments

Comments
 (0)