| #!/bin/sh -e |
| |
| # This script and the accompanying program, httpr-demo.py, demonstrate how to use |
| # httpr with Python. |
| # |
| # Prerequisites: |
| # - httpr is on your path. |
| # - The google-cloud and google-auth Python packages have been installed: |
| # pip install --upgrade google-cloud |
| # pip install --upgrade google-auth |
| |
| # Execution: |
| # 1. Pick a project and a GCS bucket. |
| # 2. Invoke this script to record an interaction: |
| # http-demo.sh PROJECT BUCKET record |
| # 3. Invoke the script again to replay: |
| # http-demo.sh PROJECT BUCKET replay |
| |
| project=$1 |
| bucket=$2 |
| mode=$3 |
| |
| if [[ $mode != "record" && $mode != "replay" ]]; then |
| echo >&2 "usage: $0 PROJECT BUCKET record|replay" |
| exit 1 |
| fi |
| |
| if [[ $(which httpr) == "" ]]; then |
| echo >&2 "httpr is not on PATH" |
| exit 1 |
| fi |
| |
| # Start the proxy and wait for it to come up. |
| httpr -$mode /tmp/demo.replay & |
| proxy_pid=$! |
| |
| # Stop the proxy on exit. |
| # When the proxy is recording, this will cause it to write the replay file. |
| trap "kill -2 $proxy_pid" EXIT |
| |
| sleep 1 |
| |
| # Download the CA certificate from the proxy's control port |
| # and inform Python of the cert via an environment variable. |
| cert_file=/tmp/httpr.cer |
| curl -s localhost:8181/authority.cer > $cert_file |
| export REQUESTS_CA_BUNDLE=$cert_file |
| |
| # Tell Python to use the proxy. |
| # If you passed the -port argument to httpr, use that port here. |
| export HTTPS_PROXY=localhost:8080 |
| |
| # Run the program. |
| python httpr-demo.py $project $bucket $mode |
| |