===== Usage ===== To use dappy in a project:: from dappy import API, Endpoint ItunesAPI = API('itunes.apple.com', [ Endpoint( 'search', '/search', query_map={ 'search_string': 'term' }, # Map input query params to what the API actually expects default_query={ 'entity': 'podcast' } # Default query params to send with every request # we could also pass default_params={} or default_headers={} here ), Endpoint('lookup', '/lookup') ], scheme='https') # scheme defaults to 'https' ItunesAPI.search(query={ 'search_string': 'Hello, World' # 'search_string" will get mapped to 'term' before we send the request }) # 'entity=podcast' gets added to the query without us providing it here ItunesAPI.get(query={ 'id': '656270845' }) Return Values ========== All dappy functions return either a dict representing JSON or a requests request object depending on how an Endpoint was set up. Currently it defaults to parsing JSON and returning a dict. :: from dappy import API, Endpoint from dappy.formatters import default_formatter, json_formatter ItunesAPI = API('itunes.apple.com', [ Endpoint('search', '/search'), ]) ItunesAPI.search() # Returns requests request object ItunesAPI = API('itunes.apple.com', [ Endpoint('search', '/search'), ], formatter=json_formatter) ItunesAPI.search() # Returns dict parsed from JSON ItunesAPI = API('itunes.apple.com', [ Endpoint('search', '/search', formatter=json_formatter), Endpoint('lookup', '/lookup'), json=False) ItunesAPI.search() # Returns dict parsed from JSON ItunesAPI.lookup() # Returns requests request object ItunesAPI = API('itunes.apple.com', [ Endpoint('search', '/search', formatter=default_formatter), Endpoint('lookup', '/lookup'), ], formatter=json_formatter) ItunesAPI.search() # Returns requests request object ItunesAPI.lookup() # Returns dict parsed from JSON Mocking ======= Using the requests-mock module, we can mock specific URLs :: import requests_mock from dappy import API, Endpoint ItunesAPI = API('itunes.apple.com', [ Endpoint('search', '/search'), ]) with requests_mock.Mocker() as mock: mock.get('https://itunes.apple.com/search', json={'results': []}) ItunesAPI.search().json() # returns {'results': []} GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, TRACE ============================================================ Dappy supports all http methods, each http method can accept keyword args 'query', 'params', and 'headers' :: from dappy import API, Endpoint ItunesAPI = API('itunes.apple.com', [ Endpoint('search', '/search'), ]) ItunesAPI.search() # sends a GET request ItunesAPI.search.get(query={}) # also sends a GET request ItunesAPI.search.head() ItunesAPI.search.post(params={}, headers={'Authorization': 'Basic ...'}) ItunesAPI.search.put() ItunesAPI.search.delete() ItunesAPI.search.connect() ItunesAPI.search.options() ItunesAPI.search.patch() ItunesAPI.search.trace() ...