Skip to content

Commit

Permalink
Merge pull request #16 from abh1nav/bugfix/15
Browse files Browse the repository at this point in the history
Adding check for existing query strings in GNIP URL
  • Loading branch information
abh1nav committed Jan 28, 2016
2 parents f9fc42b + 9765bbe commit 98c90e4
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
18 changes: 17 additions & 1 deletion gnippy/rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

import json

try:
from urllib.parse import urlparse
except:
from urlparse import urlparse

import requests
from six import string_types

Expand Down Expand Up @@ -82,6 +87,17 @@ def _post(conf, built_rules):
error_text = "HTTP Response Code: %s, Text: '%s'" % (str(r.status_code), r.text)
raise RuleAddFailedException(error_text)

def _generate_delete_url(conf):
"""
Generate the Rules URL for a DELETE request.
"""
generated_url = _generate_rules_url(conf['url'])
parsed_url = urlparse(generated_url)
query = parsed_url.query
if query != '':
return generated_url.replace(query, query + "&_method=delete")
else:
return generated_url + "?_method=delete"

def _delete(conf, built_rules):
"""
Expand All @@ -99,7 +115,7 @@ def _delete(conf, built_rules):
built_rules: A single or list of built rules.
"""
_check_rules_list(built_rules)
rules_url = _generate_rules_url(conf['url']) + "?_method=delete"
rules_url = _generate_delete_url(conf)
delete_data = json.dumps(_generate_post_object(built_rules))
r = requests.post(rules_url, auth=conf['auth'], data=delete_data)
if not r.status_code in range(200,300):
Expand Down
14 changes: 14 additions & 0 deletions gnippy/test/test_rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,20 @@ def test_get_rules_success_one_rule(self):
r = rules.get_rules(config_file_path=test_utils.test_config_path)
self.assertEqual(1, len(r))

def test_generate_delete_url_normal_case(self):
""" Check if the Delete URL is generated correctly. """
conf = { 'url': 'https://stream.gnip.com:443/accounts/XXX/publishers/twitter/streams/track/prod.json' }
url = rules._generate_delete_url(conf)
self.assertEqual('https://api.gnip.com:443/accounts/XXX/publishers/twitter/streams/track/prod/rules.json?_method=delete',
url)

def test_generate_delete_url_with_query(self):
""" Account for https://github.com/abh1nav/gnippy/issues/15 """
conf = { 'url': 'https://stream.gnip.com:443/accounts/XXX/publishers/twitter/streams/track/prod.json?client=2' }
url = rules._generate_delete_url(conf)
self.assertEqual('https://api.gnip.com:443/accounts/XXX/publishers/twitter/streams/track/prod/rules.json?client=2&_method=delete',
url)

@mock.patch('requests.post', good_delete)
def test_delete_rules_single(self):
""" Delete one rule. """
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import os
import sys

version = "0.5.0"
version = "0.5.1"

try:
from setuptools import setup
Expand Down

0 comments on commit 98c90e4

Please sign in to comment.