/**
  * Processes a view script and returns the output.
  *
  * @param  string|ModelInterface $nameOrModel The script/resource process, or a view model
  * @param  null|array|\ArrayAccess $values Values to use during rendering
  * @return string The script output.
  */
 public function render($nameOrModel, $values = null)
 {
     if ($values === null) {
         $values = array();
     }
     if (is_string($nameOrModel)) {
         $values['payload'] = $nameOrModel;
         $nameOrModel = new TwilioModel($values);
     }
     if ($nameOrModel instanceof ViewModel) {
         if (!$nameOrModel instanceof TwilioModel) {
             $vars = $nameOrModel->getVariables();
             $options = $nameOrModel->getOptions();
             $nameOrModel = new TwilioModel($vars, $options);
         }
     }
     if (!$nameOrModel instanceof TwilioModel) {
         throw new \InvalidArgumentException(sprintf('%s expects a ViewModel or a string feed type as the first argument; received "%s"', __METHOD__, is_object($nameOrModel) ? get_class($nameOrModel) : gettype($nameOrModel)));
     }
     // Get feed and type
     $response = $nameOrModel->getResponse();
     if ($response instanceof Services_Twilio_Twiml) {
         $response = $response->__toString();
     }
     return $response;
 }
 public function processTwilio()
 {
     $responder = $this->getResponder();
     $response = $responder->getTwilioResponse();
     $viewModel = new TwilioModel();
     $viewModel->setResponse($response);
     return $viewModel;
 }
 public function testCanRenderStringPayload()
 {
     $twiml = '<?xml version="1.0" encoding="UTF-8"?><Response><Say>Hello</Say></Response>';
     $model = new TwilioModel(array('payload' => $twiml));
     $model->setContentType('application/xml');
     $test = $this->renderer->render($model);
     $this->assertEquals('<?xml version="1.0" encoding="UTF-8"?><Response><Say>Hello</Say></Response>', str_replace("\n", "", $test));
 }
 public function testTextContentTypeIsCalculatedForStringResponse()
 {
     $this->model->setResponse('String Response');
     $this->assertEquals('text/plain', $this->model->getContentType());
 }