You are here

static function OAuthBodyContentDisposition::encodeBody in Lingotek Translation 7.4

Same name and namespace in other branches
  1. 7.7 lib/oauth-php/library/body/OAuthBodyContentDisposition.php \OAuthBodyContentDisposition::encodeBody()
  2. 7.2 lib/oauth-php/library/body/OAuthBodyContentDisposition.php \OAuthBodyContentDisposition::encodeBody()
  3. 7.3 lib/oauth-php/library/body/OAuthBodyContentDisposition.php \OAuthBodyContentDisposition::encodeBody()
  4. 7.5 lib/oauth-php/library/body/OAuthBodyContentDisposition.php \OAuthBodyContentDisposition::encodeBody()
  5. 7.6 lib/oauth-php/library/body/OAuthBodyContentDisposition.php \OAuthBodyContentDisposition::encodeBody()

Builds the request string.

The files array can be a combination of the following (either data or file):

file => "path/to/file", filename=, mime=, data=

Parameters

array files (name => filedesc) (not urlencoded):

Return value

array (headers, body)

1 call to OAuthBodyContentDisposition::encodeBody()
LingotekOAuthRequester::doRequest in lib/oauth-php/library/LingotekOAuthRequester.php
* Perform the request, returns the response code, headers and body. * *

File

lib/oauth-php/library/body/OAuthBodyContentDisposition.php, line 44

Class

OAuthBodyContentDisposition
Add the extra headers for a PUT or POST request with a file.

Code

static function encodeBody($files) {
  $headers = array();
  $body = null;

  // 1. Add all the files to the post
  if (!empty($files)) {
    foreach ($files as $name => $f) {
      $data = false;
      $filename = false;
      if (isset($f['filename'])) {
        $filename = $f['filename'];
      }
      if (!empty($f['file'])) {
        $data = @file_get_contents($f['file']);
        if ($data === false) {
          throw new OAuthException2(sprintf('Could not read the file "%s" for request body', $f['file']));
        }
        if (empty($filename)) {
          $filename = basename($f['file']);
        }
      }
      else {
        if (isset($f['data'])) {
          $data = $f['data'];
        }
      }

      // When there is data, add it as a request body, otherwise silently skip the upload
      if ($data !== false) {
        if (isset($headers['Content-Disposition'])) {
          throw new OAuthException2('Only a single file (or data) allowed in a signed PUT/POST request body.');
        }
        if (empty($filename)) {
          $filename = 'untitled';
        }
        $mime = !empty($f['mime']) ? $f['mime'] : 'application/octet-stream';
        $headers['Content-Disposition'] = 'attachment; filename="' . OAuthBodyContentDisposition::encodeParameterName($filename) . '"';
        $headers['Content-Type'] = $mime;
        $body = $data;
      }
    }

    // When we have a body, add the content-length
    if (!is_null($body)) {
      $headers['Content-Length'] = strlen($body);
    }
  }
  return array(
    $headers,
    $body,
  );
}