def _get_client_by_transport(self, config, transport, socket=None): # Create the protocol and client if config.compact: protocol = TCompactProtocol.TCompactProtocol(transport) # No explicit option about protocol is specified. Try to infer. elif config.framed or config.unframed: protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport) elif socket is not None: protocol = THeaderProtocol.THeaderProtocol(socket) transport = protocol.trans else: raise ValueError("No protocol specified for HTTP Transport") transport.open() self._transport = transport client = self.client_class(protocol) return client
def _get_client_by_transport(self, options, transport, socket=None): # Create the protocol and client if options.json: protocol = TJSONProtocol.TJSONProtocol(transport) elif options.compact: protocol = TCompactProtocol.TCompactProtocol(transport) # No explicit option about protocol is specified. Try to infer. elif options.framed or options.unframed: protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport) elif socket is not None: # If json, compact, framed, and unframed are not specified, # THeaderProtocol is the default. Create a protocol using either # fuzzy or non-fuzzy transport depending on if options.fuzz is set. if options.fuzz is not None: transport = TFuzzyHeaderTransport( socket, fuzz_fields=options.fuzz, verbose=True) else: transport = THeaderTransport(socket) if options.headers is not None: try: parsed_headers = eval(options.headers) except Exception: self._exit( error_message='Request headers (--headers) argument' ' failed eval') if not isinstance(parsed_headers, dict): self._exit( error_message='Request headers (--headers) argument' ' must evaluate to a dict') for header_name, header_value in parsed_headers.items(): transport.set_header(header_name, header_value) protocol = THeaderProtocol.THeaderProtocol(transport) else: self._exit(error_message=('No valid protocol ' 'specified for %s' % (type(self))), status=os.EX_USAGE) transport.open() self._transport = transport client = self.service_class.Client(protocol) return client