def _GoToSymbol(self, request_data, args):
        request = self._DefaultParameters(request_data)
        request.update({'Language': 'C#', 'Filter': args[0]})
        response = self._GetResponse('/findsymbols', request)

        quickfixes = response['QuickFixes']
        if quickfixes:
            if len(quickfixes) == 1:
                ref = quickfixes[0]
                ref_file = ref['FileName']
                ref_line = ref['Line']
                lines = GetFileLines(request_data, ref_file)
                line = lines[min(len(lines), ref_line - 1)]
                return responses.BuildGoToResponseFromLocation(
                    _BuildLocation(request_data, ref_file, ref_line,
                                   ref['Column']), line)
            else:
                goto_locations = []
                for ref in quickfixes:
                    ref_file = ref['FileName']
                    ref_line = ref['Line']
                    lines = GetFileLines(request_data, ref_file)
                    line = lines[min(len(lines), ref_line - 1)]
                    goto_locations.append(
                        responses.BuildGoToResponseFromLocation(
                            _BuildLocation(request_data, ref_file, ref_line,
                                           ref['Column']), line))

                return goto_locations
        else:
            raise RuntimeError('No symbols found')
    def _Format(self, request_data):
        request = self._DefaultParameters(request_data)
        request['WantsTextChanges'] = True
        if 'range' in request_data:
            lines = request_data['lines']
            start = request_data['range']['start']
            start_line_num = start['line_num']
            start_line_value = lines[start_line_num]

            start_codepoint = ByteOffsetToCodepointOffset(
                start_line_value, start['column_num'])

            end = request_data['range']['end']
            end_line_num = end['line_num']
            end_line_value = lines[end_line_num]
            end_codepoint = ByteOffsetToCodepointOffset(
                end_line_value, end['column_num'])
            request.update({
                'line': start_line_num,
                'column': start_codepoint,
                'EndLine': end_line_num,
                'EndColumn': end_codepoint
            })
            result = self._GetResponse('/formatRange', request)
        else:
            result = self._GetResponse('/codeformat', request)

        fixit = responses.FixIt(
            _BuildLocation(request_data, request_data['filepath'],
                           request_data['line_num'],
                           request_data['column_codepoint']),
            _LinePositionSpanTextChangeToFixItChunks(result['Changes'],
                                                     request_data['filepath'],
                                                     request_data))
        return responses.BuildFixItResponse([fixit])
示例#3
0
 def _ResolveFixIt( self, request_data, unresolved_fixit = None ):
   fixit = unresolved_fixit if unresolved_fixit else request_data[ 'fixit' ]
   if not fixit[ 'resolve' ]:
     return { 'fixits': [ fixit ] }
   fixit = fixit[ 'command' ]
   code_action = fixit[ 'index' ]
   request = self._DefaultParameters( request_data )
   request.update( {
     'CodeAction': code_action,
     'WantsTextChanges': True,
   } )
   response = self._GetResponse( '/runcodeaction', request )
   fixit = responses.FixIt(
     _BuildLocation(
       request_data,
       request_data[ 'filepath' ],
       request_data[ 'line_num' ],
       request_data[ 'column_codepoint' ] ),
     _LinePositionSpanTextChangeToFixItChunks(
       response[ 'Changes' ],
       request_data[ 'filepath' ],
       request_data ),
     response[ 'Text' ] )
   # The sort is necessary to keep the tests stable.
   # Python's sort() is stable, so it won't mess up the order within a file.
   fixit.chunks.sort( key = lambda c: c.range.start_.filename_ )
   return responses.BuildFixItResponse( [ fixit ] )
