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
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