Skip to main content

Python SDK for using AbstractAPI services

Project description

Abstract API Python SDK

Documentation Status

This is a simple and intuitive Python SDK for using AbstractAPI's services.

Current supported services:

All AbstractAPI services are supported by this SDK (16th. January 2023).

  • Email Validation
  • Phone Validation
  • VAT Validation/Calculation/Categories
  • IBAN Validation
  • IP Geolocation
  • Holidays Lookup
  • Exchange Rates Live/Convert/Historical
  • Company Enrichment
  • Timezone Current/Conversion
  • Avatars Generation
  • Website Screenshot
  • Website Scrape
  • Image Processing

Installation:

Install using pip:

pip install abstract-api

Getting Started:

To use any service, you must have your API key for that service.
To do that, you have two options:

  1. Export your API key as an environment variable:
    To export an API key for a service, you should follow this scheme:
    ABSTRACTAPI_{SERVICE_NAME}_API_KEY
    
    Note: SERVICE_NAME is all uppercase and underscore separated.
    For example, to export your Email Validation service API key, use the following environment variable name:
    ABSTRACTAPI_EMAIL_VALIDATION_API_KEY
    
    Example in terminal:
    export ABSTRACTAPI_AVATARS_API_KEY=612345e4a63044b47a1234567a53cc81
    
    In initialization, you don't have to pass an API key:
    from abstract_api import EmailValidation
    
    service = EmailValidation()
    
  2. Pass your API key during service class instantiation:
    Example:
    from abstract_api import EmailValidation
    
    service = EmailValidation(api_key="612345e4a63044b47a1234567a53cc81")
    

Note: If both options were used simultaneously, the API key that was passed to constructor is used.

Examples:

Notes:

  • Each service response is represented as a response class to provide an intuitive
    Pythonic way for handling responses.
  • All public interfaces of all services classes are modeled after AbstractAPI endpoints interfaces and responses.
    Example: Email Validation service endpoint expects the following parameters:
    • api_key
    • email
    • auto_correct
      The EmailValidation class's check() method expects the same parameters email and auto_correct.
      (No need to pass api_key. It is already passed during service instantiation.)