示例#4
0
    def get_authenticated_data(self, url, request, timeout=None):
        """
        Get authenticated information from the exchange. B{NO retry}.

        Bitfinex API v1 U{https://www.bitfinex.com/pages/api}

        @param url: target url of API. (e.g. "/balances")
        @param request: request parameters for this API method {"key": <>}
        @return:
        """

        # prepare components
        request.update({"request": self.__api_base+url, "nonce": str(time.time())})
        payload = base64.b64encode(json.dumps(request).encode())
        signature = hmac.new(key=self.__secret.encode(),
                             msg=payload,
                             digestmod=hashlib.sha384).hexdigest()
        headers = {"X-BFX-APIKEY": self.__api_key,
                   "X-BFX-SIGNATURE": signature,
                   "X-BFX-PAYLOAD": payload}

        # connect exchange
        conn = None
        try:
            conn = http.client.HTTPSConnection(self.__host, timeout=timeout)
            conn.request("POST", self.__api_base+url, "", headers)
            with conn.getresponse() as response:
                return json.loads(response.read().decode())
        except OSError as e:
            self.logger.error("get_authenticated_data() failure. Query: {}. Msg: {}".format(request, e),
                              exc_info=False)
            return None
        finally:
            if conn is not None:
                conn.close()
示例#5
0
 def del_event(self, itemid):
     request = {'username': self.username, 'ver': '1', "itemid": itemid}
     request.update(self.get_auth())
     logging.debug('sending editevent: %s' % str(request))
     result = self.server.LJ.XMLRPC.editevent(request)
     logging.debug('got result: %s' % str(result))
     return result
示例#6
0
    def edit(self, itemid, eventtime, post, journal=None):
        moment = time.strptime(eventtime, LJ_TIME_FORMAT)

        request = {
            'username': self.username,
            'ver': '1',
            "itemid": itemid,
            'event': post['text'],
            'subject': post['subj'],
            'props': {
                'taglist': post['tags'],
                'opt_preformatted': True
            },
            'year': moment[0],
            'mon': moment[1],
            'day': moment[2],
            'hour': moment[3],
            'min': moment[4]
        }
        if journal:
            request.update({'usejournal': journal})
        request.update(self.get_auth())
        logging.debug('sending editevent: %s' % str(request))
        result = self.server.LJ.XMLRPC.editevent(request)
        logging.debug('got result: %s' % str(result))
        return result
示例#7
0
文件: lj.py 项目: amirrpp/xkcd.ru
	def del_event(self, itemid):
		request = {'username': self.username,
			   'ver': '1',
			   "itemid": itemid}
		request.update(self.get_auth())
		logging.debug('sending editevent: %s' % str(request))
		result = self.server.LJ.XMLRPC.editevent(request)
		logging.debug('got result: %s' % str(result))
		return result
示例#8
0
文件: lj.py 项目: amirrpp/xkcd.ru
	def get_last(self):
		request = {'username': self.username,
			   'ver': '1',
			   'lineendings': '0x0A',
			   "selecttype": "lastn",
			   "itemid": -1,
			   "howmany": 1}
		request.update(self.get_auth())
		logging.debug('sending getevents: %s' % str(request))
		result = self.server.LJ.XMLRPC.getevents(request)
		logging.debug('got result: %s' % str(result))
		return result['events'][0]
示例#9
0
 def get_last(self):
     request = {
         'username': self.username,
         'ver': '1',
         'lineendings': '0x0A',
         "selecttype": "lastn",
         "itemid": -1,
         "howmany": 1
     }
     request.update(self.get_auth())
     logging.debug('sending getevents: %s' % str(request))
     result = self.server.LJ.XMLRPC.getevents(request)
     logging.debug('got result: %s' % str(result))
     return result['events'][0]
示例#10
0
文件: lj.py 项目: amirrpp/xkcd.ru
	def get_session(self):
		# Should I store session in cache?
		request = {'username': self.username,
			   'ver': '1',
			   'expiration': 'short'}
		request.update(self.get_auth())
		logging.debug('sending sessiongenerate: %s' % str(request))
		result = self.server.LJ.XMLRPC.sessiongenerate(request)
		logging.debug('got result: %s' % str(result))
		try:
			return result['ljsession']
		except KeyError:
			raise UnexpectedReply(
				'Server didn\'t returned ljsession.')
示例#11
0
 def get_session(self):
     # Should I store session in cache?
     request = {
         'username': self.username,
         'ver': '1',
         'expiration': 'short'
     }
     request.update(self.get_auth())
     logging.debug('sending sessiongenerate: %s' % str(request))
     result = self.server.LJ.XMLRPC.sessiongenerate(request)
     logging.debug('got result: %s' % str(result))
     try:
         return result['ljsession']
     except KeyError:
         raise UnexpectedReply('Server didn\'t returned ljsession.')
