apifreaks 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rubocop.yml +103 -0
- data/CONTRIBUTING.md +120 -0
- data/README.md +178 -0
- data/Rakefile +20 -0
- data/custom.gemspec.rb +15 -0
- data/lib/apifreaks/client.rb +5341 -0
- data/lib/apifreaks/environment.rb +7 -0
- data/lib/apifreaks/errors/api_error.rb +8 -0
- data/lib/apifreaks/errors/client_error.rb +17 -0
- data/lib/apifreaks/errors/redirect_error.rb +8 -0
- data/lib/apifreaks/errors/response_error.rb +42 -0
- data/lib/apifreaks/errors/server_error.rb +11 -0
- data/lib/apifreaks/errors/timeout_error.rb +8 -0
- data/lib/apifreaks/internal/errors/constraint_error.rb +10 -0
- data/lib/apifreaks/internal/errors/type_error.rb +10 -0
- data/lib/apifreaks/internal/http/base_request.rb +51 -0
- data/lib/apifreaks/internal/http/raw_client.rb +215 -0
- data/lib/apifreaks/internal/iterators/cursor_item_iterator.rb +28 -0
- data/lib/apifreaks/internal/iterators/cursor_page_iterator.rb +63 -0
- data/lib/apifreaks/internal/iterators/item_iterator.rb +65 -0
- data/lib/apifreaks/internal/iterators/offset_item_iterator.rb +30 -0
- data/lib/apifreaks/internal/iterators/offset_page_iterator.rb +103 -0
- data/lib/apifreaks/internal/json/request.rb +41 -0
- data/lib/apifreaks/internal/json/serializable.rb +25 -0
- data/lib/apifreaks/internal/multipart/multipart_encoder.rb +141 -0
- data/lib/apifreaks/internal/multipart/multipart_form_data.rb +78 -0
- data/lib/apifreaks/internal/multipart/multipart_form_data_part.rb +51 -0
- data/lib/apifreaks/internal/multipart/multipart_request.rb +40 -0
- data/lib/apifreaks/internal/types/array.rb +47 -0
- data/lib/apifreaks/internal/types/boolean.rb +34 -0
- data/lib/apifreaks/internal/types/enum.rb +56 -0
- data/lib/apifreaks/internal/types/hash.rb +36 -0
- data/lib/apifreaks/internal/types/model/field.rb +38 -0
- data/lib/apifreaks/internal/types/model.rb +208 -0
- data/lib/apifreaks/internal/types/type.rb +35 -0
- data/lib/apifreaks/internal/types/union.rb +161 -0
- data/lib/apifreaks/internal/types/unknown.rb +15 -0
- data/lib/apifreaks/internal/types/utils.rb +116 -0
- data/lib/apifreaks/types/air_quality_request.rb +27 -0
- data/lib/apifreaks/types/air_quality_request_format.rb +12 -0
- data/lib/apifreaks/types/air_quality_request_precision.rb +11 -0
- data/lib/apifreaks/types/air_quality_response.rb +13 -0
- data/lib/apifreaks/types/air_quality_response_current.rb +34 -0
- data/lib/apifreaks/types/air_quality_response_forecast_value.rb +9 -0
- data/lib/apifreaks/types/air_quality_response_forecast_value_hourly_item.rb +31 -0
- data/lib/apifreaks/types/air_quality_response_location.rb +16 -0
- data/lib/apifreaks/types/air_quality_response_location_city.rb +27 -0
- data/lib/apifreaks/types/air_quality_response_location_continent_code.rb +43 -0
- data/lib/apifreaks/types/air_quality_response_location_zero.rb +25 -0
- data/lib/apifreaks/types/asn_whois_lookup_request.rb +13 -0
- data/lib/apifreaks/types/asn_whois_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/asn_whois_lookup_response.rb +57 -0
- data/lib/apifreaks/types/asn_whois_lookup_response_contacts.rb +11 -0
- data/lib/apifreaks/types/asn_whois_lookup_response_downstreams_item.rb +13 -0
- data/lib/apifreaks/types/asn_whois_lookup_response_parsed_whois_response.rb +19 -0
- data/lib/apifreaks/types/asn_whois_lookup_response_parsed_whois_response_abuse_contacts_item.rb +17 -0
- data/lib/apifreaks/types/asn_whois_lookup_response_parsed_whois_response_aut_nums_item.rb +53 -0
- data/lib/apifreaks/types/asn_whois_lookup_response_parsed_whois_response_organization.rb +31 -0
- data/lib/apifreaks/types/asn_whois_lookup_response_parsed_whois_response_technical_contacts_item.rb +17 -0
- data/lib/apifreaks/types/asn_whois_lookup_response_peers_item.rb +13 -0
- data/lib/apifreaks/types/asn_whois_lookup_response_route_objects_item.rb +17 -0
- data/lib/apifreaks/types/asn_whois_lookup_response_upstreams_item.rb +13 -0
- data/lib/apifreaks/types/astronomy_lookup_request.rb +27 -0
- data/lib/apifreaks/types/astronomy_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/astronomy_lookup_response.rb +13 -0
- data/lib/apifreaks/types/astronomy_lookup_response_astronomy.rb +59 -0
- data/lib/apifreaks/types/astronomy_lookup_response_astronomy_evening.rb +27 -0
- data/lib/apifreaks/types/astronomy_lookup_response_astronomy_morning.rb +27 -0
- data/lib/apifreaks/types/astronomy_lookup_response_location.rb +41 -0
- data/lib/apifreaks/types/bad_request_error_body.rb +17 -0
- data/lib/apifreaks/types/bulk_current_weather_request.rb +15 -0
- data/lib/apifreaks/types/bulk_current_weather_request_format.rb +12 -0
- data/lib/apifreaks/types/bulk_current_weather_request_locations_item.rb +15 -0
- data/lib/apifreaks/types/bulk_current_weather_response.rb +9 -0
- data/lib/apifreaks/types/bulk_current_weather_response_bulk_item.rb +11 -0
- data/lib/apifreaks/types/bulk_current_weather_response_bulk_item_current.rb +42 -0
- data/lib/apifreaks/types/bulk_current_weather_response_bulk_item_current_air_quality.rb +34 -0
- data/lib/apifreaks/types/bulk_current_weather_response_bulk_item_current_astronomy.rb +34 -0
- data/lib/apifreaks/types/bulk_current_weather_response_bulk_item_location.rb +16 -0
- data/lib/apifreaks/types/bulk_current_weather_response_bulk_item_location_city.rb +27 -0
- data/lib/apifreaks/types/bulk_current_weather_response_bulk_item_location_continent_code.rb +43 -0
- data/lib/apifreaks/types/bulk_current_weather_response_bulk_item_location_zero.rb +25 -0
- data/lib/apifreaks/types/bulk_domain_availability_check_request.rb +15 -0
- data/lib/apifreaks/types/bulk_domain_availability_check_request_format.rb +12 -0
- data/lib/apifreaks/types/bulk_domain_availability_check_request_source.rb +12 -0
- data/lib/apifreaks/types/bulk_domain_availability_check_response.rb +9 -0
- data/lib/apifreaks/types/bulk_domain_availability_check_response_bulk_domain_available_response_item.rb +13 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_request.rb +15 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response.rb +9 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item.rb +19 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item.rb +21 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_address.rb +21 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_address_dns_type.rb +12 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_admin.rb +33 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_admin_dns_type.rb +11 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_one.rb +21 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_one_dns_type.rb +11 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_priority.rb +23 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_priority_dns_type.rb +11 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_single_name.rb +21 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_single_name_dns_type.rb +11 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_strings.rb +21 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_records_item_strings_dns_type.rb +12 -0
- data/lib/apifreaks/types/bulk_domain_dns_lookup_response_bulk_dns_info_item_dns_types.rb +23 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_request.rb +13 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response.rb +9 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response_bulk_whois_response_item.rb +43 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response_bulk_whois_response_item_administrative_contact.rb +31 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response_bulk_whois_response_item_billing_contact.rb +31 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response_bulk_whois_response_item_domain_registered.rb +13 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response_bulk_whois_response_item_domain_registrar.rb +19 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response_bulk_whois_response_item_registrant_contact.rb +31 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response_bulk_whois_response_item_registry_data.rb +29 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response_bulk_whois_response_item_registry_data_domain_registered.rb +13 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response_bulk_whois_response_item_registry_data_domain_registrar.rb +19 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response_bulk_whois_response_item_reseller_contact.rb +31 -0
- data/lib/apifreaks/types/bulk_domain_whois_lookup_response_bulk_whois_response_item_technical_contact.rb +31 -0
- data/lib/apifreaks/types/bulk_email_validate_request.rb +13 -0
- data/lib/apifreaks/types/bulk_email_validate_request_email_data_item.rb +13 -0
- data/lib/apifreaks/types/bulk_email_validate_request_format.rb +12 -0
- data/lib/apifreaks/types/bulk_email_validate_response.rb +9 -0
- data/lib/apifreaks/types/bulk_email_validate_response_email_validation_responses_item.rb +29 -0
- data/lib/apifreaks/types/bulk_email_validate_response_email_validation_responses_item_account.rb +11 -0
- data/lib/apifreaks/types/bulk_email_validate_response_email_validation_responses_item_address.rb +13 -0
- data/lib/apifreaks/types/bulk_email_validate_response_email_validation_responses_item_address_location.rb +33 -0
- data/lib/apifreaks/types/bulk_email_validate_response_email_validation_responses_item_address_security.rb +29 -0
- data/lib/apifreaks/types/bulk_email_validate_response_email_validation_responses_item_dns.rb +11 -0
- data/lib/apifreaks/types/bulk_email_validate_response_email_validation_responses_item_domain.rb +19 -0
- data/lib/apifreaks/types/bulk_email_validate_response_email_validation_responses_item_valid_email.rb +12 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_request.rb +21 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item.rb +27 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_abuse_item.rb +27 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_country_metadata.rb +13 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_currency.rb +13 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_location.rb +51 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_network.rb +13 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_network_asn.rb +29 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_network_company.rb +13 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_security.rb +29 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_time_zone.rb +39 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_time_zone_dst_end.rb +19 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_time_zone_dst_start.rb +19 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_user_agent.rb +23 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_user_agent_device.rb +15 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_user_agent_engine.rb +15 -0
- data/lib/apifreaks/types/bulk_geolocation_lookup_response_item_user_agent_operating_system.rb +17 -0
- data/lib/apifreaks/types/bulk_ip_security_lookup_request.rb +17 -0
- data/lib/apifreaks/types/bulk_ip_security_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/bulk_ip_security_lookup_response_item.rb +11 -0
- data/lib/apifreaks/types/bulk_ip_security_lookup_response_item_security.rb +45 -0
- data/lib/apifreaks/types/bulk_phone_validate_request.rb +13 -0
- data/lib/apifreaks/types/bulk_phone_validate_request_format.rb +11 -0
- data/lib/apifreaks/types/bulk_phone_validate_request_numbers_item.rb +13 -0
- data/lib/apifreaks/types/bulk_phone_validate_response_item.rb +35 -0
- data/lib/apifreaks/types/bulk_phone_validate_response_item_formats.rb +16 -0
- data/lib/apifreaks/types/bulk_phone_validate_response_item_line_type.rb +22 -0
- data/lib/apifreaks/types/bulk_phone_validate_response_item_raw_input.rb +14 -0
- data/lib/apifreaks/types/bulk_screenshot_capture_request.rb +13 -0
- data/lib/apifreaks/types/bulk_screenshot_capture_request_format.rb +11 -0
- data/lib/apifreaks/types/bulk_screenshot_capture_request_urls_item.rb +9 -0
- data/lib/apifreaks/types/bulk_screenshot_capture_response.rb +13 -0
- data/lib/apifreaks/types/bulk_screenshot_capture_response_meta_data.rb +13 -0
- data/lib/apifreaks/types/bulk_screenshot_capture_response_results_item.rb +13 -0
- data/lib/apifreaks/types/bulk_screenshot_capture_response_results_item_url.rb +147 -0
- data/lib/apifreaks/types/bulk_user_agent_lookup_request.rb +13 -0
- data/lib/apifreaks/types/bulk_user_agent_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/bulk_user_agent_lookup_response_item.rb +25 -0
- data/lib/apifreaks/types/bulk_user_agent_lookup_response_item_device.rb +15 -0
- data/lib/apifreaks/types/bulk_user_agent_lookup_response_item_engine.rb +15 -0
- data/lib/apifreaks/types/bulk_user_agent_lookup_response_item_operating_system.rb +17 -0
- data/lib/apifreaks/types/bulk_vat_rate_by_country_request.rb +13 -0
- data/lib/apifreaks/types/bulk_vat_rate_by_country_request_countries_item.rb +11 -0
- data/lib/apifreaks/types/bulk_vat_rate_by_country_request_format.rb +12 -0
- data/lib/apifreaks/types/bulk_vat_rate_by_country_response.rb +9 -0
- data/lib/apifreaks/types/bulk_vat_rate_by_country_response_countries_item.rb +25 -0
- data/lib/apifreaks/types/bulk_zipcode_lookup_request.rb +15 -0
- data/lib/apifreaks/types/bulk_zipcode_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/bulk_zipcode_lookup_response.rb +9 -0
- data/lib/apifreaks/types/bulk_zipcode_lookup_response_results_item.rb +23 -0
- data/lib/apifreaks/types/commodity_fluctuation_request.rb +17 -0
- data/lib/apifreaks/types/commodity_fluctuation_request_format.rb +11 -0
- data/lib/apifreaks/types/commodity_fluctuation_response.rb +19 -0
- data/lib/apifreaks/types/commodity_fluctuation_response_metadata_value.rb +11 -0
- data/lib/apifreaks/types/commodity_fluctuation_response_rates_value.rb +15 -0
- data/lib/apifreaks/types/commodity_historical_rates_request.rb +15 -0
- data/lib/apifreaks/types/commodity_historical_rates_request_format.rb +11 -0
- data/lib/apifreaks/types/commodity_historical_rates_response.rb +17 -0
- data/lib/apifreaks/types/commodity_historical_rates_response_metadata_value.rb +11 -0
- data/lib/apifreaks/types/commodity_historical_rates_response_rates_value.rb +17 -0
- data/lib/apifreaks/types/commodity_latest_rates_request.rb +17 -0
- data/lib/apifreaks/types/commodity_latest_rates_request_format.rb +11 -0
- data/lib/apifreaks/types/commodity_latest_rates_request_updates.rb +12 -0
- data/lib/apifreaks/types/commodity_latest_rates_response.rb +15 -0
- data/lib/apifreaks/types/commodity_latest_rates_response_metadata_value.rb +11 -0
- data/lib/apifreaks/types/commodity_symbols_request.rb +11 -0
- data/lib/apifreaks/types/commodity_symbols_request_format.rb +11 -0
- data/lib/apifreaks/types/commodity_symbols_response.rb +11 -0
- data/lib/apifreaks/types/commodity_symbols_response_symbols_item.rb +21 -0
- data/lib/apifreaks/types/commodity_symbols_response_symbols_item_currency.rb +13 -0
- data/lib/apifreaks/types/commodity_symbols_response_symbols_item_unit.rb +11 -0
- data/lib/apifreaks/types/commodity_symbols_response_symbols_item_update_interval.rb +12 -0
- data/lib/apifreaks/types/commodity_time_series_request.rb +17 -0
- data/lib/apifreaks/types/commodity_time_series_request_format.rb +11 -0
- data/lib/apifreaks/types/commodity_time_series_response.rb +19 -0
- data/lib/apifreaks/types/commodity_time_series_response_metadata_value.rb +11 -0
- data/lib/apifreaks/types/commodity_time_series_response_rates_value_value.rb +15 -0
- data/lib/apifreaks/types/content_too_large_error_body.rb +17 -0
- data/lib/apifreaks/types/currency_convert_by_ip_request.rb +19 -0
- data/lib/apifreaks/types/currency_convert_by_ip_request_format.rb +12 -0
- data/lib/apifreaks/types/currency_convert_by_ip_request_updates.rb +14 -0
- data/lib/apifreaks/types/currency_convert_by_ip_response.rb +21 -0
- data/lib/apifreaks/types/currency_convert_historical_request.rb +19 -0
- data/lib/apifreaks/types/currency_convert_historical_request_format.rb +12 -0
- data/lib/apifreaks/types/currency_convert_historical_response.rb +19 -0
- data/lib/apifreaks/types/currency_convert_latest_request.rb +19 -0
- data/lib/apifreaks/types/currency_convert_latest_request_format.rb +12 -0
- data/lib/apifreaks/types/currency_convert_latest_request_updates.rb +14 -0
- data/lib/apifreaks/types/currency_convert_latest_response.rb +19 -0
- data/lib/apifreaks/types/currency_fluctuation_request.rb +19 -0
- data/lib/apifreaks/types/currency_fluctuation_request_format.rb +12 -0
- data/lib/apifreaks/types/currency_fluctuation_response.rb +15 -0
- data/lib/apifreaks/types/currency_fluctuation_response_rate_fluctuations_value.rb +15 -0
- data/lib/apifreaks/types/currency_historical_limits_request.rb +11 -0
- data/lib/apifreaks/types/currency_historical_limits_request_format.rb +12 -0
- data/lib/apifreaks/types/currency_historical_limits_response.rb +9 -0
- data/lib/apifreaks/types/currency_historical_rates_request.rb +17 -0
- data/lib/apifreaks/types/currency_historical_rates_request_format.rb +12 -0
- data/lib/apifreaks/types/currency_historical_rates_response.rb +13 -0
- data/lib/apifreaks/types/currency_latest_rates_request.rb +17 -0
- data/lib/apifreaks/types/currency_latest_rates_request_format.rb +12 -0
- data/lib/apifreaks/types/currency_latest_rates_request_updates.rb +14 -0
- data/lib/apifreaks/types/currency_latest_rates_response.rb +13 -0
- data/lib/apifreaks/types/currency_supported_request.rb +11 -0
- data/lib/apifreaks/types/currency_supported_request_format.rb +12 -0
- data/lib/apifreaks/types/currency_supported_response.rb +9 -0
- data/lib/apifreaks/types/currency_supported_response_supported_currencies_map_value.rb +23 -0
- data/lib/apifreaks/types/currency_supported_response_supported_currencies_map_value_status.rb +12 -0
- data/lib/apifreaks/types/currency_symbols_request.rb +11 -0
- data/lib/apifreaks/types/currency_symbols_request_format.rb +12 -0
- data/lib/apifreaks/types/currency_symbols_response.rb +9 -0
- data/lib/apifreaks/types/currency_time_series_request.rb +19 -0
- data/lib/apifreaks/types/currency_time_series_request_format.rb +12 -0
- data/lib/apifreaks/types/currency_time_series_response.rb +15 -0
- data/lib/apifreaks/types/currency_time_series_response_historical_rates_list_item.rb +11 -0
- data/lib/apifreaks/types/current_weather_request.rb +21 -0
- data/lib/apifreaks/types/current_weather_request_format.rb +12 -0
- data/lib/apifreaks/types/current_weather_response.rb +11 -0
- data/lib/apifreaks/types/current_weather_response_current.rb +42 -0
- data/lib/apifreaks/types/current_weather_response_current_air_quality.rb +34 -0
- data/lib/apifreaks/types/current_weather_response_current_astronomy.rb +34 -0
- data/lib/apifreaks/types/current_weather_response_location.rb +16 -0
- data/lib/apifreaks/types/current_weather_response_location_city.rb +27 -0
- data/lib/apifreaks/types/current_weather_response_location_continent_code.rb +43 -0
- data/lib/apifreaks/types/current_weather_response_location_zero.rb +25 -0
- data/lib/apifreaks/types/domain_availability_check_request.rb +15 -0
- data/lib/apifreaks/types/domain_availability_check_request_format.rb +12 -0
- data/lib/apifreaks/types/domain_availability_check_request_source.rb +12 -0
- data/lib/apifreaks/types/domain_availability_check_response.rb +13 -0
- data/lib/apifreaks/types/domain_availability_suggestions_request.rb +17 -0
- data/lib/apifreaks/types/domain_availability_suggestions_request_format.rb +12 -0
- data/lib/apifreaks/types/domain_availability_suggestions_request_source.rb +12 -0
- data/lib/apifreaks/types/domain_availability_suggestions_response.rb +9 -0
- data/lib/apifreaks/types/domain_availability_suggestions_response_domain_available_response_item.rb +13 -0
- data/lib/apifreaks/types/domain_dns_history_request.rb +17 -0
- data/lib/apifreaks/types/domain_dns_history_request_format.rb +12 -0
- data/lib/apifreaks/types/domain_dns_history_response.rb +15 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item.rb +17 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item.rb +21 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_address.rb +21 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_address_dns_type.rb +12 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_admin.rb +33 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_admin_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_one.rb +21 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_one_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_priority.rb +23 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_priority_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_single_name.rb +21 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_single_name_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_strings.rb +21 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_records_item_strings_dns_type.rb +12 -0
- data/lib/apifreaks/types/domain_dns_history_response_historical_dns_records_item_dns_types.rb +23 -0
- data/lib/apifreaks/types/domain_dns_lookup_request.rb +17 -0
- data/lib/apifreaks/types/domain_dns_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/domain_dns_lookup_response.rb +19 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item.rb +21 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_address.rb +21 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_address_dns_type.rb +12 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_admin.rb +33 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_admin_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_one.rb +21 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_one_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_priority.rb +23 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_priority_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_single_name.rb +21 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_single_name_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_strings.rb +21 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_records_item_strings_dns_type.rb +12 -0
- data/lib/apifreaks/types/domain_dns_lookup_response_dns_types.rb +23 -0
- data/lib/apifreaks/types/domain_dns_reverse_request.rb +19 -0
- data/lib/apifreaks/types/domain_dns_reverse_request_format.rb +12 -0
- data/lib/apifreaks/types/domain_dns_reverse_request_type.rb +18 -0
- data/lib/apifreaks/types/domain_dns_reverse_response.rb +15 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item.rb +17 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item.rb +21 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_address.rb +21 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_address_dns_type.rb +12 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_admin.rb +33 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_admin_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_one.rb +21 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_one_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_priority.rb +23 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_priority_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_single_name.rb +21 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_single_name_dns_type.rb +11 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_strings.rb +21 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_records_item_strings_dns_type.rb +12 -0
- data/lib/apifreaks/types/domain_dns_reverse_response_reverse_dns_records_item_dns_types.rb +23 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_request.rb +15 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response.rb +15 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response_ssl_certificates_item.rb +29 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response_ssl_certificates_item_extensions.rb +23 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response_ssl_certificates_item_extensions_0f3ad7e771.rb +13 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response_ssl_certificates_item_extensions_155ba693f3.rb +11 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response_ssl_certificates_item_extensions_4d5accd192.rb +11 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response_ssl_certificates_item_extensions_authority_info_access.rb +11 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response_ssl_certificates_item_extensions_certificate_policies.rb +11 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response_ssl_certificates_item_extensions_subject_alternative_names.rb +15 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response_ssl_certificates_item_issuer.rb +31 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response_ssl_certificates_item_public_key.rb +13 -0
- data/lib/apifreaks/types/domain_ssl_chain_lookup_response_ssl_certificates_item_subject.rb +31 -0
- data/lib/apifreaks/types/domain_ssl_lookup_request.rb +15 -0
- data/lib/apifreaks/types/domain_ssl_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response.rb +15 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response_ssl_certificates_item.rb +29 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response_ssl_certificates_item_extensions.rb +23 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response_ssl_certificates_item_extensions_4cab38eb05.rb +11 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response_ssl_certificates_item_extensions_6449e2a1fa.rb +11 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response_ssl_certificates_item_extensions_authority_info_access.rb +11 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response_ssl_certificates_item_extensions_certificate_policies.rb +11 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response_ssl_certificates_item_extensions_certificate_policies_policy_qualifier.rb +13 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response_ssl_certificates_item_extensions_subject_alternative_names.rb +15 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response_ssl_certificates_item_issuer.rb +31 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response_ssl_certificates_item_public_key.rb +13 -0
- data/lib/apifreaks/types/domain_ssl_lookup_response_ssl_certificates_item_subject.rb +31 -0
- data/lib/apifreaks/types/domain_whois_history_request.rb +13 -0
- data/lib/apifreaks/types/domain_whois_history_request_format.rb +12 -0
- data/lib/apifreaks/types/domain_whois_history_response.rb +15 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois.rb +11 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois_domains_historical_item.rb +45 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois_domains_historical_item_administrative_contact.rb +31 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois_domains_historical_item_billing_contact.rb +31 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois_domains_historical_item_domain_registered.rb +13 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois_domains_historical_item_domain_registrar.rb +19 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois_domains_historical_item_registrant_contact.rb +31 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois_domains_historical_item_registry_data.rb +29 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois_domains_historical_item_registry_data_domain_registered.rb +13 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois_domains_historical_item_registry_data_domain_registrar.rb +19 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois_domains_historical_item_reseller_contact.rb +31 -0
- data/lib/apifreaks/types/domain_whois_history_response_whois_domains_historical_item_technical_contact.rb +31 -0
- data/lib/apifreaks/types/domain_whois_lookup_request.rb +13 -0
- data/lib/apifreaks/types/domain_whois_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/domain_whois_lookup_response.rb +43 -0
- data/lib/apifreaks/types/domain_whois_lookup_response_administrative_contact.rb +31 -0
- data/lib/apifreaks/types/domain_whois_lookup_response_billing_contact.rb +31 -0
- data/lib/apifreaks/types/domain_whois_lookup_response_domain_registered.rb +13 -0
- data/lib/apifreaks/types/domain_whois_lookup_response_domain_registrar.rb +19 -0
- data/lib/apifreaks/types/domain_whois_lookup_response_registrant_contact.rb +31 -0
- data/lib/apifreaks/types/domain_whois_lookup_response_registry_data.rb +29 -0
- data/lib/apifreaks/types/domain_whois_lookup_response_registry_data_domain_registered.rb +13 -0
- data/lib/apifreaks/types/domain_whois_lookup_response_registry_data_domain_registrar.rb +19 -0
- data/lib/apifreaks/types/domain_whois_lookup_response_reseller_contact.rb +31 -0
- data/lib/apifreaks/types/domain_whois_lookup_response_technical_contact.rb +31 -0
- data/lib/apifreaks/types/domain_whois_reverse_request.rb +25 -0
- data/lib/apifreaks/types/domain_whois_reverse_request_format.rb +12 -0
- data/lib/apifreaks/types/domain_whois_reverse_request_mode.rb +12 -0
- data/lib/apifreaks/types/domain_whois_reverse_response.rb +15 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item.rb +13 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_484f988813.rb +31 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_498e5613b2.rb +31 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_4cd09b6e63.rb +31 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_54e439aaa5.rb +31 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_administrative_contact.rb +45 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_administrative_contact_registry_data.rb +29 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_aeca2e1d2a.rb +31 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_companyname.rb +23 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_d1e360fbd1.rb +19 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_d3e5420663.rb +13 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_df6a8e8b60.rb +13 -0
- data/lib/apifreaks/types/domain_whois_reverse_response_whois_domains_historical_item_e6338be31f.rb +19 -0
- data/lib/apifreaks/types/email_validate_request.rb +17 -0
- data/lib/apifreaks/types/email_validate_request_format.rb +12 -0
- data/lib/apifreaks/types/email_validate_response.rb +29 -0
- data/lib/apifreaks/types/email_validate_response_account.rb +11 -0
- data/lib/apifreaks/types/email_validate_response_address.rb +13 -0
- data/lib/apifreaks/types/email_validate_response_address_location.rb +33 -0
- data/lib/apifreaks/types/email_validate_response_address_security.rb +29 -0
- data/lib/apifreaks/types/email_validate_response_dns.rb +11 -0
- data/lib/apifreaks/types/email_validate_response_domain.rb +19 -0
- data/lib/apifreaks/types/email_validate_response_valid_email.rb +12 -0
- data/lib/apifreaks/types/flood_forecast_request.rb +27 -0
- data/lib/apifreaks/types/flood_forecast_request_format.rb +12 -0
- data/lib/apifreaks/types/flood_forecast_request_precision.rb +11 -0
- data/lib/apifreaks/types/flood_forecast_response.rb +11 -0
- data/lib/apifreaks/types/flood_forecast_response_forecast_value.rb +9 -0
- data/lib/apifreaks/types/flood_forecast_response_forecast_value_daily.rb +24 -0
- data/lib/apifreaks/types/flood_forecast_response_location.rb +16 -0
- data/lib/apifreaks/types/flood_forecast_response_location_city.rb +27 -0
- data/lib/apifreaks/types/flood_forecast_response_location_continent_code.rb +43 -0
- data/lib/apifreaks/types/flood_forecast_response_location_zero.rb +25 -0
- data/lib/apifreaks/types/forbidden_error_body.rb +17 -0
- data/lib/apifreaks/types/gateway_timeout_error_body.rb +17 -0
- data/lib/apifreaks/types/geocoder_reverse_request.rb +17 -0
- data/lib/apifreaks/types/geocoder_reverse_request_format.rb +11 -0
- data/lib/apifreaks/types/geocoder_reverse_response.rb +41 -0
- data/lib/apifreaks/types/geocoder_reverse_response_poi_item.rb +13 -0
- data/lib/apifreaks/types/geocoder_search_request.rb +25 -0
- data/lib/apifreaks/types/geocoder_search_request_format.rb +11 -0
- data/lib/apifreaks/types/geocoder_search_response_item.rb +41 -0
- data/lib/apifreaks/types/geocoder_search_response_item_poi_item.rb +13 -0
- data/lib/apifreaks/types/geolocation_lookup_request.rb +21 -0
- data/lib/apifreaks/types/geolocation_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/geolocation_lookup_request_lang.rb +19 -0
- data/lib/apifreaks/types/geolocation_lookup_response.rb +27 -0
- data/lib/apifreaks/types/geolocation_lookup_response_abuse_item.rb +27 -0
- data/lib/apifreaks/types/geolocation_lookup_response_country_metadata.rb +13 -0
- data/lib/apifreaks/types/geolocation_lookup_response_currency.rb +13 -0
- data/lib/apifreaks/types/geolocation_lookup_response_location.rb +51 -0
- data/lib/apifreaks/types/geolocation_lookup_response_network.rb +13 -0
- data/lib/apifreaks/types/geolocation_lookup_response_network_asn.rb +29 -0
- data/lib/apifreaks/types/geolocation_lookup_response_network_company.rb +13 -0
- data/lib/apifreaks/types/geolocation_lookup_response_security.rb +29 -0
- data/lib/apifreaks/types/geolocation_lookup_response_time_zone.rb +39 -0
- data/lib/apifreaks/types/geolocation_lookup_response_time_zone_dst_end.rb +19 -0
- data/lib/apifreaks/types/geolocation_lookup_response_time_zone_dst_start.rb +19 -0
- data/lib/apifreaks/types/geolocation_lookup_response_user_agent.rb +23 -0
- data/lib/apifreaks/types/geolocation_lookup_response_user_agent_device.rb +15 -0
- data/lib/apifreaks/types/geolocation_lookup_response_user_agent_engine.rb +15 -0
- data/lib/apifreaks/types/geolocation_lookup_response_user_agent_operating_system.rb +17 -0
- data/lib/apifreaks/types/get_admin_levels_request.rb +13 -0
- data/lib/apifreaks/types/get_admin_levels_request_format.rb +12 -0
- data/lib/apifreaks/types/get_admin_levels_response.rb +9 -0
- data/lib/apifreaks/types/get_admin_unit_details_request.rb +15 -0
- data/lib/apifreaks/types/get_admin_unit_details_request_format.rb +12 -0
- data/lib/apifreaks/types/get_admin_unit_details_response.rb +17 -0
- data/lib/apifreaks/types/get_admin_units_request.rb +15 -0
- data/lib/apifreaks/types/get_admin_units_request_format.rb +12 -0
- data/lib/apifreaks/types/get_admin_units_response.rb +9 -0
- data/lib/apifreaks/types/get_admin_units_response_admin_units_item.rb +13 -0
- data/lib/apifreaks/types/get_cities_request.rb +15 -0
- data/lib/apifreaks/types/get_cities_request_format.rb +12 -0
- data/lib/apifreaks/types/get_cities_response.rb +9 -0
- data/lib/apifreaks/types/get_cities_response_cities_item.rb +17 -0
- data/lib/apifreaks/types/get_cities_response_cities_item_admin_unit.rb +13 -0
- data/lib/apifreaks/types/get_countries_request.rb +15 -0
- data/lib/apifreaks/types/get_countries_request_format.rb +12 -0
- data/lib/apifreaks/types/get_countries_response.rb +9 -0
- data/lib/apifreaks/types/get_countries_response_countries_item.rb +21 -0
- data/lib/apifreaks/types/get_country_details_request.rb +13 -0
- data/lib/apifreaks/types/get_country_details_request_format.rb +12 -0
- data/lib/apifreaks/types/get_country_details_response.rb +37 -0
- data/lib/apifreaks/types/get_flags_request.rb +19 -0
- data/lib/apifreaks/types/get_flags_request_format.rb +13 -0
- data/lib/apifreaks/types/get_flags_request_shape.rb +12 -0
- data/lib/apifreaks/types/get_flags_request_size.rb +15 -0
- data/lib/apifreaks/types/get_flags_request_type.rb +12 -0
- data/lib/apifreaks/types/get_regions_request.rb +11 -0
- data/lib/apifreaks/types/get_regions_request_format.rb +12 -0
- data/lib/apifreaks/types/get_regions_response.rb +9 -0
- data/lib/apifreaks/types/get_subregions_request.rb +13 -0
- data/lib/apifreaks/types/get_subregions_request_format.rb +12 -0
- data/lib/apifreaks/types/get_subregions_response.rb +9 -0
- data/lib/apifreaks/types/get_supported_flags_request.rb +9 -0
- data/lib/apifreaks/types/get_supported_flags_response_item.rb +13 -0
- data/lib/apifreaks/types/grammar_correct_request.rb +11 -0
- data/lib/apifreaks/types/grammar_correct_response.rb +9 -0
- data/lib/apifreaks/types/grammar_detect_request.rb +11 -0
- data/lib/apifreaks/types/grammar_detect_response.rb +9 -0
- data/lib/apifreaks/types/grammar_detect_response_grammar_errors_item.rb +11 -0
- data/lib/apifreaks/types/historical_weather_request.rb +25 -0
- data/lib/apifreaks/types/historical_weather_request_format.rb +12 -0
- data/lib/apifreaks/types/historical_weather_request_precision.rb +12 -0
- data/lib/apifreaks/types/historical_weather_response.rb +11 -0
- data/lib/apifreaks/types/historical_weather_response_historical.rb +14 -0
- data/lib/apifreaks/types/historical_weather_response_historical_astronomy.rb +34 -0
- data/lib/apifreaks/types/historical_weather_response_historical_daily.rb +66 -0
- data/lib/apifreaks/types/historical_weather_response_historical_hourly_item.rb +51 -0
- data/lib/apifreaks/types/historical_weather_response_location.rb +16 -0
- data/lib/apifreaks/types/historical_weather_response_location_city.rb +27 -0
- data/lib/apifreaks/types/historical_weather_response_location_continent_code.rb +43 -0
- data/lib/apifreaks/types/historical_weather_response_location_zero.rb +25 -0
- data/lib/apifreaks/types/iban_validate_request.rb +13 -0
- data/lib/apifreaks/types/iban_validate_request_format.rb +12 -0
- data/lib/apifreaks/types/iban_validate_response.rb +15 -0
- data/lib/apifreaks/types/iban_validate_response_bank_data.rb +28 -0
- data/lib/apifreaks/types/iban_validate_response_validation.rb +20 -0
- data/lib/apifreaks/types/internal_server_error_body.rb +17 -0
- data/lib/apifreaks/types/ip_security_lookup_request.rb +17 -0
- data/lib/apifreaks/types/ip_security_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/ip_security_lookup_response.rb +11 -0
- data/lib/apifreaks/types/ip_security_lookup_response_security.rb +45 -0
- data/lib/apifreaks/types/ip_whois_lookup_request.rb +13 -0
- data/lib/apifreaks/types/ip_whois_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/ip_whois_lookup_response.rb +29 -0
- data/lib/apifreaks/types/ip_whois_lookup_response_abuse_contacts_item.rb +17 -0
- data/lib/apifreaks/types/ip_whois_lookup_response_administrative_contacts_item.rb +17 -0
- data/lib/apifreaks/types/ip_whois_lookup_response_inet_nums_item.rb +67 -0
- data/lib/apifreaks/types/ip_whois_lookup_response_irt.rb +59 -0
- data/lib/apifreaks/types/ip_whois_lookup_response_organization.rb +53 -0
- data/lib/apifreaks/types/ip_whois_lookup_response_technical_contacts_item.rb +17 -0
- data/lib/apifreaks/types/locked_error_body.rb +17 -0
- data/lib/apifreaks/types/marine_weather_request.rb +27 -0
- data/lib/apifreaks/types/marine_weather_request_format.rb +12 -0
- data/lib/apifreaks/types/marine_weather_request_precision.rb +13 -0
- data/lib/apifreaks/types/marine_weather_response.rb +13 -0
- data/lib/apifreaks/types/marine_weather_response_current.rb +36 -0
- data/lib/apifreaks/types/marine_weather_response_forecast_value.rb +13 -0
- data/lib/apifreaks/types/marine_weather_response_forecast_value_daily.rb +32 -0
- data/lib/apifreaks/types/marine_weather_response_forecast_value_hourly_item.rb +39 -0
- data/lib/apifreaks/types/marine_weather_response_forecast_value_minutely_item.rb +15 -0
- data/lib/apifreaks/types/marine_weather_response_location.rb +16 -0
- data/lib/apifreaks/types/marine_weather_response_location_city.rb +27 -0
- data/lib/apifreaks/types/marine_weather_response_location_continent_code.rb +43 -0
- data/lib/apifreaks/types/marine_weather_response_location_zero.rb +25 -0
- data/lib/apifreaks/types/method_not_allowed_error_body.rb +17 -0
- data/lib/apifreaks/types/no_response_error_body.rb +17 -0
- data/lib/apifreaks/types/not_acceptable_error_body.rb +17 -0
- data/lib/apifreaks/types/not_found_error_body.rb +17 -0
- data/lib/apifreaks/types/ocr_predict_request.rb +29 -0
- data/lib/apifreaks/types/ocr_predict_request_model.rb +12 -0
- data/lib/apifreaks/types/ocr_predict_response.rb +9 -0
- data/lib/apifreaks/types/ocr_predict_response_ocr_text.rb +18 -0
- data/lib/apifreaks/types/payment_required_error_body.rb +17 -0
- data/lib/apifreaks/types/pdf_compress_request.rb +25 -0
- data/lib/apifreaks/types/pdf_compress_request_compression_level.rb +14 -0
- data/lib/apifreaks/types/pdf_compress_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_compress_response.rb +11 -0
- data/lib/apifreaks/types/pdf_convert_to_bmp_request.rb +31 -0
- data/lib/apifreaks/types/pdf_convert_to_bmp_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_convert_to_bmp_request_profile.rb +15 -0
- data/lib/apifreaks/types/pdf_convert_to_bmp_response.rb +11 -0
- data/lib/apifreaks/types/pdf_convert_to_gif_request.rb +31 -0
- data/lib/apifreaks/types/pdf_convert_to_gif_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_convert_to_gif_request_profile.rb +16 -0
- data/lib/apifreaks/types/pdf_convert_to_gif_response.rb +11 -0
- data/lib/apifreaks/types/pdf_convert_to_jpg_request.rb +33 -0
- data/lib/apifreaks/types/pdf_convert_to_jpg_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_convert_to_jpg_request_profile.rb +13 -0
- data/lib/apifreaks/types/pdf_convert_to_jpg_response.rb +11 -0
- data/lib/apifreaks/types/pdf_convert_to_png_request.rb +31 -0
- data/lib/apifreaks/types/pdf_convert_to_png_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_convert_to_png_request_profile.rb +16 -0
- data/lib/apifreaks/types/pdf_convert_to_png_response.rb +11 -0
- data/lib/apifreaks/types/pdf_convert_to_tiff_request.rb +31 -0
- data/lib/apifreaks/types/pdf_convert_to_tiff_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_convert_to_tiff_request_profile.rb +15 -0
- data/lib/apifreaks/types/pdf_convert_to_tiff_response.rb +11 -0
- data/lib/apifreaks/types/pdf_decrypt_request.rb +25 -0
- data/lib/apifreaks/types/pdf_decrypt_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_decrypt_response.rb +11 -0
- data/lib/apifreaks/types/pdf_delete_file_request.rb +13 -0
- data/lib/apifreaks/types/pdf_delete_file_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_delete_file_response.rb +13 -0
- data/lib/apifreaks/types/pdf_download_resource_request.rb +13 -0
- data/lib/apifreaks/types/pdf_download_resource_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_encrypt_request.rb +29 -0
- data/lib/apifreaks/types/pdf_encrypt_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_encrypt_response.rb +11 -0
- data/lib/apifreaks/types/pdf_extract_pages_request.rb +27 -0
- data/lib/apifreaks/types/pdf_extract_pages_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_extract_pages_response.rb +11 -0
- data/lib/apifreaks/types/pdf_get_file_status_request.rb +13 -0
- data/lib/apifreaks/types/pdf_get_file_status_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_get_file_status_response.rb +17 -0
- data/lib/apifreaks/types/pdf_get_task_status_request.rb +13 -0
- data/lib/apifreaks/types/pdf_get_task_status_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_get_task_status_response.rb +29 -0
- data/lib/apifreaks/types/pdf_linearize_request.rb +23 -0
- data/lib/apifreaks/types/pdf_linearize_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_linearize_response.rb +11 -0
- data/lib/apifreaks/types/pdf_list_files_request.rb +11 -0
- data/lib/apifreaks/types/pdf_list_files_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_list_files_response.rb +9 -0
- data/lib/apifreaks/types/pdf_list_files_response_files_item.rb +17 -0
- data/lib/apifreaks/types/pdf_merge_request.rb +23 -0
- data/lib/apifreaks/types/pdf_merge_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_merge_response.rb +11 -0
- data/lib/apifreaks/types/pdf_remove_pages_request.rb +25 -0
- data/lib/apifreaks/types/pdf_remove_pages_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_remove_pages_response.rb +11 -0
- data/lib/apifreaks/types/pdf_restrict_request.rb +31 -0
- data/lib/apifreaks/types/pdf_restrict_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_restrict_request_restrictions_item.rb +18 -0
- data/lib/apifreaks/types/pdf_restrict_response.rb +11 -0
- data/lib/apifreaks/types/pdf_rotate_request.rb +27 -0
- data/lib/apifreaks/types/pdf_rotate_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_rotate_response.rb +11 -0
- data/lib/apifreaks/types/pdf_split_request.rb +25 -0
- data/lib/apifreaks/types/pdf_split_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_split_response.rb +11 -0
- data/lib/apifreaks/types/pdf_unrestrict_request.rb +29 -0
- data/lib/apifreaks/types/pdf_unrestrict_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_unrestrict_response.rb +11 -0
- data/lib/apifreaks/types/pdf_upload_binary_request.rb +13 -0
- data/lib/apifreaks/types/pdf_upload_binary_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_upload_binary_response.rb +11 -0
- data/lib/apifreaks/types/pdf_upload_resources_request.rb +11 -0
- data/lib/apifreaks/types/pdf_upload_resources_request_format.rb +12 -0
- data/lib/apifreaks/types/pdf_upload_resources_response.rb +9 -0
- data/lib/apifreaks/types/pdf_upload_resources_response_files_item.rb +11 -0
- data/lib/apifreaks/types/phone_validate_request.rb +17 -0
- data/lib/apifreaks/types/phone_validate_request_format.rb +11 -0
- data/lib/apifreaks/types/phone_validate_response.rb +35 -0
- data/lib/apifreaks/types/phone_validate_response_formats.rb +16 -0
- data/lib/apifreaks/types/phone_validate_response_line_type.rb +22 -0
- data/lib/apifreaks/types/phone_validate_response_raw_input.rb +14 -0
- data/lib/apifreaks/types/proxy_authentication_required_error_body.rb +17 -0
- data/lib/apifreaks/types/readability_score_request.rb +15 -0
- data/lib/apifreaks/types/readability_score_request_target.rb +14 -0
- data/lib/apifreaks/types/readability_score_response.rb +13 -0
- data/lib/apifreaks/types/readability_score_response_readability_scores.rb +21 -0
- data/lib/apifreaks/types/readability_score_response_readability_scores_automated_readability_index.rb +12 -0
- data/lib/apifreaks/types/readability_score_response_readability_scores_coleman_liau_index.rb +12 -0
- data/lib/apifreaks/types/readability_score_response_readability_scores_flesch_kincaid_grade.rb +12 -0
- data/lib/apifreaks/types/readability_score_response_readability_scores_flesch_reading_ease.rb +12 -0
- data/lib/apifreaks/types/readability_score_response_readability_scores_gunning_fog.rb +12 -0
- data/lib/apifreaks/types/readability_score_response_readability_scores_smog_index.rb +12 -0
- data/lib/apifreaks/types/readability_score_response_sentence_readability_item.rb +13 -0
- data/lib/apifreaks/types/readability_score_response_sentence_readability_item_readability_level.rb +15 -0
- data/lib/apifreaks/types/request_timeout_error_body.rb +17 -0
- data/lib/apifreaks/types/screenshot_capture_request.rb +147 -0
- data/lib/apifreaks/types/screenshot_capture_request_file_type.rb +17 -0
- data/lib/apifreaks/types/screenshot_capture_request_output.rb +12 -0
- data/lib/apifreaks/types/screenshot_capture_request_scroll_speed.rb +13 -0
- data/lib/apifreaks/types/screenshot_capture_request_wait_for_event.rb +13 -0
- data/lib/apifreaks/types/service_unavailable_error_body.rb +17 -0
- data/lib/apifreaks/types/subdomains_lookup_request.rb +21 -0
- data/lib/apifreaks/types/subdomains_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/subdomains_lookup_request_status.rb +12 -0
- data/lib/apifreaks/types/subdomains_lookup_response.rb +21 -0
- data/lib/apifreaks/types/subdomains_lookup_response_subdomains_item.rb +15 -0
- data/lib/apifreaks/types/swift_code_find_request.rb +17 -0
- data/lib/apifreaks/types/swift_code_find_request_format.rb +12 -0
- data/lib/apifreaks/types/swift_code_lookup_request.rb +13 -0
- data/lib/apifreaks/types/swift_code_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/swift_code_lookup_response.rb +21 -0
- data/lib/apifreaks/types/timezone_convert_request.rb +41 -0
- data/lib/apifreaks/types/timezone_convert_request_format.rb +12 -0
- data/lib/apifreaks/types/timezone_convert_response.rb +15 -0
- data/lib/apifreaks/types/timezone_lookup_request.rb +29 -0
- data/lib/apifreaks/types/timezone_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/timezone_lookup_request_lang.rb +19 -0
- data/lib/apifreaks/types/timezone_lookup_response.rb +17 -0
- data/lib/apifreaks/types/timezone_lookup_response_airport_details.rb +31 -0
- data/lib/apifreaks/types/timezone_lookup_response_lo_code_details.rb +23 -0
- data/lib/apifreaks/types/timezone_lookup_response_location.rb +39 -0
- data/lib/apifreaks/types/timezone_lookup_response_time_zone.rb +55 -0
- data/lib/apifreaks/types/timezone_lookup_response_time_zone_dst_end.rb +19 -0
- data/lib/apifreaks/types/timezone_lookup_response_time_zone_dst_start.rb +19 -0
- data/lib/apifreaks/types/too_many_requests_error_body.rb +17 -0
- data/lib/apifreaks/types/unauthorized_error_body.rb +17 -0
- data/lib/apifreaks/types/unsupported_media_type_error_body.rb +17 -0
- data/lib/apifreaks/types/user_agent_lookup_request.rb +11 -0
- data/lib/apifreaks/types/user_agent_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/user_agent_lookup_response.rb +23 -0
- data/lib/apifreaks/types/user_agent_lookup_response_device.rb +15 -0
- data/lib/apifreaks/types/user_agent_lookup_response_engine.rb +15 -0
- data/lib/apifreaks/types/user_agent_lookup_response_operating_system.rb +17 -0
- data/lib/apifreaks/types/vat_rate_by_country_request.rb +15 -0
- data/lib/apifreaks/types/vat_rate_by_country_request_format.rb +12 -0
- data/lib/apifreaks/types/vat_rate_by_country_response_item.rb +25 -0
- data/lib/apifreaks/types/vat_rate_by_ip_request.rb +13 -0
- data/lib/apifreaks/types/vat_rate_by_ip_request_format.rb +12 -0
- data/lib/apifreaks/types/vat_rate_by_ip_response_item.rb +23 -0
- data/lib/apifreaks/types/vat_supported_countries_request.rb +13 -0
- data/lib/apifreaks/types/vat_supported_countries_request_format.rb +12 -0
- data/lib/apifreaks/types/vat_supported_countries_request_type.rb +13 -0
- data/lib/apifreaks/types/vat_supported_countries_response.rb +9 -0
- data/lib/apifreaks/types/vat_supported_countries_response_vat_supported_countries_and_states_item.rb +13 -0
- data/lib/apifreaks/types/vat_validate_request.rb +15 -0
- data/lib/apifreaks/types/vat_validate_request_format.rb +12 -0
- data/lib/apifreaks/types/vat_validate_response.rb +21 -0
- data/lib/apifreaks/types/vat_validate_response_company.rb +11 -0
- data/lib/apifreaks/types/vat_validate_response_validation.rb +13 -0
- data/lib/apifreaks/types/weak_words_detect_request.rb +11 -0
- data/lib/apifreaks/types/weak_words_detect_response.rb +9 -0
- data/lib/apifreaks/types/weak_words_detect_response_weak_words_item.rb +11 -0
- data/lib/apifreaks/types/weather_forecast_request.rb +29 -0
- data/lib/apifreaks/types/weather_forecast_request_format.rb +12 -0
- data/lib/apifreaks/types/weather_forecast_request_precision.rb +13 -0
- data/lib/apifreaks/types/weather_forecast_response.rb +11 -0
- data/lib/apifreaks/types/weather_forecast_response_forecast_value.rb +15 -0
- data/lib/apifreaks/types/weather_forecast_response_forecast_value_astronomy.rb +34 -0
- data/lib/apifreaks/types/weather_forecast_response_forecast_value_daily.rb +76 -0
- data/lib/apifreaks/types/weather_forecast_response_forecast_value_hourly_item.rb +59 -0
- data/lib/apifreaks/types/weather_forecast_response_forecast_value_minutely_item.rb +43 -0
- data/lib/apifreaks/types/weather_forecast_response_location.rb +16 -0
- data/lib/apifreaks/types/weather_forecast_response_location_city.rb +27 -0
- data/lib/apifreaks/types/weather_forecast_response_location_continent_code.rb +43 -0
- data/lib/apifreaks/types/weather_forecast_response_location_zero.rb +25 -0
- data/lib/apifreaks/types/weather_time_series_request.rb +27 -0
- data/lib/apifreaks/types/weather_time_series_request_format.rb +12 -0
- data/lib/apifreaks/types/weather_time_series_request_precision.rb +12 -0
- data/lib/apifreaks/types/weather_time_series_response.rb +11 -0
- data/lib/apifreaks/types/weather_time_series_response_historical_value.rb +13 -0
- data/lib/apifreaks/types/weather_time_series_response_historical_value_astronomy.rb +34 -0
- data/lib/apifreaks/types/weather_time_series_response_historical_value_daily.rb +66 -0
- data/lib/apifreaks/types/weather_time_series_response_historical_value_hourly_item.rb +51 -0
- data/lib/apifreaks/types/weather_time_series_response_location.rb +16 -0
- data/lib/apifreaks/types/weather_time_series_response_location_city.rb +27 -0
- data/lib/apifreaks/types/weather_time_series_response_location_continent_code.rb +43 -0
- data/lib/apifreaks/types/weather_time_series_response_location_zero.rb +25 -0
- data/lib/apifreaks/types/web_scrape_request.rb +29 -0
- data/lib/apifreaks/types/web_scrape_request_body.rb +13 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url.rb +13 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_cookies_item.rb +11 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item.rb +51 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_block_element.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_click.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_click_button_by_value.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_click_button_by_value_click_button_by_value.rb +11 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_click_if_exist.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_conditional_check.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_enter.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_extract.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_extract_extract.rb +14 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_fill.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_fill_fill.rb +11 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_fill_image_captcha.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_general_image_3f2a35b8ee.rb +17 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_general_image_captcha.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_general_image_f7e051f121.rb +16 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_js_exe.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_move_to_relative_tab.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_new_tab.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_resolve_audio_captcha.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_saveimage.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_screenshot.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_screenshot_screenshot.rb +14 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_select.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_select_select.rb +11 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_switch_to_iframe.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_switch_to_parent_frame.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_wait.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_block_url_instructions_item_wait_for.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_one.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_one_instructions_item.rb +17 -0
- data/lib/apifreaks/types/web_scrape_request_body_one_instructions_item_extract.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_one_instructions_item_extract_extract.rb +12 -0
- data/lib/apifreaks/types/web_scrape_request_body_one_instructions_item_get_form.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_one_instructions_item_get_form_get_form.rb +12 -0
- data/lib/apifreaks/types/web_scrape_request_body_one_instructions_item_get_form_get_form_data.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_one_instructions_item_get_page.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_one_instructions_item_get_page_get_page.rb +14 -0
- data/lib/apifreaks/types/web_scrape_request_body_one_instructions_item_post_form.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_body_one_instructions_item_post_form_post_form.rb +12 -0
- data/lib/apifreaks/types/web_scrape_request_body_one_instructions_item_post_form_post_form_data.rb +9 -0
- data/lib/apifreaks/types/web_scrape_request_format.rb +11 -0
- data/lib/apifreaks/types/web_scrape_request_proxy.rb +15 -0
- data/lib/apifreaks/types/web_scrape_response.rb +9 -0
- data/lib/apifreaks/types/zipcode_distance_match_request.rb +19 -0
- data/lib/apifreaks/types/zipcode_distance_match_request_format.rb +12 -0
- data/lib/apifreaks/types/zipcode_distance_match_request_unit.rb +16 -0
- data/lib/apifreaks/types/zipcode_distance_match_response.rb +11 -0
- data/lib/apifreaks/types/zipcode_distance_match_response_results_item.rb +13 -0
- data/lib/apifreaks/types/zipcode_distance_request.rb +23 -0
- data/lib/apifreaks/types/zipcode_distance_request_format.rb +12 -0
- data/lib/apifreaks/types/zipcode_distance_request_unit.rb +16 -0
- data/lib/apifreaks/types/zipcode_distance_response.rb +11 -0
- data/lib/apifreaks/types/zipcode_distance_response_results_item.rb +11 -0
- data/lib/apifreaks/types/zipcode_lookup_request.rb +15 -0
- data/lib/apifreaks/types/zipcode_lookup_request_format.rb +12 -0
- data/lib/apifreaks/types/zipcode_lookup_response.rb +9 -0
- data/lib/apifreaks/types/zipcode_lookup_response_results_item.rb +23 -0
- data/lib/apifreaks/types/zipcode_search_by_city_request.rb +19 -0
- data/lib/apifreaks/types/zipcode_search_by_city_request_format.rb +12 -0
- data/lib/apifreaks/types/zipcode_search_by_city_response.rb +17 -0
- data/lib/apifreaks/types/zipcode_search_by_radius_request.rb +25 -0
- data/lib/apifreaks/types/zipcode_search_by_radius_request_format.rb +12 -0
- data/lib/apifreaks/types/zipcode_search_by_radius_request_unit.rb +16 -0
- data/lib/apifreaks/types/zipcode_search_by_radius_response.rb +17 -0
- data/lib/apifreaks/types/zipcode_search_by_radius_response_results_item.rb +19 -0
- data/lib/apifreaks/types/zipcode_search_by_region_request.rb +17 -0
- data/lib/apifreaks/types/zipcode_search_by_region_request_format.rb +12 -0
- data/lib/apifreaks/types/zipcode_search_by_region_response.rb +17 -0
- data/lib/apifreaks/version.rb +5 -0
- data/lib/apifreaks.rb +789 -0
- data/reference.md +11780 -0
- metadata +840 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apifreaks
|
|
4
|
+
module Errors
|
|
5
|
+
class ClientError < ResponseError
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class UnauthorizedError < ClientError
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class ForbiddenError < ClientError
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class NotFoundError < ClientError
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apifreaks
|
|
4
|
+
module Errors
|
|
5
|
+
class ResponseError < ApiError
|
|
6
|
+
attr_reader :code
|
|
7
|
+
|
|
8
|
+
def initialize(msg, code:)
|
|
9
|
+
@code = code
|
|
10
|
+
super(msg)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def inspect
|
|
14
|
+
"#<#{self.class.name} @code=#{code} @body=#{message}>"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Returns the most appropriate error class for the given code.
|
|
18
|
+
#
|
|
19
|
+
# @return [Class]
|
|
20
|
+
def self.subclass_for_code(code)
|
|
21
|
+
case code
|
|
22
|
+
when 300..399
|
|
23
|
+
RedirectError
|
|
24
|
+
when 401
|
|
25
|
+
UnauthorizedError
|
|
26
|
+
when 403
|
|
27
|
+
ForbiddenError
|
|
28
|
+
when 404
|
|
29
|
+
NotFoundError
|
|
30
|
+
when 400..499
|
|
31
|
+
ClientError
|
|
32
|
+
when 503
|
|
33
|
+
ServiceUnavailableError
|
|
34
|
+
when 500..599
|
|
35
|
+
ServerError
|
|
36
|
+
else
|
|
37
|
+
ResponseError
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apifreaks
|
|
4
|
+
module Internal
|
|
5
|
+
module Http
|
|
6
|
+
# @api private
|
|
7
|
+
class BaseRequest
|
|
8
|
+
attr_reader :base_url, :path, :method, :headers, :query, :request_options
|
|
9
|
+
|
|
10
|
+
# @param base_url [String] The base URL for the request
|
|
11
|
+
# @param path [String] The path for the request
|
|
12
|
+
# @param method [String] The HTTP method for the request (:get, :post, etc.)
|
|
13
|
+
# @param headers [Hash] Additional headers for the request (optional)
|
|
14
|
+
# @param query [Hash] Query parameters for the request (optional)
|
|
15
|
+
# @param request_options [Apifreaks::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
16
|
+
def initialize(base_url:, path:, method:, headers: {}, query: {}, request_options: {})
|
|
17
|
+
@base_url = base_url
|
|
18
|
+
@path = path
|
|
19
|
+
@method = method
|
|
20
|
+
@headers = headers
|
|
21
|
+
@query = query
|
|
22
|
+
@request_options = request_options
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# @return [Hash] The query parameters merged with additional query parameters from request options.
|
|
26
|
+
def encode_query
|
|
27
|
+
additional_query = @request_options&.dig(:additional_query_parameters) || @request_options&.dig("additional_query_parameters") || {}
|
|
28
|
+
@query.merge(additional_query)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Child classes should implement:
|
|
32
|
+
# - encode_headers: Returns the encoded HTTP request headers.
|
|
33
|
+
# - encode_body: Returns the encoded HTTP request body.
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
# Merges additional_headers from request_options into sdk_headers, filtering out
|
|
38
|
+
# any keys that collide with SDK-set or client-protected headers (case-insensitive).
|
|
39
|
+
# @param sdk_headers [Hash] Headers set by the SDK for this request type.
|
|
40
|
+
# @param protected_keys [Array<String>] Additional header keys that must not be overridden.
|
|
41
|
+
# @return [Hash] The merged headers.
|
|
42
|
+
def merge_additional_headers(sdk_headers, protected_keys: [])
|
|
43
|
+
additional_headers = @request_options&.dig(:additional_headers) || @request_options&.dig("additional_headers") || {}
|
|
44
|
+
all_protected = (sdk_headers.keys + protected_keys).to_set { |k| k.to_s.downcase }
|
|
45
|
+
filtered = additional_headers.reject { |key, _| all_protected.include?(key.to_s.downcase) }
|
|
46
|
+
sdk_headers.merge(filtered)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apifreaks
|
|
4
|
+
module Internal
|
|
5
|
+
module Http
|
|
6
|
+
# @api private
|
|
7
|
+
class RawClient
|
|
8
|
+
# Default HTTP status codes that trigger a retry
|
|
9
|
+
RETRYABLE_STATUSES = [408, 429, 500, 502, 503, 504, 521, 522, 524].freeze
|
|
10
|
+
# Initial delay between retries in seconds
|
|
11
|
+
INITIAL_RETRY_DELAY = 0.5
|
|
12
|
+
# Maximum delay between retries in seconds
|
|
13
|
+
MAX_RETRY_DELAY = 60.0
|
|
14
|
+
# Jitter factor for randomizing retry delays (20%)
|
|
15
|
+
JITTER_FACTOR = 0.2
|
|
16
|
+
|
|
17
|
+
# @return [String] The base URL for requests
|
|
18
|
+
attr_reader :base_url
|
|
19
|
+
|
|
20
|
+
# @param base_url [String] The base url for the request.
|
|
21
|
+
# @param max_retries [Integer] The number of times to retry a failed request, defaults to 2.
|
|
22
|
+
# @param timeout [Float] The timeout for the request, defaults to 60.0 seconds.
|
|
23
|
+
# @param headers [Hash] The headers for the request.
|
|
24
|
+
def initialize(base_url:, max_retries: 2, timeout: 60.0, headers: {})
|
|
25
|
+
@base_url = base_url
|
|
26
|
+
@max_retries = max_retries
|
|
27
|
+
@timeout = timeout
|
|
28
|
+
@default_headers = {
|
|
29
|
+
"X-Fern-Language": "Ruby",
|
|
30
|
+
"X-Fern-SDK-Name": "apifreaks",
|
|
31
|
+
"X-Fern-SDK-Version": "0.0.1"
|
|
32
|
+
}.merge(headers)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# @param request [Apifreaks::Internal::Http::BaseRequest] The HTTP request.
|
|
36
|
+
# @return [HTTP::Response] The HTTP response.
|
|
37
|
+
def send(request)
|
|
38
|
+
url = build_url(request)
|
|
39
|
+
attempt = 0
|
|
40
|
+
response = nil
|
|
41
|
+
|
|
42
|
+
loop do
|
|
43
|
+
http_request = build_http_request(
|
|
44
|
+
url:,
|
|
45
|
+
method: request.method,
|
|
46
|
+
headers: request.encode_headers(protected_keys: @default_headers.keys),
|
|
47
|
+
body: request.encode_body
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
conn = connect(url)
|
|
51
|
+
conn.open_timeout = @timeout
|
|
52
|
+
conn.read_timeout = @timeout
|
|
53
|
+
conn.write_timeout = @timeout
|
|
54
|
+
conn.continue_timeout = @timeout
|
|
55
|
+
|
|
56
|
+
response = conn.request(http_request)
|
|
57
|
+
|
|
58
|
+
break unless should_retry?(response, attempt)
|
|
59
|
+
|
|
60
|
+
delay = retry_delay(response, attempt)
|
|
61
|
+
sleep(delay)
|
|
62
|
+
attempt += 1
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
response
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Determines if a request should be retried based on the response status code.
|
|
69
|
+
# @param response [Net::HTTPResponse] The HTTP response.
|
|
70
|
+
# @param attempt [Integer] The current retry attempt (0-indexed).
|
|
71
|
+
# @return [Boolean] Whether the request should be retried.
|
|
72
|
+
def should_retry?(response, attempt)
|
|
73
|
+
return false if attempt >= @max_retries
|
|
74
|
+
|
|
75
|
+
status = response.code.to_i
|
|
76
|
+
RETRYABLE_STATUSES.include?(status)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Calculates the delay before the next retry attempt using exponential backoff with jitter.
|
|
80
|
+
# Respects Retry-After header if present.
|
|
81
|
+
# @param response [Net::HTTPResponse] The HTTP response.
|
|
82
|
+
# @param attempt [Integer] The current retry attempt (0-indexed).
|
|
83
|
+
# @return [Float] The delay in seconds before the next retry.
|
|
84
|
+
def retry_delay(response, attempt)
|
|
85
|
+
# Check for Retry-After header (can be seconds or HTTP date)
|
|
86
|
+
retry_after = response["Retry-After"]
|
|
87
|
+
if retry_after
|
|
88
|
+
delay = parse_retry_after(retry_after)
|
|
89
|
+
return [delay, MAX_RETRY_DELAY].min if delay&.positive?
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Exponential backoff with jitter: base_delay * 2^attempt
|
|
93
|
+
base_delay = INITIAL_RETRY_DELAY * (2**attempt)
|
|
94
|
+
add_jitter([base_delay, MAX_RETRY_DELAY].min)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Parses the Retry-After header value.
|
|
98
|
+
# @param value [String] The Retry-After header value (seconds or HTTP date).
|
|
99
|
+
# @return [Float, nil] The delay in seconds, or nil if parsing fails.
|
|
100
|
+
def parse_retry_after(value)
|
|
101
|
+
# Try parsing as integer (seconds)
|
|
102
|
+
seconds = Integer(value, exception: false)
|
|
103
|
+
return seconds.to_f if seconds
|
|
104
|
+
|
|
105
|
+
# Try parsing as HTTP date
|
|
106
|
+
begin
|
|
107
|
+
retry_time = Time.httpdate(value)
|
|
108
|
+
delay = retry_time - Time.now
|
|
109
|
+
delay.positive? ? delay : nil
|
|
110
|
+
rescue ArgumentError
|
|
111
|
+
nil
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Adds random jitter to a delay value.
|
|
116
|
+
# @param delay [Float] The base delay in seconds.
|
|
117
|
+
# @return [Float] The delay with jitter applied.
|
|
118
|
+
def add_jitter(delay)
|
|
119
|
+
jitter = delay * JITTER_FACTOR * (rand - 0.5) * 2
|
|
120
|
+
[delay + jitter, 0].max
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
LOCALHOST_HOSTS = %w[localhost 127.0.0.1 [::1]].freeze
|
|
124
|
+
|
|
125
|
+
# @param request [Apifreaks::Internal::Http::BaseRequest] The HTTP request.
|
|
126
|
+
# @return [URI::Generic] The URL.
|
|
127
|
+
def build_url(request)
|
|
128
|
+
encoded_query = request.encode_query
|
|
129
|
+
|
|
130
|
+
# If the path is already an absolute URL, use it directly
|
|
131
|
+
if request.path.start_with?("http://", "https://")
|
|
132
|
+
url = request.path
|
|
133
|
+
url = "#{url}?#{encode_query(encoded_query)}" if encoded_query&.any?
|
|
134
|
+
parsed = URI.parse(url)
|
|
135
|
+
validate_https!(parsed)
|
|
136
|
+
return parsed
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
path = request.path.start_with?("/") ? request.path[1..] : request.path
|
|
140
|
+
base = request.base_url || @base_url
|
|
141
|
+
url = "#{base.chomp("/")}/#{path}"
|
|
142
|
+
url = "#{url}?#{encode_query(encoded_query)}" if encoded_query&.any?
|
|
143
|
+
parsed = URI.parse(url)
|
|
144
|
+
validate_https!(parsed)
|
|
145
|
+
parsed
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# Raises if the URL uses http:// for a non-localhost host, which would
|
|
149
|
+
# send authentication credentials in plaintext.
|
|
150
|
+
# @param url [URI::Generic] The parsed URL.
|
|
151
|
+
def validate_https!(url)
|
|
152
|
+
return if url.scheme != "http"
|
|
153
|
+
return if LOCALHOST_HOSTS.include?(url.host)
|
|
154
|
+
|
|
155
|
+
raise ArgumentError,
|
|
156
|
+
"Refusing to send request to non-HTTPS URL: #{url}. " \
|
|
157
|
+
"HTTP is only allowed for localhost. Use HTTPS or pass a localhost URL."
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
# @param url [URI::Generic] The url to the resource.
|
|
161
|
+
# @param method [String] The HTTP method to use.
|
|
162
|
+
# @param headers [Hash] The headers for the request.
|
|
163
|
+
# @param body [String, nil] The body for the request.
|
|
164
|
+
# @return [HTTP::Request] The HTTP request.
|
|
165
|
+
def build_http_request(url:, method:, headers: {}, body: nil)
|
|
166
|
+
request = Net::HTTPGenericRequest.new(
|
|
167
|
+
method,
|
|
168
|
+
!body.nil?,
|
|
169
|
+
method != "HEAD",
|
|
170
|
+
url
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
request_headers = @default_headers.merge(headers)
|
|
174
|
+
request_headers.each { |name, value| request[name] = value }
|
|
175
|
+
request.body = body if body
|
|
176
|
+
|
|
177
|
+
request
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
# @param query [Hash] The query for the request.
|
|
181
|
+
# @return [String, nil] The encoded query.
|
|
182
|
+
def encode_query(query)
|
|
183
|
+
query.to_h.empty? ? nil : URI.encode_www_form(query)
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# @param url [URI::Generic] The url to connect to.
|
|
187
|
+
# @return [Net::HTTP] The HTTP connection.
|
|
188
|
+
def connect(url)
|
|
189
|
+
is_https = (url.scheme == "https")
|
|
190
|
+
|
|
191
|
+
port = if url.port
|
|
192
|
+
url.port
|
|
193
|
+
elsif is_https
|
|
194
|
+
Net::HTTP.https_default_port
|
|
195
|
+
else
|
|
196
|
+
Net::HTTP.http_default_port
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
http = Net::HTTP.new(url.host, port)
|
|
200
|
+
http.use_ssl = is_https
|
|
201
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER if is_https
|
|
202
|
+
# NOTE: We handle retries at the application level with HTTP status code awareness,
|
|
203
|
+
# so we set max_retries to 0 to disable Net::HTTP's built-in network-level retries.
|
|
204
|
+
http.max_retries = 0
|
|
205
|
+
http
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# @return [String]
|
|
209
|
+
def inspect
|
|
210
|
+
"#<#{self.class.name}:0x#{object_id.to_s(16)} @base_url=#{@base_url.inspect}>"
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apifreaks
|
|
4
|
+
module Internal
|
|
5
|
+
class CursorItemIterator < ItemIterator
|
|
6
|
+
# Instantiates a CursorItemIterator, an Enumerable class which wraps calls to a cursor-based paginated API and yields individual items from it.
|
|
7
|
+
#
|
|
8
|
+
# @param initial_cursor [String] The initial cursor to use when iterating, if any.
|
|
9
|
+
# @param cursor_field [Symbol] The field in API responses to extract the next cursor from.
|
|
10
|
+
# @param item_field [Symbol] The field in API responses to extract the items to iterate over.
|
|
11
|
+
# @param block [Proc] A block which is responsible for receiving a cursor to use and returning the given page from the API.
|
|
12
|
+
# @return [Apifreaks::Internal::CursorItemIterator]
|
|
13
|
+
def initialize(initial_cursor:, cursor_field:, item_field:, &)
|
|
14
|
+
super()
|
|
15
|
+
@item_field = item_field
|
|
16
|
+
@page_iterator = CursorPageIterator.new(initial_cursor:, cursor_field:, &)
|
|
17
|
+
@page = nil
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Returns the CursorPageIterator mediating access to the underlying API.
|
|
21
|
+
#
|
|
22
|
+
# @return [Apifreaks::Internal::CursorPageIterator]
|
|
23
|
+
def pages
|
|
24
|
+
@page_iterator
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apifreaks
|
|
4
|
+
module Internal
|
|
5
|
+
class CursorPageIterator
|
|
6
|
+
include Enumerable
|
|
7
|
+
|
|
8
|
+
# The raw HTTP response from the most recent page response.
|
|
9
|
+
# @return [Net::HTTPResponse, nil]
|
|
10
|
+
attr_reader :http_response
|
|
11
|
+
|
|
12
|
+
# Instantiates a CursorPageIterator, an Enumerable class which wraps calls to a cursor-based paginated API and yields pages of items.
|
|
13
|
+
#
|
|
14
|
+
# @param initial_cursor [String] The initial cursor to use when iterating, if any.
|
|
15
|
+
# @param cursor_field [Symbol] The name of the field in API responses to extract the next cursor from.
|
|
16
|
+
# @param block [Proc] A block which is responsible for receiving a cursor to use and returning the given page from the API.
|
|
17
|
+
# The block should return a two-element array: [parsed_page, raw_http_response].
|
|
18
|
+
# @return [Apifreaks::Internal::CursorPageIterator]
|
|
19
|
+
def initialize(initial_cursor:, cursor_field:, &block)
|
|
20
|
+
@need_initial_load = initial_cursor.nil?
|
|
21
|
+
@cursor = initial_cursor
|
|
22
|
+
@cursor_field = cursor_field
|
|
23
|
+
@get_next_page = block
|
|
24
|
+
@http_response = nil
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Iterates over each page returned by the API.
|
|
28
|
+
#
|
|
29
|
+
# @param block [Proc] The block which each retrieved page is yielded to.
|
|
30
|
+
# @return [NilClass]
|
|
31
|
+
def each(&block)
|
|
32
|
+
while (page = next_page)
|
|
33
|
+
block.call(page)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Whether another page will be available from the API.
|
|
38
|
+
#
|
|
39
|
+
# @return [Boolean]
|
|
40
|
+
def next?
|
|
41
|
+
@need_initial_load || !@cursor.nil?
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Retrieves the next page from the API.
|
|
45
|
+
#
|
|
46
|
+
# @return [Object, nil]
|
|
47
|
+
def next_page
|
|
48
|
+
return if !@need_initial_load && @cursor.nil?
|
|
49
|
+
|
|
50
|
+
@need_initial_load = false
|
|
51
|
+
result = @get_next_page.call(@cursor)
|
|
52
|
+
if result.is_a?(Array)
|
|
53
|
+
fetched_page, raw_response = result
|
|
54
|
+
@http_response = raw_response
|
|
55
|
+
else
|
|
56
|
+
fetched_page = result
|
|
57
|
+
end
|
|
58
|
+
@cursor = fetched_page.send(@cursor_field)
|
|
59
|
+
fetched_page
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apifreaks
|
|
4
|
+
module Internal
|
|
5
|
+
class ItemIterator
|
|
6
|
+
include Enumerable
|
|
7
|
+
|
|
8
|
+
# The raw HTTP response from the most recent page response.
|
|
9
|
+
# @return [Net::HTTPResponse, nil]
|
|
10
|
+
def http_response
|
|
11
|
+
@page_iterator&.http_response
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Iterates over each item returned by the API.
|
|
15
|
+
#
|
|
16
|
+
# @param block [Proc] The block which each retrieved item is yielded to.
|
|
17
|
+
# @return [NilClass]
|
|
18
|
+
def each(&block)
|
|
19
|
+
while (item = next_element)
|
|
20
|
+
block.call(item)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Whether another item will be available from the API.
|
|
25
|
+
#
|
|
26
|
+
# @return [Boolean]
|
|
27
|
+
def next?
|
|
28
|
+
load_next_page if @page.nil?
|
|
29
|
+
return false if @page.nil?
|
|
30
|
+
|
|
31
|
+
return true if any_items_in_cached_page?
|
|
32
|
+
|
|
33
|
+
load_next_page
|
|
34
|
+
any_items_in_cached_page?
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Retrieves the next item from the API.
|
|
38
|
+
def next_element
|
|
39
|
+
item = next_item_from_cached_page
|
|
40
|
+
return item if item
|
|
41
|
+
|
|
42
|
+
load_next_page
|
|
43
|
+
next_item_from_cached_page
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def next_item_from_cached_page
|
|
49
|
+
return unless @page
|
|
50
|
+
|
|
51
|
+
@page.send(@item_field).shift
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def any_items_in_cached_page?
|
|
55
|
+
return false unless @page
|
|
56
|
+
|
|
57
|
+
!@page.send(@item_field).empty?
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def load_next_page
|
|
61
|
+
@page = @page_iterator.next_page
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apifreaks
|
|
4
|
+
module Internal
|
|
5
|
+
class OffsetItemIterator < ItemIterator
|
|
6
|
+
# Instantiates an OffsetItemIterator, an Enumerable class which wraps calls to an offset-based paginated API and yields the individual items from it.
|
|
7
|
+
#
|
|
8
|
+
# @param initial_page [Integer] The initial page or offset to start from when iterating.
|
|
9
|
+
# @param item_field [Symbol] The name of the field in API responses to extract the items to iterate over.
|
|
10
|
+
# @param has_next_field [Symbol] The name of the field in API responses containing a boolean of whether another page exists.
|
|
11
|
+
# @param step [Boolean] If true, treats the page number as a true offset (i.e. increments the page number by the number of items returned from each call rather than just 1)
|
|
12
|
+
# @param block [Proc] A block which is responsible for receiving a page number to use and returning the given page from the API.
|
|
13
|
+
#
|
|
14
|
+
# @return [Apifreaks::Internal::OffsetItemIterator]
|
|
15
|
+
def initialize(initial_page:, item_field:, has_next_field:, step:, &)
|
|
16
|
+
super()
|
|
17
|
+
@item_field = item_field
|
|
18
|
+
@page_iterator = OffsetPageIterator.new(initial_page:, item_field:, has_next_field:, step:, &)
|
|
19
|
+
@page = nil
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Returns the OffsetPageIterator that is mediating access to the underlying API.
|
|
23
|
+
#
|
|
24
|
+
# @return [Apifreaks::Internal::OffsetPageIterator]
|
|
25
|
+
def pages
|
|
26
|
+
@page_iterator
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apifreaks
|
|
4
|
+
module Internal
|
|
5
|
+
class OffsetPageIterator
|
|
6
|
+
include Enumerable
|
|
7
|
+
|
|
8
|
+
# The raw HTTP response from the most recent page response.
|
|
9
|
+
# @return [Net::HTTPResponse, nil]
|
|
10
|
+
attr_reader :http_response
|
|
11
|
+
|
|
12
|
+
# Instantiates an OffsetPageIterator, an Enumerable class which wraps calls to an offset-based paginated API and yields pages of items from it.
|
|
13
|
+
#
|
|
14
|
+
# @param initial_page [Integer] The initial page to use when iterating, if any.
|
|
15
|
+
# @param item_field [Symbol] The field to pull the list of items to iterate over.
|
|
16
|
+
# @param has_next_field [Symbol] The field to pull the boolean of whether a next page exists from, if any.
|
|
17
|
+
# @param step [Boolean] If true, treats the page number as a true offset (i.e. increments the page number by the number of items returned from each call rather than just 1)
|
|
18
|
+
# @param block [Proc] A block which is responsible for receiving a page number to use and returning the given page from the API.
|
|
19
|
+
# The block should return a two-element array: [parsed_page, raw_http_response].
|
|
20
|
+
# @return [Apifreaks::Internal::OffsetPageIterator]
|
|
21
|
+
def initialize(initial_page:, item_field:, has_next_field:, step:, &block)
|
|
22
|
+
@page_number = initial_page || (step ? 0 : 1)
|
|
23
|
+
@item_field = item_field
|
|
24
|
+
@has_next_field = has_next_field
|
|
25
|
+
@step = step
|
|
26
|
+
@get_next_page = block
|
|
27
|
+
|
|
28
|
+
# A cache of whether the API has another page, if it gives us that information...
|
|
29
|
+
@next_page = nil
|
|
30
|
+
# ...or the actual next page, preloaded, if it doesn't.
|
|
31
|
+
@has_next_page = nil
|
|
32
|
+
|
|
33
|
+
@http_response = nil
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Iterates over each page returned by the API.
|
|
37
|
+
#
|
|
38
|
+
# @param block [Proc] The block which each retrieved page is yielded to.
|
|
39
|
+
# @return [NilClass]
|
|
40
|
+
def each(&block)
|
|
41
|
+
while (page = next_page)
|
|
42
|
+
block.call(page)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Whether another page will be available from the API.
|
|
47
|
+
#
|
|
48
|
+
# @return [Boolean]
|
|
49
|
+
def next?
|
|
50
|
+
return @has_next_page unless @has_next_page.nil?
|
|
51
|
+
return true if @next_page
|
|
52
|
+
|
|
53
|
+
fetched_page = fetch_page(@page_number)
|
|
54
|
+
fetched_page_items = fetched_page&.send(@item_field)
|
|
55
|
+
if fetched_page_items.nil? || fetched_page_items.empty?
|
|
56
|
+
@has_next_page = false
|
|
57
|
+
else
|
|
58
|
+
@next_page = fetched_page
|
|
59
|
+
true
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Returns the next page from the API.
|
|
64
|
+
def next_page
|
|
65
|
+
return nil if @page_number.nil?
|
|
66
|
+
|
|
67
|
+
if @next_page
|
|
68
|
+
this_page = @next_page
|
|
69
|
+
@next_page = nil
|
|
70
|
+
else
|
|
71
|
+
this_page = fetch_page(@page_number)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
@has_next_page = this_page&.send(@has_next_field) if @has_next_field
|
|
75
|
+
|
|
76
|
+
items = this_page.send(@item_field)
|
|
77
|
+
if items.nil? || items.empty?
|
|
78
|
+
@page_number = nil
|
|
79
|
+
return nil
|
|
80
|
+
elsif @step
|
|
81
|
+
@page_number += items.length
|
|
82
|
+
else
|
|
83
|
+
@page_number += 1
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
this_page
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
private
|
|
90
|
+
|
|
91
|
+
def fetch_page(page_number)
|
|
92
|
+
result = @get_next_page.call(page_number)
|
|
93
|
+
if result.is_a?(Array)
|
|
94
|
+
fetched_page, raw_response = result
|
|
95
|
+
@http_response = raw_response
|
|
96
|
+
fetched_page
|
|
97
|
+
else
|
|
98
|
+
result
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|