summaryrefslogtreecommitdiff
path: root/vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php')
-rw-r--r--vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php89
1 files changed, 89 insertions, 0 deletions
diff --git a/vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php b/vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php
new file mode 100644
index 0000000..0748b5a
--- /dev/null
+++ b/vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php
@@ -0,0 +1,89 @@
+<?php
+
+namespace Guzzle\Service\Command;
+
+/**
+ * A command that creates requests based on {@see Guzzle\Service\Description\OperationInterface} objects, and if the
+ * matching operation uses a service description model in the responseClass attribute, then this command will marshal
+ * the response into an associative array based on the JSON schema of the model.
+ */
+class OperationCommand extends AbstractCommand
+{
+ /** @var RequestSerializerInterface */
+ protected $requestSerializer;
+
+ /** @var ResponseParserInterface Response parser */
+ protected $responseParser;
+
+ /**
+ * Set the response parser used with the command
+ *
+ * @param ResponseParserInterface $parser Response parser
+ *
+ * @return self
+ */
+ public function setResponseParser(ResponseParserInterface $parser)
+ {
+ $this->responseParser = $parser;
+
+ return $this;
+ }
+
+ /**
+ * Set the request serializer used with the command
+ *
+ * @param RequestSerializerInterface $serializer Request serializer
+ *
+ * @return self
+ */
+ public function setRequestSerializer(RequestSerializerInterface $serializer)
+ {
+ $this->requestSerializer = $serializer;
+
+ return $this;
+ }
+
+ /**
+ * Get the request serializer used with the command
+ *
+ * @return RequestSerializerInterface
+ */
+ public function getRequestSerializer()
+ {
+ if (!$this->requestSerializer) {
+ // Use the default request serializer if none was found
+ $this->requestSerializer = DefaultRequestSerializer::getInstance();
+ }
+
+ return $this->requestSerializer;
+ }
+
+ /**
+ * Get the response parser used for the operation
+ *
+ * @return ResponseParserInterface
+ */
+ public function getResponseParser()
+ {
+ if (!$this->responseParser) {
+ // Use the default response parser if none was found
+ $this->responseParser = OperationResponseParser::getInstance();
+ }
+
+ return $this->responseParser;
+ }
+
+ protected function build()
+ {
+ // Prepare and serialize the request
+ $this->request = $this->getRequestSerializer()->prepare($this);
+ }
+
+ protected function process()
+ {
+ // Do not process the response if 'command.response_processing' is set to 'raw'
+ $this->result = $this[self::RESPONSE_PROCESSING] == self::TYPE_RAW
+ ? $this->request->getResponse()
+ : $this->getResponseParser()->parse($this);
+ }
+}