Exemplo n.º 1
0
    def _parse_sub_responses(self, response_proto, subrequests_list,
                             response_proto_dict):
        self.log.debug('Parsing sub RPC responses...')
        response_proto_dict['responses'] = {}

        list_len = len(subrequests_list) - 1
        i = 0
        for subresponse in response_proto.responses:
            #self.log.debug( self.decode_raw(subresponse) )

            if i > list_len:
                self.log.info("Error - something strange happend...")

            request_entry = subrequests_list[i]
            if isinstance(request_entry, int):
                entry_id = request_entry
            else:
                entry_id = request_entry.items()[0][0]

            entry_name = RpcEnum.RequestMethod.Name(entry_id)
            proto_name = to_camel_case(entry_name.lower()) + 'Response'
            proto_classname = 'pogom.pgoapi.protos.RpcSub_pb2.' + proto_name

            subresponse_return = None
            try:
                subresponse_extension = get_class(proto_classname)()
            except Exception as e:
                subresponse_extension = None
                error = 'Protobuf definition for {} not found'.format(
                    proto_classname)
                subresponse_return = error
                self.log.debug(error)

            if subresponse_extension:
                try:
                    subresponse_extension.ParseFromString(subresponse)
                    subresponse_return = protobuf_to_dict(
                        subresponse_extension)
                except:
                    error = "Protobuf definition for {} seems not to match".format(
                        proto_classname)
                    subresponse_return = error
                    self.log.debug(error)

            response_proto_dict['responses'][entry_name] = subresponse_return
            i += 1

        return response_proto_dict
Exemplo n.º 2
0
    def _parse_sub_responses(self, response_proto, subrequests_list, response_proto_dict):
        self.log.debug('Parsing sub RPC responses...')
        response_proto_dict['responses'] = {}

        list_len = len(subrequests_list) -1
        i = 0
        for subresponse in response_proto.responses:
            #self.log.debug( self.decode_raw(subresponse) )
            
            if i > list_len:
                self.log.info("Error - something strange happend...")
            
            request_entry = subrequests_list[i]
            if isinstance(request_entry, int):
                entry_id = request_entry
            else:
                entry_id =  request_entry.items()[0][0]
                
            entry_name = RpcEnum.RequestMethod.Name(entry_id)
            proto_name = to_camel_case(entry_name.lower()) + 'Response'
            proto_classname = 'pogom.pgoapi.protos.RpcSub_pb2.' + proto_name
            
            subresponse_return = None
            try:
                subresponse_extension = get_class(proto_classname)()            
            except Exception as e:
                subresponse_extension = None
                error = 'Protobuf definition for {} not found'.format(proto_classname)
                subresponse_return = error
                self.log.debug(error)
            
            if subresponse_extension:
                try: 
                    subresponse_extension.ParseFromString(subresponse)
                    subresponse_return = protobuf_to_dict(subresponse_extension)
                except:
                    error = "Protobuf definition for {} seems not to match".format(proto_classname)
                    subresponse_return = error
                    self.log.debug(error)
            
            response_proto_dict['responses'][entry_name] = subresponse_return
            i += 1
           
        return response_proto_dict
Exemplo n.º 3
0
    def _build_sub_requests(self, mainrequest, subrequest_list):
        self.log.debug('Generating sub RPC requests...')

        for entry in subrequest_list:
            if isinstance(entry, dict):

                entry_id = entry.items()[0][0]
                entry_content = entry[entry_id]

                entry_name = RpcEnum.RequestMethod.Name(entry_id)

                proto_name = to_camel_case(entry_name.lower()) + 'Request'
                proto_classname = 'pogom.pgoapi.protos.RpcSub_pb2.' + proto_name
                subrequest_extension = get_class(proto_classname)()

                for (key, value) in entry_content.items():
                    # if isinstance(value, list):
                    # for i in value:
                    # r = getattr(subrequest_extension, key)
                    # setattr(r, key, value)
                    # else:
                    try:
                        setattr(subrequest_extension, key, value)
                    except Exception as e:
                        self.log.info(
                            'Argument %s with value %s unknown inside %s', key,
                            value, proto_name)

                subrequest = mainrequest.requests.add()
                subrequest.type = entry_id
                subrequest.parameters = subrequest_extension.SerializeToString(
                )

            elif isinstance(entry, int):
                subrequest = mainrequest.requests.add()
                subrequest.type = entry
            else:
                raise Exception('Unknown value in request list')

        return mainrequest
Exemplo n.º 4
0
    def _build_sub_requests(self, mainrequest, subrequest_list):
        self.log.debug('Generating sub RPC requests...')
            
        for entry in subrequest_list:
            if isinstance(entry, dict):
            
                entry_id = entry.items()[0][0]
                entry_content = entry[entry_id]

                entry_name = RpcEnum.RequestMethod.Name(entry_id)
                
                proto_name = to_camel_case(entry_name.lower()) + 'Request'
                proto_classname = 'pogom.pgoapi.protos.RpcSub_pb2.' + proto_name
                subrequest_extension = get_class(proto_classname)()

                for (key, value) in entry_content.items():
                    # if isinstance(value, list):
                        # for i in value:
                            # r = getattr(subrequest_extension, key)
                            # setattr(r, key, value)
                    # else:
                    try:
                        setattr(subrequest_extension, key, value)
                    except Exception as e:
                        self.log.info('Argument %s with value %s unknown inside %s', key, value, proto_name)

                subrequest = mainrequest.requests.add()
                subrequest.type = entry_id
                subrequest.parameters = subrequest_extension.SerializeToString()
                
            elif isinstance(entry, int):
                subrequest = mainrequest.requests.add()
                subrequest.type = entry
            else:
                raise Exception('Unknown value in request list')
    
        return mainrequest