anchor.diff:          {<<"/provider/spaces/support">>,                M, S#rstate{resource = ssupport,    methods = [post]                }},
           {<<"/provider/spaces/:sid">>,                   M, S#rstate{resource = space,       methods = [get, delete]         }},
           {<<"/provider/test/check_my_ip">>,              M, S#rstate{resource = ip,          methods = [get], noauth = [get] }},
  -        {<<"/provider/test/check_my_ports">>,           M, S#rstate{resource = ports,       methods = [get], noauth = [get] }}
  +        {<<"/provider/test/check_my_ports">>,           M, S#rstate{resource = ports,       methods = [post], noauth = [post] }}
       ].
   
   
  
positive.code:     {Space, Req2};
  provide_resource(ip, _ProviderId, _Client, Req) ->
      {{Ip, _Port}, Req2} = cowboy_req:peer(Req),
      {list_to_binary(inet_parse:ntoa(Ip)), Req2};
  provide_resource(ports, _ProviderId, _Client, Req) ->
      {ok, Body, Req2} = cowboy_req:body(Req),
      Data = mochijson2:decode(Body, [{format, proplist}]),
      {provider_logic:test_connection(Data), Req2}.
  
  
  %% delete_resource/3
  
negative.code: %% ====================================================================
  is_authorized(ip, get, _, _) ->
      true;
  is_authorized(ports, post, _, _) ->
      true;
  is_authorized(provider, post, _, #client{type = undefined}) ->
      true;
  