59 public function __construct(array $params = [], array $files = [], $boundary =
null)
61 $this->params = $params;
62 $this->files = $files;
63 $this->boundary = $boundary ?: uniqid();
74 $params = $this->getNestedParams($this->params);
75 foreach ($params
as $k => $v) {
76 $body .= $this->getParamString($k, $v);
80 foreach ($this->files
as $k => $v) {
81 $body .= $this->getFileString($k, $v);
85 $body .=
"--{$this->boundary}--\r\n";
97 return $this->boundary;
108 private function getFileString($name,
FacebookFile $file)
111 "--%s\r\nContent-Disposition: form-data; name=\"%s\"; filename=\"%s\"%s\r\n\r\n%s\r\n",
115 $this->getFileHeaders($file),
128 private function getParamString($name, $value)
131 "--%s\r\nContent-Disposition: form-data; name=\"%s\"\r\n\r\n%s\r\n",
145 private function getNestedParams(array $params)
147 $query = http_build_query($params,
null,
'&');
148 $params = explode(
'&', $query);
151 foreach ($params
as $param) {
152 list($key, $value) = explode(
'=', $param, 2);
153 $result[urldecode($key)] = urldecode($value);
168 return "\r\nContent-Type: {$file->getMimetype()}";