From c20d8a4d258b1df1eefc888fbb31146cff7b1d0d Mon Sep 17 00:00:00 2001 From: Anthony Rebello Date: Tue, 31 Jan 2017 13:36:40 +0530 Subject: [PATCH 1/3] references #4, callbacks enabled --- README.md | 7 +++++++ peoplegraph_api_client/client.py | 5 ++++- peoplegraph_api_client/main.py | 15 ++++++++++++--- setup.py | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 062b118..fb4fcb3 100644 --- a/README.md +++ b/README.md @@ -16,3 +16,10 @@ Grab your api secret key from http://www.deepcompute.com/peoplegraph/settings ```bash peoplegraph -H "http://www.deepcompute.com" -u "" -s "" -n "John Doe" --wait ``` + +If you have a webserver that accepts POST requests, you can give peoplegraph a callback, to which it will +POST the result. + +```bash +peoplegraph -H "http://www.deepcompute.com" -u "" -s "" -n "John Doe" --callback "http://www.myserver.com" +``` diff --git a/peoplegraph_api_client/client.py b/peoplegraph_api_client/client.py index de65a87..db83a34 100644 --- a/peoplegraph_api_client/client.py +++ b/peoplegraph_api_client/client.py @@ -72,13 +72,16 @@ def __init__(self, host, username, secret): self.host = host self.auth = HmacAuth(username, secret) - def get_person(self, name): + def get_person(self, name, callback=None): """ queries the server for a person """ url = urljoin(self.host, "/peoplegraph/api/lookup") params = { "name": name } + if callback is not None: + params['callback'] = callback + # TODO add settings try: resp = requests.get(url, auth=self.auth, params=params).json() diff --git a/peoplegraph_api_client/main.py b/peoplegraph_api_client/main.py index eb84e80..cfc6df8 100644 --- a/peoplegraph_api_client/main.py +++ b/peoplegraph_api_client/main.py @@ -22,14 +22,15 @@ def get_args(): parser.add_argument("-n", "--name", required=True, help="name to query", ) - parser.add_argument("-H", "--host", default="http://www.deepcompute.com", help="host server, default is %(default)s", ) parser.add_argument("--wait", default=False, action="store_true", help="block until the server gets data", ) - + parser.add_argument("--callback", default=None, + help="the results are sent as a POST request to the given callback", + ) return parser.parse_args() def main(): @@ -41,7 +42,7 @@ def main(): max_tries = 20 while not data_available: num_tries += 1 - resp = client.get_person(args.name) + resp = client.get_person(args.name, callback=args.callback) data_available = resp.get('data_available', False) if data_available: sys.stdout.write("%s\n" % json.dumps(resp)) @@ -50,12 +51,20 @@ def main(): if not args.wait: data = { "data_available": False, "msg": "Lookup in progress. Please try again after some time" } + + if args.callback is not None: + data['msg'] = "Lookup in progress. A POST request will be sent to %s on completion" % args.callback + sys.stdout.write("%s\n" % json.dumps(resp)) sys.stdout.flush() return if num_tries >= max_tries: data = { "data_available": False, "msg": "Lookup took too long. Please try again after some time" } + if args.callback is not None: + data['msg'] = "Lookup took too long, not waiting anymore. "\ + "However, a POST request will be sent to %s on completion" % args.callback + sys.stdout.write("%s\n" % json.dumps(resp)) sys.stdout.flush() return diff --git a/setup.py b/setup.py index a7f29c7..a1ec6bc 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ setup( name="peoplegraph-api-client", - version="0.1.0", + version="0.1.1", license='MIT License', packages=["peoplegraph_api_client"], url="https://github.com/deep-compute/peoplegraph-api-client", From dd5edc6b4b30223a2596faf30f311a75767b6c0f Mon Sep 17 00:00:00 2001 From: Anthony Rebello Date: Tue, 31 Jan 2017 18:29:05 +0530 Subject: [PATCH 2/3] references #5, added travis ci --- .travis.yml | 34 ++++++++++++++++++++++++++++++++++ setup.cfg | 2 -- setup.py | 38 +++++++++++++++++++++++++++++++------- 3 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 .travis.yml delete mode 100644 setup.cfg diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..05bc6fb --- /dev/null +++ b/.travis.yml @@ -0,0 +1,34 @@ +language: python +python: + - "2.7" +install: + - "pip install ." +script: + - echo "no tests yet" +before_deploy: + - "wget https://github.com/jgm/pandoc/releases/download/1.19.1/pandoc-1.19.1-1-amd64.deb -O $TRAVIS_BUILD_DIR/pandoc.deb" + - "sudo dpkg -i $TRAVIS_BUILD_DIR/pandoc.deb" + - "rm $TRAVIS_BUILD_DIR/pandoc.deb" + - "pandoc --from=markdown --to=rst --output=$TRAVIS_BUILD_DIR/README.rst README.md" +deploy: + # test pypi + - provider: pypi + distributions: "sdist bdist_wheel" + server: https://testpypi.python.org/pypi + skip_cleanup: true + user: "deepcompute" + password: + secure: "qgwPDfVo/P1n0aQNwOvhQSQt1ikYLpPlVXfStW4FbyPJHA2YTfOjSvlIKhw9M2awHwI6bGZUlsV/po3Vsd8tdn665EjArTPIcuRs7Hf5qplC5XrwDynGzxAQ0JXKEHG3nlZ2/JPEGePgk05jQ1J/n7f7TfuZfG2IoSwkCAsKGcFQi741jowzAnWE2bmY1tGT2aYQSTSY4eARcIOZ6sORQ4Ac9RIM4Fiduyj48+WcSxRfYOWemZPJGLmTq/43CIcPSVpRoKA6zfuHUzegtjiyouqenGZQCa0sylUqZyLBq1MdeRwvR9LoUChisgoYlYVRiTKFMyvJg2ePKhLNqzBMFstnJQFbm8l6SNDZomJcMHImDBNX2zF6tSoN0K7OjMELUTIVhgEbhwr3htpzo31E/ZejpVbz1b0Z+xK4z8zGFxY+TqB0YyKTX7xTDZt6KHUukihLr/m669AsSd2Kh5xfWWbGJQbiA/0zqO8ECVoqPjP6k+9gCUWh96CJ5U+aIa0apL6tphaZ5+XZF5xy0Jhu+HRgwjPYDbl1H1lgtEADQrcIQ95poOZFSld/YXyND7xSP3W9wSg8x2ouascEUHivKR2jFPlxagsTrfOskOzTFNdqt3eoFgjqS/8cwKodDUzIopcSU+GF+juRjz7ty7tU1fasLkYZWIUGSAvO1ZeTrDQ=" + on: + branch: master + tags: false + # pypi + - provider: pypi + distributions: "sdist bdist_wheel" + skip_cleanup: true + user: "deepcompute" + password: + secure: "qgwPDfVo/P1n0aQNwOvhQSQt1ikYLpPlVXfStW4FbyPJHA2YTfOjSvlIKhw9M2awHwI6bGZUlsV/po3Vsd8tdn665EjArTPIcuRs7Hf5qplC5XrwDynGzxAQ0JXKEHG3nlZ2/JPEGePgk05jQ1J/n7f7TfuZfG2IoSwkCAsKGcFQi741jowzAnWE2bmY1tGT2aYQSTSY4eARcIOZ6sORQ4Ac9RIM4Fiduyj48+WcSxRfYOWemZPJGLmTq/43CIcPSVpRoKA6zfuHUzegtjiyouqenGZQCa0sylUqZyLBq1MdeRwvR9LoUChisgoYlYVRiTKFMyvJg2ePKhLNqzBMFstnJQFbm8l6SNDZomJcMHImDBNX2zF6tSoN0K7OjMELUTIVhgEbhwr3htpzo31E/ZejpVbz1b0Z+xK4z8zGFxY+TqB0YyKTX7xTDZt6KHUukihLr/m669AsSd2Kh5xfWWbGJQbiA/0zqO8ECVoqPjP6k+9gCUWh96CJ5U+aIa0apL6tphaZ5+XZF5xy0Jhu+HRgwjPYDbl1H1lgtEADQrcIQ95poOZFSld/YXyND7xSP3W9wSg8x2ouascEUHivKR2jFPlxagsTrfOskOzTFNdqt3eoFgjqS/8cwKodDUzIopcSU+GF+juRjz7ty7tU1fasLkYZWIUGSAvO1ZeTrDQ=" + on: + branch: master + tags: true diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index b88034e..0000000 --- a/setup.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[metadata] -description-file = README.md diff --git a/setup.py b/setup.py index a1ec6bc..041d04d 100644 --- a/setup.py +++ b/setup.py @@ -1,20 +1,44 @@ from setuptools import setup, find_packages +import os +HERE = os.path.abspath(os.path.dirname(__file__)) +def get_long_description(): + dirs = [ HERE ] + if os.getenv("TRAVIS"): + dirs.append(os.getenv("TRAVIS_BUILD_DIR")) + + long_description = "" + + for d in dirs: + rst_readme = os.path.join(d, "README.rst") + if not os.path.exists(rst_readme): + continue + + with open(rst_readme) as fp: + long_description = fp.read() + return long_description + + return long_description + +long_description = get_long_description() + +version='0.1.1' setup( name="peoplegraph-api-client", - version="0.1.1", + version=version, + description="Peoplegraph api client", + long_description=long_description, + keywords="peoplegraph", + author="Deep Compute, LLC", + author_email="contact@deepcompute.com", + url="https://github.com/deep-compute/peoplegraph-api-client", + download_url="https://github.com/deep-compute/peoplegraph-api-client/tarball/%s" % version, license='MIT License', packages=["peoplegraph_api_client"], - url="https://github.com/deep-compute/peoplegraph-api-client", - download_url="https://github.com/deep-compute/peoplegraph-api-client/tarball/0.1.0", install_requires=[ "python-dateutil", "requests>=2.11", ], - author="Deep-Compute", - author_email="ops@deepcompute.com", - description="Peoplegraph api client", - keywords=["peoplegraph"], classifiers=[ "Development Status :: 2 - Pre-Alpha", "Environment :: Console", From a094c31a1f6a0669579ebc7a656d8eee6e723465 Mon Sep 17 00:00:00 2001 From: Anthony Rebello Date: Tue, 31 Jan 2017 18:49:20 +0530 Subject: [PATCH 3/3] references #5, added travis status img --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fb4fcb3..d6d8321 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ -# peoplegraph-api-client +# peoplegraph-api-client [![Build Status][travis-ci-status-img]][travis-ci-peoplegraph-api-client] API client for deep-compute's peoplegraph product http://www.deepcompute.com/peoplegraph/ - # Installation ``` @@ -23,3 +22,6 @@ POST the result. ```bash peoplegraph -H "http://www.deepcompute.com" -u "" -s "" -n "John Doe" --callback "http://www.myserver.com" ``` + +[travis-ci-status-img]: https://travis-ci.org/deep-compute/peoplegraph-api-client.svg?branch=master +[travis-ci-peoplegraph-api-client]: https://travis-ci.org/deep-compute/peoplegraph-api-client