/** * {@inheritdoc} */ protected function process() { parent::process(); $self = $this; $clear = new ResourceIteratorApplyBatched($this->getResult(), function ($iterator, $batched) use($self) { $set = new CommandSet(); foreach ($batched as $key) { $set->addCommand(new PutAcl(array('bucket' => $iterator->getBucketName(), 'acl' => $self->get('acl')))); } $self->getClient()->execute($set); }); // Set the number of iterated objects $clear->apply(); $this->result = $clear; }
/** * {@inheritdoc} */ protected function process() { parent::process(); $self = $this; $clear = new ResourceIteratorApplyBatched($this->getResult(), function ($iterator, $batched) use($self) { if (count($batched)) { $set = new CommandSet(); foreach ($batched as $key) { $set->addCommand(new DeleteObject(array('bucket' => $iterator->getBucketName(), 'key' => $key['key']))); } $self->getClient()->execute($set); } }); $clear->apply($this->get('per_batch', 20)); $this->result = $clear; }
/** * @covers Guzzle\Service\ResourceIteratorApplyBatched */ public function testSendsRequestsForNextSetOfResources() { $this->getServer()->flush(); $this->getServer()->enqueue(array("HTTP/1.1 200 OK\r\nContent-Length: 52\r\n\r\n{ \"next_token\": \"g\", \"resources\": [\"d\", \"e\", \"f\"] }", "HTTP/1.1 200 OK\r\nContent-Length: 52\r\n\r\n{ \"next_token\": \"j\", \"resources\": [\"g\", \"h\", \"i\"] }", "HTTP/1.1 200 OK\r\nContent-Length: 41\r\n\r\n{ \"next_token\": \"\", \"resources\": [\"j\"] }")); $ri = new MockResourceIterator($this->getServiceBuilder()->get('mock'), array('page_size' => 3, 'resources' => array('a', 'b', 'c'), 'next_token' => 'd')); $received = array(); $apply = new ResourceIteratorApplyBatched($ri, function (ResourceIterator $i, array $batch) use(&$received) { $received[] = $batch; }); $apply->apply(3); $requests = $this->getServer()->getReceivedRequests(true); $this->assertEquals(3, count($requests)); $this->assertEquals(3, $requests[0]->getQuery()->get('count')); $this->assertEquals(3, $requests[1]->getQuery()->get('count')); $this->assertEquals(3, $requests[2]->getQuery()->get('count')); $this->assertEquals(array('a', 'b', 'c'), array_values($received[0])); $this->assertEquals(array('d', 'e', 'f'), array_values($received[1])); $this->assertEquals(array('g', 'h', 'i'), array_values($received[2])); $this->assertEquals(array('j'), array_values($received[3])); $this->assertEquals(4, $apply->getBatchCount()); $this->assertEquals(10, $apply->getIteratedCount()); }