Skip to main content

Python package which builds on pypac to add pac file support for httplib2 Http

Project description

pypac4http2

Python package which builds on pypac to add pac file support for httplib2 Http

This package adds proxy auto configure pac support to the httplib2 library Http classby sub-classing the class and adding a new constructor parameter for a resolver class.

Installation

pip install pypac4http2

Usage

HttpPac Class

The HttpPac class extends httplib2.Http and automatically resolves the proxy for each request using a PAC file.

from pypac4http2 import HttpPac

# Automatically discover PAC using OS settings or WPAD
http = HttpPac()
response, content = http.request("http://example.org")

# Specify a PAC URL
http = HttpPac(pac_url="http://internal.corp/proxy.pac")
response, content = http.request("http://example.org")

# Provide PAC as a JavaScript string
pac_js = "function FindProxyForURL(url, host) { return 'PROXY proxy:8080'; }"
http = HttpPac(pac_js=pac_js)
response, content = http.request("http://example.org")

# The library also supports the PAC_URL environment variable:
# export PAC_URL=http://internal.corp/proxy.pac

Usage with Google API Client

HttpPac is designed to be a drop-in replacement for httplib2.Http, making it ideal for use with the Google API Python Client.

In a typical enterprise environment, you may also need your authentication flow (which often uses google-auth and requests) to respect the same PAC settings. You can use pypac.PACSession alongside HttpPac.

import os
from googleapiclient.discovery import build
import google.auth
from google.auth.transport.requests import Request
from pypac import PACSession
from pypac4http2 import HttpPac

# 1. Use PACSession for authentication flows that use 'requests'
# pypac.PACSession doesn't natively check PAC_URL, so we pass it explicitly if set
pac_url = os.environ.get("PAC_URL")
auth_session = PACSession(url=pac_url) if pac_url else PACSession()
auth_request = Request(session=auth_session)

# 2. Get default credentials using the proxy-aware request
credentials, project = google.auth.default(request=auth_request)

# 3. Refresh credentials using the proxy-aware session
credentials.refresh(auth_request)

# 4. Use HttpPac for the Google API service calls (which use 'httplib2')
# Both will respect PAC settings (e.g. via PAC_URL environment variable)
http = HttpPac()
service = build('drive', 'v3', http=http, credentials=credentials)

# All API calls will now automatically resolve proxies via PAC
files = service.files().list().execute()

CLI Tool

The package includes a CLI tool pypac4http2 to resolve proxies for a given URL.

# Resolve proxy using OS auto-discovery (or PAC_URL env var if set)
pypac4http2 https://google.com

# Resolve proxy using a specific PAC URL
pypac4http2 --pac-url http://example.com/proxy.pac https://google.com

# Resolve proxy using a PAC JavaScript string
pypac4http2 --pac-js "function FindProxyForURL(url, host) { return 'DIRECT'; }" https://google.com

Output Example:

Proxy choice: PROXY proxy.example.com:8080
{
  "target_url": "https://google.com",
  "pac_result": "PROXY proxy.example.com:8080",
  "proxy_info": {
    "proxy_type": "HTTP",
    "proxy_host": "proxy.example.com",
    "proxy_port": 8080
  }
}

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

pypac4http2-0.0.6.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pypac4http2-0.0.6-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file pypac4http2-0.0.6.tar.gz.

File metadata

  • Download URL: pypac4http2-0.0.6.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pypac4http2-0.0.6.tar.gz
Algorithm Hash digest
SHA256 d4122363ea15bc9c819248138c6a1b50f427a5f65890b71b09f11ed4b3544101
MD5 83bbf02d1da793c6fb9c371740c5ce1c
BLAKE2b-256 b68baccf83d11a777f16cea85dae6f7db23a730974c2025d1a110fa8452cfd03

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypac4http2-0.0.6.tar.gz:

Publisher: publish.yml on MikeMoore63/pypac4http2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypac4http2-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: pypac4http2-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pypac4http2-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 890cdc6ccbb8c187b2c3e72a9abb7be14c2d151779ecadcaed0e75a4fe3ba7e8
MD5 3961fb588d555417c6a1169ff71b4f2c
BLAKE2b-256 fc9daab24890bdf5343c7ccd26540d3e2e20a988b62086b532a2ea71b3fa60ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypac4http2-0.0.6-py3-none-any.whl:

Publisher: publish.yml on MikeMoore63/pypac4http2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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