何に必要かはわからないけど、AWSSDKforPHP 1.5.14 から抜き出し
EMRが2009なのはPHPだから??
service | version | auth |
---|---|---|
EC2 | 2012-07-20 | AuthV2Query |
EMR | 2009-03-31 | AuthV2Query |
ElastiCache | 2012-03-09 | AuthV2Query |
ElasticBeanstalk | 2010-12-01 | AuthV2Query |
ImportExport | 2010-06-01 | AuthV2Query |
SDB | 2009-04-15 | AuthV2Query |
SNS | 2010-03-31 | AuthV2Query |
SQS | 2011-10-01 | AuthV2Query |
CloudFront | 2012-03-15 | AuthV2REST |
SWF | 2012-01-25 | AuthV3JSON |
DynamoDB | 2011-12-05 | AuthV4JSON |
StorageGateway | 2012-04-30 | AuthV4JSON |
AutoScaling | 2011-01-01 | AuthV4Query |
CloudFormation | 2010-05-15 | AuthV4Query |
CloudSearch | 2011-02-01 | AuthV4Query |
CloudWatch | 2010-08-01 | AuthV4Query |
ELB | 2012-06-01 | AuthV4Query |
IAM | 2010-05-08 | AuthV4Query |
RDS | 2012-07-31 | AuthV4Query |
SES | 2010-12-01 | AuthV4Query |
STS | 2011-06-15 | AuthV4Query |
S3 | 2006-03-01 |
抜き出したコードはこれ
<?php require_once 'AWSSDKforPHP/sdk.class.php'; class AWSVersionChecker { const AWSSDK_DIR = '/opt/local/lib/php/AWSSDKforPHP'; private function get_class_list() { $d = dir(self::AWSSDK_DIR . "/services"); $classes = array(); while (false !== ($f = $d->read())) { if (preg_match("/class/", $f)) { $c = file_get_contents(self::AWSSDK_DIR . "/services/" . $f); $m = array(); if (preg_match("/.*class (.*?) extends CFRuntime.*/", $c, $m)) { $classes[] = $m[1]; } } } return $classes; } public function run() { $c = $this->get_class_list(); foreach ($c as $class_name) { $service = new Service($class_name); $service->print_summary(); } } } class Service { private $service_name; private $apis = array(); private $api_version; private $auth_class; public function print_summary() { echo "|" . $this->service_name . "|" . $this->api_version . "|" . $this->auth_class . "|\n"; } public function addApi(API $api) { $this->apis[] = $api; } public function __construct($name) { if ($name instanceof ReflectionClass) { $this->service_name = $name->getName(); } else { $this->service_name = $name; } $methods = $this->get_functions($this->service_name); foreach ($methods as $method) { $this->addApi(new API($method)); } $this->api_version = $this->get_apiversion($this->service_name); $this->auth_class = $this->get_auth_class($this->service_name); } private function get_functions($class_name) { $clazz = new ReflectionClass($class_name); $methods = $clazz->getMethods(); $functions = array(); foreach ($methods as $method) { $api = false; if ($method->getDeclaringClass()->getName() == $class_name && !$method->isConstructor() && $method->isPublic()) { if (preg_match('/.*return CFResponse.*/', $method->__toString())) { $a = $method->getName(); $parameters = $method->getParameters(); foreach ($parameters as $parameter) { if ($parameter->getName() == "opt") { $api = true; } } if ($api) { $functions[] = $method; } } } } return $functions; } private function get_apiversion($class_name) { return $this->get_parameter_value($class_name, "api_version"); } private function get_auth_class($class_name) { return $this->get_parameter_value($class_name, "auth_class"); } private function get_parameter_value($class_name, $param_name) { $clazz = new ReflectionClass($class_name); return $clazz->getProperty($param_name)->getValue($clazz->newInstance(array())); } private function get_parameter(ReflectionMethod $method) { $parameters = $method->getParameters(); $p = array(); foreach ($parameters as $parameter) { $p[] = $parameter; } } private function get_domain($class_name) { $clazz = new ReflectionClass($class_name); $us = $clazz->getConstant("REGION_US_E1"); if ($us === false) { $us = $clazz->getConstant("DEFAULT_URL"); } $subdomains = explode(".", $us); if (count($subdomains) > 0) { return $subdomains[0]; } return "unknown"; } } class API { private $name; private $parameters; public function addParameter(APIParameters $param) { $this->parameters[] = $param; } public function __construct($name) { if ($name instanceof ReflectionMethod) { $this->name = $name->getName(); foreach ($name->getParameters() as $param) { $this->addParameter(new APIParameters($param)); } } else { $this->name = $name; } } } class APIParameters { public $name; public $isRequire; public function get_name() { return $this->name; } public function __construct($name, $require = false, $default = null) { if ($name instanceof ReflectionParameter) { $this->name = $name->getName(); $this->isRequire = !$name->isOptional(); } else { $this->name = $name; $this->isRequire = $require; } } } $stf = new AWSVersionChecker(); $stf->run();