pub fn get_payload(&self) -> Result<EtherscanGetPayload, anyhow::Error> {
        if self.module != Some("contract".to_string()) {
            return Err(anyhow::anyhow!("Error! Missing Or invalid Module name"));
        }

        if self.action.is_none() {
            return Err(anyhow::anyhow!("Error! Missing Or invalid Action name"));
        }
        let action = self.action.as_deref().unwrap();

        match action {
            "getabi" => Ok(EtherscanGetPayload::GetAbi(self.get_address()?)),
            "getsourcecode" => Ok(EtherscanGetPayload::GetSourceCode(self.get_address()?)),
            "checkverifystatus" => {
                let verification_id = self.guid.clone().unwrap_or_default().parse::<usize>();
                match verification_id {
                    Ok(id) => Ok(EtherscanGetPayload::CheckVerifyStatus(id)),
                    _ => Err(anyhow::anyhow!("Invalid GUID")),
                }
            }
            _ => Err(anyhow::anyhow!("Error! Missing Or invalid Action name")),
        }
    }
Converts the Etherscan GET parameters to a payload for the Etherscan API.
Error messages are the same as Etherscan API error messages.
core/lib/types/src/contract_verification/etherscan.rs