Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gitguardian/py-gitguardian
Python API client library for the GitGuardian API
https://github.com/gitguardian/py-gitguardian
api-client ci devsecops gitguardian library python secrets-detection security-tools shift-left
Last synced: 7 days ago
JSON representation
Python API client library for the GitGuardian API
- Host: GitHub
- URL: https://github.com/gitguardian/py-gitguardian
- Owner: GitGuardian
- License: mit
- Created: 2020-04-16T08:34:10.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-12-11T16:04:57.000Z (11 days ago)
- Last Synced: 2024-12-11T16:43:10.940Z (11 days ago)
- Topics: api-client, ci, devsecops, gitguardian, library, python, secrets-detection, security-tools, shift-left
- Language: Python
- Size: 442 KB
- Stars: 77
- Watchers: 19
- Forks: 15
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# [py-gitguardian](https://github.com/GitGuardian/py-gitguardian) - GitGuardian API Client
[![PyPI](https://img.shields.io/pypi/v/pygitguardian?color=%231B2D55&style=for-the-badge)](https://pypi.org/project/pygitguardian/)
[![License](https://img.shields.io/github/license/GitGuardian/py-gitguardian?color=%231B2D55&style=for-the-badge)](LICENSE)
[![GitHub stars](https://img.shields.io/github/stars/gitguardian/py-gitguardian?color=%231B2D55&style=for-the-badge)](https://github.com/GitGuardian/py-gitguardian/stargazers)
![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/GitGuardian/py-gitguardian/test-lint.yml?branch=master&style=for-the-badge)
[![Codecov](https://img.shields.io/codecov/c/github/GitGuardian/py-gitguardian?style=for-the-badge)](https://codecov.io/gh/GitGuardian/py-gitguardian/)API client library for the [GitGuardian API](https://api.gitguardian.com/).
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](https://api.gitguardian.com/docs)
with all the response codes and expected structures on each method.## Requirements
Python 3.8+
## Projects using `py-gitguardian`
- [**GitGuardian Shield**](https://github.com/GitGuardian/gg-shield) - Scan for secrets in your CI and pre-commit.
## Getting started
You can obtain API keys for API usage on your [dashboard](https://dashboard.gitguardian.com/api/v1/auth/user/github_login/authorize?utm_source=github&utm_medium=py_gitguardian&utm_campaign=py1).
**pip**
```bash
pip3 install --upgrade pygitguardian
```**pipenv**
```bash
pipenv install pygitguardian
```**pdm**
```bash
pdm add pygitguardian
```**poetry**
```bash
poetry add pygitguardian
```## Examples
Check [examples/](examples/) for full examples on how to use py-gitguardian.
### Scanning text content
```py
# please don't hardcode your gg_api_key in source code :)
API_KEY = os.getenv("GITGUARDIAN_API_KEY")
DOCUMENT = """
import urllib.request
url = 'http://jen_barber:[email protected]/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
```py
API_KEY = os.getenv("GITGUARDIAN_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.```py
from pygitguardian.models import Detaildetail = 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