comparison hgext/phabricator.py @ 42433:500b64c5d991

phabricator: pass ui into readurltoken instead of passing repo The goal of this series is to make `hg debugcallconduit` work outside of a hg repo. This patch, removes requirement of repo object from readurltoken as we only need ui there. It also updates the callers to pass in ui instead of repo. Differential Revision: https://phab.mercurial-scm.org/D6497
author Pulkit Goyal <pulkit@yandex-team.ru>
date Sat, 08 Jun 2019 18:32:12 +0300
parents 29528c4235a1
children f163e2b2594c
comparison
equal deleted inserted replaced
42432:bc7b07bb36cc 42433:500b64c5d991
181 else: 181 else:
182 process(k, v) 182 process(k, v)
183 process(b'', params) 183 process(b'', params)
184 return util.urlreq.urlencode(flatparams) 184 return util.urlreq.urlencode(flatparams)
185 185
186 def readurltoken(repo): 186 def readurltoken(ui):
187 """return conduit url, token and make sure they exist 187 """return conduit url, token and make sure they exist
188 188
189 Currently read from [auth] config section. In the future, it might 189 Currently read from [auth] config section. In the future, it might
190 make sense to read from .arcconfig and .arcrc as well. 190 make sense to read from .arcconfig and .arcrc as well.
191 """ 191 """
192 url = repo.ui.config(b'phabricator', b'url') 192 url = ui.config(b'phabricator', b'url')
193 if not url: 193 if not url:
194 raise error.Abort(_(b'config %s.%s is required') 194 raise error.Abort(_(b'config %s.%s is required')
195 % (b'phabricator', b'url')) 195 % (b'phabricator', b'url'))
196 196
197 res = httpconnectionmod.readauthforuri(repo.ui, url, util.url(url).user) 197 res = httpconnectionmod.readauthforuri(ui, url, util.url(url).user)
198 token = None 198 token = None
199 199
200 if res: 200 if res:
201 group, auth = res 201 group, auth = res
202 202
203 repo.ui.debug(b"using auth.%s.* for authentication\n" % group) 203 ui.debug(b"using auth.%s.* for authentication\n" % group)
204 204
205 token = auth.get(b'phabtoken') 205 token = auth.get(b'phabtoken')
206 206
207 if not token: 207 if not token:
208 raise error.Abort(_(b'Can\'t find conduit token associated to %s') 208 raise error.Abort(_(b'Can\'t find conduit token associated to %s')
210 210
211 return url, token 211 return url, token
212 212
213 def callconduit(repo, name, params): 213 def callconduit(repo, name, params):
214 """call Conduit API, params is a dict. return json.loads result, or None""" 214 """call Conduit API, params is a dict. return json.loads result, or None"""
215 host, token = readurltoken(repo) 215 host, token = readurltoken(repo.ui)
216 url, authinfo = util.url(b'/'.join([host, b'api', name])).authinfo() 216 url, authinfo = util.url(b'/'.join([host, b'api', name])).authinfo()
217 repo.ui.debug(b'Conduit Call: %s %s\n' % (url, pycompat.byterepr(params))) 217 repo.ui.debug(b'Conduit Call: %s %s\n' % (url, pycompat.byterepr(params)))
218 params = params.copy() 218 params = params.copy()
219 params[b'api.token'] = token 219 params[b'api.token'] = token
220 data = urlencodenested(params) 220 data = urlencodenested(params)
651 _metanamemap = util.sortdict([(b'user', b'User'), (b'date', b'Date'), 651 _metanamemap = util.sortdict([(b'user', b'User'), (b'date', b'Date'),
652 (b'branch', b'Branch'), (b'node', b'Node ID'), 652 (b'branch', b'Branch'), (b'node', b'Node ID'),
653 (b'parent', b'Parent ')]) 653 (b'parent', b'Parent ')])
654 654
655 def _confirmbeforesend(repo, revs, oldmap): 655 def _confirmbeforesend(repo, revs, oldmap):
656 url, token = readurltoken(repo) 656 url, token = readurltoken(repo.ui)
657 ui = repo.ui 657 ui = repo.ui
658 for rev in revs: 658 for rev in revs:
659 ctx = repo[rev] 659 ctx = repo[rev]
660 desc = ctx.description().splitlines()[0] 660 desc = ctx.description().splitlines()[0]
661 oldnode, olddiff, drevid = oldmap.get(ctx.node(), (None, None, None)) 661 oldnode, olddiff, drevid = oldmap.get(ctx.node(), (None, None, None))