Bitbucket api неправильно загружает zip-файл, используя библиотеку php HttpFul - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь интегрировать 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.

...