88import textwrap
99
1010import requests
11+ import requests_cache
1112from functools import reduce
1213
1314GOOGLE_CHART_URL = 'https://chart.apis.google.com/chart'
1415MAX_SUMMARY_LENGTH = 30
1516
17+ cached_requests = requests_cache .CachedSession ('jira_cache' )
1618
1719def log (* args ):
1820 print (* args , file = sys .stderr )
@@ -36,9 +38,9 @@ def get(self, uri, params={}):
3638 url = self .url + uri
3739
3840 if isinstance (self .auth , str ):
39- return requests .get (url , params = params , cookies = {'JSESSIONID' : self .auth }, headers = headers , verify = self .no_verify_ssl )
41+ return cached_requests .get (url , params = params , cookies = {'JSESSIONID' : self .auth }, headers = headers , verify = self .no_verify_ssl )
4042 else :
41- return requests .get (url , params = params , auth = self .auth , headers = headers , verify = (not self .no_verify_ssl ))
43+ return cached_requests .get (url , params = params , auth = self .auth , headers = headers , verify = (not self .no_verify_ssl ))
4244
4345 def get_issue (self , key ):
4446 """ Given an issue key (i.e. JRA-9) return the JSON representation of it. This is the only place where we deal
@@ -255,6 +257,7 @@ def parse_args():
255257 parser .add_argument ('-t' , '--ignore-subtasks' , action = 'store_true' , default = False , help = 'Don' 't include sub-tasks issues' )
256258 parser .add_argument ('-T' , '--dont-traverse' , dest = 'traverse' , action = 'store_false' , default = True , help = 'Do not traverse to other projects' )
257259 parser .add_argument ('-w' , '--word-wrap' , dest = 'word_wrap' , default = False , action = 'store_true' , help = 'Word wrap issue summaries instead of truncating them' )
260+ parser .add_argument ('-a' , '--clear-cache' , dest = 'clear_cache' , default = False , action = 'store_true' , help = 'Clear requests cache' )
258261 parser .add_argument ('-b' , '--show-assignee' , dest = 'show_assignee' , default = False , action = 'store_true' , help = 'Show assignee in issues' )
259262 parser .add_argument ('--no-verify-ssl' , dest = 'no_verify_ssl' , default = False , action = 'store_true' , help = 'Don\' t verify SSL certs for requests' )
260263 parser .add_argument ('issues' , nargs = '*' , help = 'The issue key (e.g. JRADEV-1107, JRADEV-1391)' )
@@ -286,6 +289,9 @@ def main():
286289 else getpass .getpass ('Password: ' )
287290 auth = (user , password )
288291
292+ if options .clear_cache is True :
293+ cached_requests .cache .clear ()
294+
289295 jira = JiraSearch (options .jira_url , auth , options .no_verify_ssl )
290296
291297 if options .jql_query is not None :
0 commit comments