summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-sdk-php/src/Api/DocModel.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/Api/DocModel.php')
-rw-r--r--vendor/aws/aws-sdk-php/src/Api/DocModel.php128
1 files changed, 128 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/Api/DocModel.php b/vendor/aws/aws-sdk-php/src/Api/DocModel.php
new file mode 100644
index 0000000..3cc4da6
--- /dev/null
+++ b/vendor/aws/aws-sdk-php/src/Api/DocModel.php
@@ -0,0 +1,128 @@
+<?php
+namespace Aws\Api;
+
+/**
+ * Encapsulates the documentation strings for a given service-version and
+ * provides methods for extracting the desired parts related to a service,
+ * operation, error, or shape (i.e., parameter).
+ */
+class DocModel
+{
+ /** @var array */
+ private $docs;
+
+ /**
+ * @param array $docs
+ *
+ * @throws \RuntimeException
+ */
+ public function __construct(array $docs)
+ {
+ if (!extension_loaded('tidy')) {
+ throw new \RuntimeException('The "tidy" PHP extension is required.');
+ }
+
+ $this->docs = $docs;
+ }
+
+ /**
+ * Convert the doc model to an array.
+ *
+ * @return array
+ */
+ public function toArray()
+ {
+ return $this->docs;
+ }
+
+ /**
+ * Retrieves documentation about the service.
+ *
+ * @return null|string
+ */
+ public function getServiceDocs()
+ {
+ return isset($this->docs['service']) ? $this->docs['service'] : null;
+ }
+
+ /**
+ * Retrieves documentation about an operation.
+ *
+ * @param string $operation Name of the operation
+ *
+ * @return null|string
+ */
+ public function getOperationDocs($operation)
+ {
+ return isset($this->docs['operations'][$operation])
+ ? $this->docs['operations'][$operation]
+ : null;
+ }
+
+ /**
+ * Retrieves documentation about an error.
+ *
+ * @param string $error Name of the error
+ *
+ * @return null|string
+ */
+ public function getErrorDocs($error)
+ {
+ return isset($this->docs['shapes'][$error]['base'])
+ ? $this->docs['shapes'][$error]['base']
+ : null;
+ }
+
+ /**
+ * Retrieves documentation about a shape, specific to the context.
+ *
+ * @param string $shapeName Name of the shape.
+ * @param string $parentName Name of the parent/context shape.
+ * @param string $ref Name used by the context to reference the shape.
+ *
+ * @return null|string
+ */
+ public function getShapeDocs($shapeName, $parentName, $ref)
+ {
+ if (!isset($this->docs['shapes'][$shapeName])) {
+ return '';
+ }
+
+ $result = '';
+ $d = $this->docs['shapes'][$shapeName];
+ if (isset($d['refs']["{$parentName}\$${ref}"])) {
+ $result = $d['refs']["{$parentName}\$${ref}"];
+ } elseif (isset($d['base'])) {
+ $result = $d['base'];
+ }
+
+ if (isset($d['append'])) {
+ $result .= $d['append'];
+ }
+
+ return $this->clean($result);
+ }
+
+ private function clean($content)
+ {
+ if (!$content) {
+ return '';
+ }
+
+ $tidy = new \tidy();
+ $tidy->parseString($content, [
+ 'indent' => true,
+ 'doctype' => 'omit',
+ 'output-html' => true,
+ 'show-body-only' => true,
+ 'drop-empty-paras' => true,
+ 'drop-font-tags' => true,
+ 'drop-proprietary-attributes' => true,
+ 'hide-comments' => true,
+ 'logical-emphasis' => true
+ ]);
+ $tidy->cleanRepair();
+
+ return (string) $content;
+ }
+}