Metadata-Version: 2.1
Name: pspring-rest-client
Version: 0.0.10
Summary: A rest client for easier life
Home-page: https://github.com/vasudevan-palani/pspring-rest-client
Author: Vasudevan Palani
Author-email: vasudevan.palani@gmail.com
License: TBD
Platform: UNKNOWN
Description-Content-Type: text/markdown
Requires-Dist: pspring (>=0.0.1)

# pspring-rest-client

This framework is member of pspring based family of frameworks. It provides a means to create rest clients with minimal code. `requests` library is used internally for http requests.

Annotations / Decorators that come along with this framework are listed below

* `@RestClient(url="")`
  This decorator will add few boiler plate code that is required to interact with any rest endpoint. The methods significant are `send`, `getUrl`, `addHeader`.

  The `send` method would accept all arguments that `requests.request` method would. This method will throw `PayloadException` for all not HTTP 200 responses. The `PayloadException` has `response` and `statusCode` attributes which can be further used for error handling.
  The `addHeader(name,value)` method would add an header
  The `getUrl` will get the url that is configured along with `@RestClient` decorator.
  The `handleError` method is exists on the object will be invoked when received a non http 200 response.


Useful classes in this framework

`RegExResponseMapper` - this class can be used to tranform one dictionary to another using regex. An example is shown below. The source dictionary fields can be accessed using `$` notation. In the below example `message` is a field inside the `response dictionary.
```python
regexmapper = RegExResponseMapper({
    ".*Customer does not exist.*" :  {
        "statusCode" : "404",
        "code" : "APS-1001",
        "message" : "$response.message"
    },
    ".*" : {
        "statusCode" : "500",
        "code" : "APS-1002",
        "message" : "$response.message"
    }
})

@RestClient("url=https://myapi.com")
class MyRestClient():

  def getCustomer(self):
    url = self.getUrl()
    url = url + "/user"
    return self.send(url=url,method="GET",header=..,proxies=...)

  def handleError(self,response):
        return regexmapper.map(response)
```

 To do:

 * To return objects based on the return type from the response received.


