public async Task <VirusTotalAnalysisResult> Get(string apikey, string address)
        {
            this.ValidateAddressInput(address);

            if (string.IsNullOrWhiteSpace(apikey))
            {
                throw new HttpResponseException(HttpStatusCode.Unauthorized);
            }

            AddressType addressType = AddressValidator.GetAddressType(address);
            IDataClient client;
            Dictionary <string, string> parameters = new Dictionary <string, string>
            {
                { "apikey", apikey }
            };

            switch (addressType)
            {
            case AddressType.Domain:
                client = new VirusTotalClient <VirusTotalDomainReportDataProvider>();
                parameters.Add("domain", address);
                break;

            case AddressType.IPAddress:
                client = new VirusTotalClient <VirusTotalIpAdressReportDataProvider>();
                parameters.Add("ip", address);
                break;

            default:
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            string data = await client.GetDataAsync(parameters);

            bool isSuccessful = !string.IsNullOrWhiteSpace(data);

            return(new VirusTotalAnalysisResult
            {
                IsSuccessful = isSuccessful,
                ResultText = data
            });
        }
Exemplo n.º 2
0
        public async Task VirusTotalClientReturnsEmptyStringWhenNotPresentedWithValidApiKey()
        {
            VirusTotalClient <VirusTotalDomainReportDataProvider>   domainClient = new VirusTotalClient <VirusTotalDomainReportDataProvider>();
            VirusTotalClient <VirusTotalIpAdressReportDataProvider> ipClient     = new VirusTotalClient <VirusTotalIpAdressReportDataProvider>();
            Dictionary <string, string> parameters = new Dictionary <string, string>
            {
                { "apikey", string.Empty }
            };

            parameters.Add("domain", "google.com");

            string domainReport = await domainClient.GetDataAsync(parameters);

            Assert.True(domainReport.Contains(Constants.ERROR_PREFIX));

            parameters.Remove("domain");
            parameters.Add("ip", "8.8.8.8");

            string ipReport = await ipClient.GetDataAsync(parameters);

            Assert.True(ipReport.Contains(Constants.ERROR_PREFIX));
        }