Example #1
0
 def add_field(self, field):
     if field not in self._fields:
         self._fields.append(field)
     if field not in self._accepted_fields:
         api_utils.warning(self._endpoint + ' does not allow field ' +
                           field)
     return self
 def add_param(self, key, value):
     if not self._param_checker.is_valid_pair(key, value):
         api_utils.warning('value of ' + key + ' might not be compatible. ' +
             ' Expect ' + self._param_checker.get_type(key) + '; ' +
             ' got ' + str(type(value)))
     if self._param_checker.is_file_param(key):
         self._file_params[key] = value
     else:
         self._params[key] = self._extract_value(value)
     return self
 def add_file(self, file_path):
     if not self._allow_file_upload:
         api_utils.warning('Endpoint ' + self._endpoint + ' cannot upload files')
     file_key = 'source' + str(self._file_counter)
     if os.path.isfile(file_path):
         self._file_params[file_key] = file_path
         self._file_counter += 1
     else:
         raise FacebookBadParameterError(
             'Cannot find file ' + file_path + '!')
     return self
 def add_file(self, file_path):
     if not self._allow_file_upload:
         api_utils.warning('Endpoint ' + self._endpoint + ' cannot upload files')
     file_key = 'source' + str(self._file_counter)
     if os.path.isfile(file_path):
         self._file_params[file_key] = file_path
         self._file_counter += 1
     else:
         raise FacebookBadParameterError(
             'Cannot find file ' + file_path + '!',
         )
     return self
    def get_typed_value(self, key, value):
        if not self.is_valid_key(key):
            return value
        field_type = self.get_type(key)
        if self.is_type(field_type, value, allow_dict_as_obj=False):
            return value

        if self.is_primitive_type(field_type) and isinstance(
                value, six.text_type):
            typed_value = self.convert_string_to_prim_type(field_type, value)
        elif self.is_type_collection(field_type, "list"):
            sub_type = self.get_type_from_collection(field_type, "list")[0]
            if isinstance(value, list):
                typed_value = [
                    self.get_typed_value(sub_type, v) for v in value
                ]
            else:
                typed_value = [self.get_typed_value(sub_type, value)]
        elif self.is_type_collection(field_type, "map"):
            sub_types = self.get_type_from_collection(field_type, "map")
            if len(sub_types) == 2:
                sub_type_key = sub_types[0]
                sub_type_value = sub_types[1]
            else:
                sub_type_key = 'string'
                sub_type_value = sub_types[0]
            typed_value = dict((self.get_typed_value(sub_type_key, k),
                                self.get_typed_value(sub_type_value, v))
                               for (k, v) in value.items())
        elif isinstance(value, dict):
            try:
                typed_value = self._create_field_object(field_type, value)
            except:
                typed_value = value
        else:
            typed_value = value

        if not self.is_type(field_type, typed_value):
            api_utils.warning('Value of ' + key + ' is not be compatible.' +
                              ' Expect ' + field_type + '; got ' +
                              str(type(typed_value)))
        return typed_value
    def get_typed_value(self, key, value):
        if not self.is_valid_key(key):
            return value
        field_type = self.get_type(key)
        if self.is_type(field_type, value, allow_dict_as_obj=False):
            return value

        if self.is_primitive_type(field_type) and isinstance(value, six.text_type):
            typed_value = self.convert_string_to_prim_type(field_type, value)
        elif self.is_type_collection(field_type, "list"):
            sub_type = self.get_type_from_collection(field_type, "list")[0]
            if isinstance(value, list):
                typed_value = [self.get_typed_value(sub_type, v) for v in value]
            else:
                typed_value = [self.get_typed_value(sub_type, value)]
        elif self.is_type_collection(field_type, "map"):
            sub_types = self.get_type_from_collection(field_type, "map")
            if len(sub_types) == 2:
                sub_type_key = sub_types[0]
                sub_type_value = sub_types[1]
            else:
                sub_type_key = 'string'
                sub_type_value = sub_types[0]
            typed_value = dict(
                (self.get_typed_value(sub_type_key, k),
                self.get_typed_value(sub_type_value, v))
                for (k, v) in value.items()
            )
        elif isinstance(value, dict):
            try:
                typed_value = self._create_field_object(field_type, value)
            except:
                typed_value = value
        else:
            typed_value = value

        if not self.is_type(field_type, typed_value):
            api_utils.warning('Value of ' + key + ' is not be compatible.' +
                ' Expect ' + field_type + '; got ' + str(type(typed_value)))
        return typed_value
Example #7
0
 def add_field(self, field):
     if field not in self._fields:
         self._fields.append(field)
     if field not in self._accepted_fields:
         api_utils.warning(self._endpoint + ' does not allow field ' + field)
     return self