Recommended:

  • Check service class and service class response documentations.

  • Response fields used in examples are not only the ones. Check documentation to see
    all the capabilities.

  • Email Validation

    from abstract_api import EmailValidation
    service = EmailValidation(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("example@example.com")
    if response.is_valid_format:
       print("Email is valid!")
    if response.is_disposable_email:
       print("Email is disposable, not this time :( ")
    

    EmailValidation documentation can be found here
    EmailValidationResponse documentation can be found here

  • Phone Validation

    from abstract_api import PhoneValidation
    service = PhoneValidation(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("20123456789")
    if response.valid:
       print("Phone number is valid!")
    

    PhoneValidation documentation can be found here
    PhoneValidationResponse documentation can be found here

  • VAT Validation/Calculation/Inquiry

    from abstract_api import VAT
    service = VAT(api_key="612345e4a63044b47a1234567a53cc81")
    validation_response = service.check("SE556656688001")
    calculation_response = service.calculate(amount=100, country_code="EG")
    categories_response = service.categories("EG")
    

    VAT documentation can be found here
    VATValidationResponse documentation can be found here
    VATCalculationResponse documentation can be found here
    VATCategoriesResponse documentation can be found here

  • IBAN Validation

    from abstract_api import IBANValidation
    service = IBANValidation(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("BE71096123456769")
    if response.is_valid:
       print("IBAN is valid!")
    

    IBANValidation documentation can be found here
    IBANValidationResponse documentation can be found here

  • IP Geolocation

    from abstract_api import IPGeolocation
    service = IPGeolocation(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("156.215.70.7", fields=["city"])
    print("IP is in: ", response.city)
    

    IPGeolocation documentation can be found here
    IPGeolocationResponse documentation can be found here

  • Holidays Lookup

    from abstract_api import Holidays
    service = Holidays(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("EG")
    print(response.holidays)
    

    Holidays documentation can be found here
    HolidaysResponse documentation can be found here

  • Exchange Rates Live/Convert/Historical

    from abstract_api import ExchangeRates
    service = ExchangeRates(api_key="612345e4a63044b47a1234567a53cc81")
    live_response = service.live("USD", "EGP")
    conversion_response = service.convert("USD", "EGP", "2023-01-17", 150)
    historical_response = service.historical("USD", "2023-01-17", 150)
    

    ExchangeRates documentation can be found here
    LiveExchangeRatesResponse documentation can be found here
    HistoricalExchangeRatesResponse documentation can be found here
    ExchangeRatesConversionResponse documentation can be found here

  • Company Enrichment

    from abstract_api import CompanyEnrichment
    service = CompanyEnrichment(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("EG")
    print(response.holidays)
    

    CompanyEnrichment documentation can be found here
    CompanyEnrichmentResponse documentation can be found here

  • Timezone Current/Conversion

    from abstract_api import Timezone
    service = Timezone(api_key="612345e4a63044b47a1234567a53cc81")
    current_response = service.current("Cairo, Egypt", "82.111.111.111")
    conversion_response = service.convert((30.0594627, 31.1758899), "Cairo, Egypt")
    

    Timezone documentation can be found here
    CurrentTimezoneResponse documentation can be found here
    TimezoneConversionResponse documentation can be found here

  • Avatars Generation

    from abstract_api import Avatars
    service = Avatars(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.create("John Doe", 200)
    file = open("logo.png", "wb+")
    file.write(response.content)
    

    Avatars documentation can be found here
    AvatarsResponse documentation can be found here

  • Website Screenshot

    from abstract_api import WebsiteScreenshot
    service = WebsiteScreenshot(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.capture("https://www.github.com", capture_full_page=False)
    file = open("github-home-screenshot.png", "wb+")
    file.write(response.content)
    

    WebsiteScreenshot documentation can be found here
    WebsiteScreenshotResponse documentation can be found here

  • Website Scrape

    from abstract_api import WebScraping
    service = WebScraping(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.scrape("https://www.github.com", proxy_country="EG")
    file = open("github-home-screenshot.png", "wb+")
    file.write(response.content)
    

    WebScraping documentation can be found here
    WebScrapingResponse documentation can be found here

  • Image Processing

    from abstract_api import ImageProcessing
    from abstract_api.image_processing.strategies import Crop, Exact
    resize = Exact(height=200, width=200)
    service = ImageProcessing(api_key="612345e4a63044b47a1234567a53cc81")
    image = open('example.png', 'rb')
    response = service.upload(image, lossy=False, resize=resize)
    print(response.url)
    response = service.url("https://example.com/image.jpeg", lossy=False, resize=resize)
    print(response.url)
    

    ImageProcessing documentation can be found here
    ImageProcessingResponse documentation can be found here

Handling Errors

  1. If something wrong happened on client side:
from abstract_api import ImageProcessing
from abstract_api.core.exceptions import ClientRequestError
service = ImageProcessing(api_key="612345e4a63044b47a1234567a53cc81")
try:
    service.url("https://example.com/image.jpeg", quality=150)
except ClientRequestError as e:
    print("Some error happended from client's side")
    print(str(e))
'quality must be in range from 1 to 100 (inclusive)'
  1. If the service endpoint returns a status code that is not 200 or 204.
    (200 and 204 are -currently- the only accepted status codes.)
from abstract_api import ImageProcessing
from abstract_api.core.exceptions import APIRequestError
service = ImageProcessing(api_key="612345e4a63044b47a1234567a53cc81")
try:
    service.url("https://example.com/image.jpeg", quality=150)
except APIRequestError as e:
    if e.status_code == 500:
        print("AbstractAPI service is currently having a problem")
    print(str(e))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abstract-api-1.0.0.tar.gz (38.7 kB view hashes)

Uploaded Source

Built Distribution

abstract_api-1.0.0-py3-none-any.whl (67.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page