A Python Wrapper for SurveyGizmo's restful API service.
Project description
A Python Wrapper for SurveyGizmo’s restful API service.
Requirements
python 2.7, 3.3, 3.4, or 3.5
Installation
$ pip install SurveyGizmo
Usage
Start by instantiating the SurveyGizmo object and providing some configuration parameters. Options can also be set through the config property.
from surveygizmo import SurveyGizmo
client = SurveyGizmo(api_version='v4')
client.config.api_token = "E4F796932C2743FEBF150B421BE15EB9"
client.config.api_token_secret = "A9fGMkJ5pJF1k"
Calls to the api are by object type then by function. For example,
client.api.survey.list()
client.api.survey.get('39501')
client.api.survey.copy('39501', '39501 Copy')
client.api.surveyresponse.list('39501')
Authentication
Token based authentication is the only currently supported authentication method. user:pass and user:md5 were deprecated on May 31, 2016. Oauth support is not currently a goal, but pull requests are welcome.
token
client.config.api_token = 'E4F796932C2743FEBF150B421BE15EB9'
client.config.api_token_secret = 'A9fGMkJ5pJF1k'
Config paramaters
api_version - ‘v3’, ‘v4’, ‘head’. Defaults to ‘head’
api_token
api_token_secret
response_type - None, 'json', 'pson', 'xml', 'debug'. By default (using None), the API returns a JSON response which is parsed by the client into a python dictionary. Specifying a response_type will return an unparsed body of the specified format.
requests_kwargs - Additional arguments passed to requests.get. Useful for setting timeouts and otherwise configuring the requests library.
prepare_url - Force the client to return the url after being prepared instead of executing the api call. This is useful in cases where you need to call the api asynchronously. Defaults to ‘False’
handler52x - Handler for CloudFlare’s 52x errors. Expects a callable (e.g., surveygizmo.default_52xhandler). Defaults to ‘None’.
Filters
A filter method has been added as a convenience for list() calls.
client.api.filter('datesubmitted', '<=', '2013-07-01')
client.api.surveyresponse.list('39501')
Filters are chainable.
client.api.filter('datesubmitted', '>=', '2012-07-01').filter('datesubmitted', '<', '2013-07-01').list('39501')
CloudFlare 52x Errors
After SurveyGizmo’s move to CloudFlare, it isn’t uncommon to see connectivity issues where the service is temporarily unreachable. These errors exist on the 52x range of HTTP status codes. To automatically handle 52x errors, set a callable for config.handler52x. A basic handler is provided under surveygizmo.default_52xhandler, which simply retries the request every second until a non-52x response is returned.
1.0.0 Changelog
Replace all authentication methods with only token based authentication.
Rewrite API to use class inheritance instead of module function wrapping.
Remove preserve_filters option.
Rename add_filter to just filter. Filters are chainable.
0.2.0 Changelog
0.2.0 is a forwards incompatible release, but only minorly so.
Forwards incompatible changes:
Renamed the ‘change’ operations to ‘update’. This is consistent with SurveyGizmo’s API naming.
Removed the ‘keep’ kwarg for preserving filters bettween api funcion calls. This is now configured with ‘preserve_filters’. Filters are now cleared manually with api.clear_filters()
Removed the undocumented ‘url_fetch’ kwarg, which prevented api executioned and instead returned the prepared url.
Backwards incompatible changes:
Modified ‘api_version’ to no longer has any effect on the client. SurveyGizmo provides no way to meaningfully differentiate between API versions, so this checking was unneeded and created code duplication
Added ‘prepare_url’ as a replacement for ‘url_fetch’. This forces the client to return the url after being prepared instead of executing the api call. This is useful in cases where you need to call the api asynchronously.
Added ‘requests_kwargs’. These are additional arguments passed to requests.get. Useful for setting timeouts and otherwise configuring the requests library.
Added handling for CloudFlare 52x errors
Copyright & License
Copyright © 2013-2014 NC State University. See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file SurveyGizmo-1.0.0.post1.tar.gz
.
File metadata
- Download URL: SurveyGizmo-1.0.0.post1.tar.gz
- Upload date:
- Size: 12.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45b908e4ce91cc2ceef312aa20de71531b6ce2d7e6ad075eeabbf11076393a56 |
|
MD5 | 0f87ddf3a8830b770b01573f5125d105 |
|
BLAKE2b-256 | e2b40d55a6f2cc2b5f9bf1fe8473dcf5a0dcca7d27e8225951ca8a829d72fd21 |
File details
Details for the file SurveyGizmo-1.0.0.post1-py2.py3-none-any.whl
.
File metadata
- Download URL: SurveyGizmo-1.0.0.post1-py2.py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab40dcb70d64979df0b80aeb12ef02258364cd0f3e8f3c40d061d394f219e6fc |
|
MD5 | a4f20f9bc845602a4cefe4ad6b00426f |
|
BLAKE2b-256 | eb54b8fa4fe4ea3ad8ed1c7a5b0e4bf78670adf17321e3eb75e81b7b50b35a10 |