Metadata-Version: 2.1
Name: universal-api-client
Version: 0.2.0
Summary: А library for a REST API client that works with any API that follows somewhat the REST standard.
Home-page: https://github.com/jorgii/universal-api-client
Author: George Goranov
Author-email: g.p.goranov@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
Requires-Dist: requests (<=3,>=2)

# Universal REST API Client

[![Build Status](https://travis-ci.org/jorgii/universal-api-client.svg?branch=master)](https://travis-ci.org/jorgii/universal-api-client) [![codecov](https://codecov.io/gh/jorgii/universal-api-client/branch/master/graph/badge.svg)](https://codecov.io/gh/jorgii/universal-api-client) [![PyPI version](https://badge.fury.io/py/universal-api-client.svg)](https://badge.fury.io/py/universal-api-client)

  - Free software: MIT license
  - Documentation:
    <https://universal-api-client.readthedocs.io/en/latest/>.

## Features

This library is a small REST API client with the following features:

  - Url builder - allows you to build a url by natively calling the
    client's attributes
  - HTTP requests - a thin wrapper around the [requests](https://requests.readthedocs.io/) library that
    allows full control of the HTTP requests.

## Installation

```shell
pip install universal-api-client
```

## Usage

### Initialising the client

``` python
from universal_api_client import Client
swapi_client = Client(base_url='https://swapi.co/api/')
```

### Building a URL

The url builder is part of the `request` (`APIRequest`) attribute of the
client.

``` python
swapi_client.request.people # <universal_api_client.request.APIRequest at 0x1093c3eb8>
swapi_client.request.people.url # 'https://swapi.co/api/people/'
swapi_client.request.people(identifier=1).url # 'https://swapi.co/api/people/1/'
swapi_client.request.people(identifier='1').url # 'https://swapi.co/api/people/1/'
```

### Making a request

The requests are made by the already built `APIRequest` object. The
method call returns the appropriate method call from the requests
library.

``` python
response = swapi_client.request.people(identifier='1').get() # <Response [200]>
print(response.status_code) # 200
```

### Authentication

The library allows the use of the requests authentication classes ([request.auth](https://requests.readthedocs.io/en/master/user/authentication/#authentication)).

There are 2 ways to add authentication:

1. When initializing the client.
```python
from requests.auth import HTTPBasicAuth

swapi_client = Client(base_url='https://swapi.co/api/', auth=HTTPBasicAuth('user', 'pass'))
```

2. When performing the request (overrides the authentication set in the client).

```python
from requests.auth import HTTPBasicAuth

swapi_client.request.people.get(auth=HTTPBasicAuth('user', 'pass'))
```

### Trailing slash

Some API urls require (or not) a trailing slash at the end of the URL. This can be controlled by the `trailing_slash` flag when creating the client:

``` python
from universal_api_client import Client
swapi_client = Client(base_url='https://swapi.co/api/', trailing_slash=False)

swapi_client.request.people(identifier='1').url # 'https://swapi.co/api/people/1'
```


## Credits

This package was created with
[Cookiecutter](https://github.com/audreyr/cookiecutter) and the
[audreyr/cookiecutter-pypackage](https://github.com/audreyr/cookiecutter-pypackage)
project template.


