Я пытаюсь интегрировать bitbucket api в свое приложение. Мое приложение генерирует zip-файлы, которые мне нужно загрузить в bitbucket, для этого я использую библиотеку php Httpful. Ниже приведен пример кода, буду признателен, если кто-то может помочь.
Примечание: С помощью следующего кода я могу загрузить файл в bitbucket, но когда я извлекаю репозиторий и пытаюсь разархивировать файл, файл поврежден и выдает сообщение, не распознаваемое в состоянии формат.
$sourceFileInfo = $this-> getFileRealName($this->getFile());
$url = sprintf("https://api.bitbucket.org/2.0/repositories/{$bitbucketSettings->userName}/{$bitbucketSettings->repoName}/src");
$base64 = base64_encode($bitbucketSettings->userName.':'.$bitbucketSettings->password);
$commitMessage = "This is the commit from my application";
$body = array (
'message' => $commitMessage,
'file' => $sourceFileInfo['actualPath'],
'branch' => $this->getSettings()->branch,
'folder' => '/'.$bitbucketSettings->folder . '/'. $sourceFileInfo['realName']
);
$response = \Httpful\Request::post($url)
->addHeader('Authorization', "Basic $base64")
->addHeaders(
array(
'Accept-Encoding' => 'gzip, deflate',
'Host' => 'api.bitbucket.org',
'Cache-Control' => 'no-cache',
'Accept' => '*/*',
)
)
->sendsType(Mime::FORM)
->body(
'branch='.$body['branch'].
"&message=" .$body['message'].
"&{$body['folder']}=" .base64_encode(file_get_contents($body['file']))
)
-> send();
getFileRealName () просто возвращает имя файла, а realPath в основном pathinfo.