def add(self, resource_name): """add resource using writable api""" # switch any multiple resource request to single result request if self._resource_type.value % 10: self._resource_type = ResourceType(self._resource_type.value - 5) # get properties for the object properties = ResourceProperties[self._resource_type.name].value( base_uri=self._tc.base_uri, http_method=PropertiesAction.POST) # generate unique temporary id resource_id = uuid.uuid4().int # resource object resource_object = properties.resource_object # set resource id resource_object.set_id(resource_id) # set resource name resource_object.set_name(resource_name) # set resource api action resource_object.set_phase('add') # build request object request_object = RequestObject(self._resource_type.name, resource_id) request_object.set_description( 'Adding {0} resource ({1})'.format(self._resource_type.name.lower(), resource_name)) request_object.set_http_method(properties.http_method) request_object.set_request_uri(properties.post_path) request_object.set_owner_allowed(True) request_object.set_resource_pagination(False) request_object.set_resource_type(self._resource_type) # add to temporary object storage self.add_master_resource_obj(resource_object, resource_id) res = self.get_resource_by_id(resource_id) request_object.set_resource_object_id(id(res)) res.set_request_object(request_object) # add resource object to parent object self.add_obj(res) # return object for modification return res
def add(self, file_hash): """ """ # set properties properties = FileOccurrencesProperties( base_uri=self.base_uri, http_method=PropertiesAction.POST) # generate unique temporary id resource_id = uuid.uuid4().int # resource object resource_object = properties.resource_object # set resource id resource_object.set_id(resource_id) # set resource api action resource_object.set_phase('add') # build request object request_object = RequestObject(self._resource_type.name, resource_id) request_object.set_description( 'Adding file occurrence for file hash {0}'.format(file_hash)) request_object.set_http_method(properties.http_method) request_object.set_request_uri(properties.post_path.format(file_hash)) request_object.set_owner_allowed(True) request_object.set_resource_pagination(False) request_object.set_resource_type(self._resource_type) # add to temporary object storage self.add_master_resource_obj(resource_object, resource_id) res = self.get_resource_by_id(resource_id) request_object.set_resource_object_id(id(res)) res.set_request_object(request_object) # add resource object to parent object self.add_obj(res) # return object for modification return res
def add(self, indicator): """ """ # indicator set method indicator_set_methods = { 'ADDRESS': 'set_ip', 'EMAIL_ADDRESS': 'set_address', 'MD5': 'set_md5', 'SHA1': 'set_sha1', 'SHA256': 'set_sha256', 'HOST': 'set_hostname', 'URL': 'set_text'} # validate indicator if validate_indicator(indicator): # get indicator type resource_type = get_resource_type(indicator) # get properties for the object if resource_type.value % 10: resource_type = ResourceType(resource_type.value - 5) properties = ResourceProperties[resource_type.name].value(http_method=PropertiesAction.POST) # generate unique temporary id resource_id = uuid.uuid4().int # resource object resource_object = properties.resource_object # set resource id resource_object.set_id(resource_id) # set indicator if resource_type == ResourceType.FILE: set_method_name = indicator_set_methods[get_hash_type(indicator)] else: set_method_name = indicator_set_methods[resource_type.name] # if resource_type == ResourceType.URL: # set_indicator = urllib.quote(indicator, safe='~') # else: # set_indicator = indicator set_method = getattr(resource_object, set_method_name) set_method(indicator) # set resource api action resource_object.set_phase('add') # build request object request_object = RequestObject(self._resource_type.name, indicator) request_object.set_description( 'Adding indicator ({0}).'.format(indicator)) request_object.set_http_method(properties.http_method) request_object.set_request_uri(properties.post_path) request_object.set_owner_allowed(True) request_object.set_resource_pagination(False) request_object.set_resource_type(resource_type) # add to temporary object storage roi = self.add_master_resource_obj(resource_object, resource_id) res = self.get_resource_by_identity(roi) request_object.set_resource_object_id(id(res)) res.set_request_object(request_object) # add resource object to parent object self.add_obj(res) # return object for modification return res else: print('({0}) is an invalid indicator.'.format(indicator)) return None