示例#12
0
    def post(self, post, eventtime=None, journal=None, raise_on_premod=False):
        if eventtime == None:
            moment = time.localtime()
        else:
            moment = time.strptime(eventtime, LJ_TIME_FORMAT)

        request = {
            'username': self.username,
            'clientversion': 'Zapys/0.8',
            'ver': '1',
            'event': post['text'],
            'subject': post['subj'],
            'props': {
                'taglist': post['tags'],
                'opt_preformatted': True
            },
            'year': moment[0],
            'mon': moment[1],
            'day': moment[2],
            'hour': moment[3],
            'min': moment[4],
            'lineendings': '0x0A'
        }
        if journal:
            request.update({'usejournal': journal})
        request.update(self.get_auth())
        logging.debug('sending postevent: %s' % str(request))
        result = self.server.LJ.XMLRPC.postevent(request)
        logging.debug('got result: %s' % str(result))
        try:
            result['itemid']
            result['url']
        except KeyError:
            if raise_on_premod:
                raise UnexpectedReply('Didn\'t expected premoderated.')
            try:
                result['message']
            except KeyError:
                raise UnexpectedReply('Server didn\'t returned message.')
        return result
示例#13
0
文件: lj.py 项目: amirrpp/xkcd.ru
	def edit(self, itemid, eventtime, post, journal=None):
		moment = time.strptime(eventtime, LJ_TIME_FORMAT)

		request = {'username': self.username,
			   'ver': '1',
			   "itemid": itemid,
			   'event': post['text'],
			   'subject': post['subj'],
			   'props': {'taglist': post['tags'],
				     'opt_preformatted': True},
			   'year': moment[0],
			   'mon': moment[1],
			   'day': moment[2],
			   'hour' : moment[3],
			   'min': moment[4]}
		if journal:
			request.update({'usejournal': journal})
		request.update(self.get_auth())
		logging.debug('sending editevent: %s' % str(request))
		result = self.server.LJ.XMLRPC.editevent(request)
		logging.debug('got result: %s' % str(result))
		return result
示例#14
0
文件: lj.py 项目: amirrpp/xkcd.ru
	def post(self, post, eventtime=None, journal=None,
		 raise_on_premod=False):
		if eventtime == None:
			moment = time.localtime()
		else:
			moment = time.strptime(eventtime, LJ_TIME_FORMAT)

		request = {'username': self.username,
			   'clientversion': 'Zapys/0.8',
			   'ver':'1',
			   'event': post['text'],
			   'subject': post['subj'],
			   'props': {'taglist': post['tags'],
				     'opt_preformatted': True},
			   'year': moment[0],
			   'mon': moment[1],
			   'day': moment[2],
			   'hour': moment[3],
			   'min': moment[4],
			   'lineendings':'0x0A'}
		if journal:
			request.update({'usejournal': journal})
		request.update(self.get_auth())
		logging.debug('sending postevent: %s' % str(request))
		result = self.server.LJ.XMLRPC.postevent(request)
		logging.debug('got result: %s' % str(result))
		try:
			result['itemid']
			result['url']
		except KeyError:
			if raise_on_premod:
				raise UnexpectedReply(
					'Didn\'t expected premoderated.')
			try:
				result['message']
			except KeyError:
				raise UnexpectedReply(
					'Server didn\'t returned message.')
		return result
示例#15
0
def build_json_request_string(credentials, query):
    """Build a JSON string from the urlquoted credentials and the actual query input"""

    userid, access_token, password, account, mode = credentials

    request = dict(userid=userid, version=VERSION, mode=mode, queryInput=query)
    if account:
        request.update(
            account=account)  # empty account info would result in error 404
    if access_token:
        request.update(accesstoken=access_token)
    if password:
        request.update(password=password)

    return urllib.parse.urlencode(
        dict(jsonRequest=json.dumps(request))).encode('utf-8')