build/ServiceBuilder.php (61 lines of code) (raw):

<?php class ServiceBuilder { private $namespace; private $model; private $clientPath; private $exceptionPath; public function __construct( $namespace, array $model, $clientPath, $exceptionPath ) { $this->namespace = $namespace; $this->model = $model; $this->clientPath = $clientPath; $this->exceptionPath = $exceptionPath; } public function buildClient() { return $this->buildFileIfMissing('Client'); } public function buildException() { return $this->buildFileIfMissing('Exception'); } private function buildFileIfMissing($fileType) { $property = lcfirst($fileType) . 'Path'; $method = 'generateDefault' . $fileType; if (!file_exists($this->{$property})) { if (!is_dir(dirname($this->{$property}))) { mkdir(dirname($this->{$property}), 0755, true); } file_put_contents($this->{$property}, $this->{$method}(), LOCK_EX); } return $this; } private function getFullName() { return $this->model['metadata']['serviceFullName']; } private function generateDefaultClient() { return <<<EOPHP <?php namespace Aws\\{$this->namespace}; use Aws\\AwsClient; /** * This client is used to interact with the **{$this->getFullName()}** service. */ class {$this->namespace}Client extends AwsClient {} EOPHP; } private function generateDefaultException() { return <<<EOPHP <?php namespace Aws\\{$this->namespace}\\Exception; use Aws\\Exception\\AwsException; /** * Represents an error interacting with the **{$this->getFullName()}** service. */ class {$this->namespace}Exception extends AwsException {} EOPHP; } }