public function testConstructor() { $service = new Description(['operations' => $this->operations]); $this->assertEquals(1, count($service->getOperations())); $this->assertFalse($service->hasOperation('foobar')); $this->assertTrue($service->hasOperation('test_command')); }
/** * Creates a callable function used to create command objects from a * service description. * * @param Description $description Service description * * @return callable Returns a command factory */ public static function defaultCommandFactory(Description $description) { return function ($name, array $args = [], GuzzleClientInterface $client) use($description) { $operation = null; if ($description->hasOperation($name)) { $operation = $description->getOperation($name); } else { $name = ucfirst($name); if ($description->hasOperation($name)) { $operation = $description->getOperation($name); } } if (!$operation) { return null; } return new Command($operation, $args, clone $client->getEmitter()); }; }
private function resolveExtends($name, array $config) { if (!$this->description->hasOperation($name)) { throw new \InvalidArgumentException('No operation named ' . $name); } // Merge parameters together one level deep $base = $this->description->getOperation($name)->toArray(); $result = $config + $base; if (isset($base['parameters']) && isset($config['parameters'])) { $result['parameters'] = $config['parameters'] + $base['parameters']; } return $result; }