Skip to main content

Python Wrapper for GitGuardian's API -- Scan security policy breaks everywhere

Project description

py-gitguardian - GitGuardian API Client

PyPI License GitHub stars GitHub Workflow Status CodeFactor Grade Codecov

API client library for the GitGuardian API.

The GitGuardian API puts at your fingertips the power to detect more than 200 types of secrets in any text content, as well as other potential security vulnerabilities.

py-gitguardian can be used to create integrations to scan various data sources, from your workstation's filesystem to your favorite chat application.

You can check API details here with all the response codes and expected structures on each method.

Requirements

Python 3.7+

Projects using py-gitguardian

Getting started

You can obtain API keys for API usage on your dashboard.

pip

pip3 install --upgrade pygitguardian

pipenv

pipenv install pygitguardian

poetry

poetry add pygitguardian

Examples

Check examples/ for full examples on how to use py-gitguardian.

Scanning text content

# please don't hardcode your gg_api_key in source code :)
API_KEY = os.getenv("GG_API_KEY")
DOCUMENT = """
    import urllib.request
    url = 'http://jen_barber:correcthorsebatterystaple@cake.gitguardian.com/isreal.json'
    response = urllib.request.urlopen(url)
    consume(response.read())"
"""

client = GGClient(api_key=API_KEY)

# Check the health of the API and the API key used.
if client.health_check().success:
    try:
        scan_result = client.content_scan(DOCUMENT)
    except Exception as exc:
        # Handle exceptions such as schema validation
        traceback.print_exc(2, file=sys.stderr)
        print(str(exc))
        print(scan_result)
else:
    print("Invalid API Key")

Scanning multiple files

API_KEY = os.getenv("GG_API_KEY")
client = GGClient(api_key=API_KEY)

# Create a list of dictionaries for scanning
file_paths = (pathlib.Path(name) for name in glob.iglob("**/*", recursive=True))
to_scan = [
    {"filename": path.name, "document": path.read_text(errors="replace")}
    for path in file_paths
]

scan = client.multi_content_scan(to_scan)

Transform results to dict or JSON

Any model in py-gitguardian can be turned to a JSON string or a dictionary using the to_dict and to_json methods.

from pygitguardian.models import Detail

detail = Detail("Invalid API Key.")
print(detail.to_dict())
print(detail.to_json())

Dependencies

Py-gitguardian depends on these excellent libraries:

  • requests - HTTP client
  • marshmallow - Request (de)serialization and input validation

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

pygitguardian-1.3.2.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

pygitguardian-1.3.2-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file pygitguardian-1.3.2.tar.gz.

File metadata

  • Download URL: pygitguardian-1.3.2.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for pygitguardian-1.3.2.tar.gz
Algorithm Hash digest
SHA256 2e6eade01d2b09bdbfd3d8a2a4d11ec6ce69b9d328a0725a3ce67ddc4bb07046
MD5 918f4a4215801e811c95e90d2ae05987
BLAKE2b-256 fd1aecdbe87f1e0a8d82047fb10f86d350d86f93cffab6003f06f9efd79d2281

See more details on using hashes here.

File details

Details for the file pygitguardian-1.3.2-py3-none-any.whl.

File metadata

  • Download URL: pygitguardian-1.3.2-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for pygitguardian-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 849c2f6664666fac7e4ee9ae1a28653c0b22505db32dd93788c55f47a93e335e
MD5 19e4015156ebffa4ea53d2d6a2a394fb
BLAKE2b-256 028d1403e7e200b9139e101bcb24512764b44cf2e2604bf14a36dd28d1e3d00f

See more details on using hashes here.

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