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
OK. I have seen strong oppose by Mike not to include "method" as part of
standard. I disagree with it being pragmatic, it saves another fetch (to
docs or options)

So I agree with you, we need to treat that as optional. May be we can
default 'strict" to "false"
 On 31 Oct 2014 18:42, "Jp" <jay.naveen@gmail.com> wrote:

> I was under that impression. Let me confirm on  that.
>
> I introduced strict flag to give the user a choice to bypass the
> restriction (overriding default get method)
> On 31 Oct 2014 08:22, "Josh Kuhn" <notifications@github.com> wrote:
>
>> In restnavigator/halnav.py:
>>
>> > @@ -158,6 +177,7 @@ def make_nav(link):
>> >                  title=link.get('title'),
>> >                  type=link.get('type'),
>> >                  profile=link.get('profile'),
>> > +                method=link.get('method')
>>
>> HAL doesn't specify a method keyword argument in links. I think we should
>> allow custom behavior for custom link arguments like this, but it should be
>> something the user of rest_navigator sets up, not a part of the core logic.
>>
>> —
>> Reply to this email directly or view it on GitHub
>> <https://github.com/deontologician/rest_navigator/pull/8/files#r19655913>
>> .
>>
>