public function put($uri, array $data)
    {
        // PUT requests need an fopen wrapper, so we'll create a temporary one
        // for the data to submit...
        $json = json_encode($data);
        $file = fopen('php://temp', 'w+');
        fwrite($file, $json, strlen($json));
        fseek($file, 0);

        $options = array(
            CURLOPT_URL => $this->domain.'/'.ltrim($uri, '/'),
            CURLOPT_FOLLOWLOCATION => 1,
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_PUT => 1,
            CURLOPT_INFILE => $file,
            CURLOPT_INFILESIZE => strlen($json),
        );

        $result = $this->exec($options);

        fclose($file);

        return $result;
    }