Enhancement (DELETE) and Bug fixes (around POST response)

1. In fetch(), the check for negative response to raise HALNavigatorError,
       if raise_exc and not self.response:
            raise HALNavigatorError(self.response.text,
                                    status=self.status,
                                    nav=self,
                                    response=self.response,
            )    
   Is not too late in the flow?. I feel it should be checked before processing the response body 

2. PostResponse can have properties, hence implemented __call__ to return properties

3. DELETE method is similar to POST from Navigator perspective (non-idempotent) 
  Hence,
         a) Reused logic from POST to implement support for DELETE
         b) renamed PostResponse to HALResponse 
         c) renamed  create() to post() for clarity
   In order to provide backward compatibility, I created alias "create"  to "post"

4. HALNavigator should not allow POST if the uri is templated. The check for templated_uri 
   was missing. Created a wrapper function (@template_uri_check) to re-use for all methods - GET/POST/DELETE

TODO:
1. Enforce templated_uri check for all HTTP calls. Add test coverage 
2. a link usually have 'method' property (default to 'GET'), which can be used to restrict http operations. this helps to raise NotImplementedError and can have a controlled default function e.g autofetch
Yes. I checked in RFC

As I understand interstitial resources are independent of a method, it
would be same as PoST. But my eyes haven't witnessed one yet
On 31 Oct 2014 08:36, "Josh Kuhn" <notifications@github.com> wrote:

> In restnavigator/halnav.py:
>
> > +        '''Performs an HTTP DELETE to the server, to delete resource(s).
> > +        `body` may either be a string or a dictionary which will be serialized
> > +            as json
> > +        `content_type` may be modified if necessary
> > +        `json_cls` is a JSONEncoder to use rather than the standard
> > +        `headers` are additional headers to send in the request'''
> > +
> > +        response = self.get_http_response( self.session.delete,
> > +                                            body,
> > +                                            raise_exc,
> > +                                            content_type,
> > +                                            json_cls,
> > +                                            headers,
> > +        )
> > +
> > +        if response.status_code in (httplib.ACCEPTED,
>
> Just curious, since I haven't looked it up, are these common responses to
> a delete? What do you get redirected to when something is deleted?
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/deontologician/rest_navigator/pull/8/files#r19656252>.
>