Commit 4f7de993 authored by Dmitry Nikulin's avatar Dmitry Nikulin

Return hash instead of full URL

parent 29b76961
......@@ -35,14 +35,30 @@ Methods
### getDownloadUrl
string AttachmentsClient\AttachmentsClient::getDownloadUrl(string $hash, string $name)
Возвращает URL для скачивания файла по его хэшу и имени.
* Visibility: **public**
#### Arguments
* $hash **string** - <p>Хэш файла, полученный от метода загрузки.</p>
* $name **string** - <p>(необязательно) Имя файла, по умолчанию - file</p>
### uploadFromFile
string AttachmentsClient\AttachmentsClient::uploadFromFile(string $filename)
Загружает файл с диска на сервер (по имени файла).
Возвращает ссылку на загрузку файла (с учётом baseUrl,
переданного в конструктор)
Возвращает хэш загруженного файла.
При ошибках выбрасывается исключение.
* Visibility: **public**
......@@ -55,19 +71,34 @@ Methods
### uploadFromMemory
string AttachmentsClient\AttachmentsClient::uploadFromMemory(string $data, string $name)
string AttachmentsClient\AttachmentsClient::uploadFromMemory(mixed $data, string $name)
Загружает файл из памяти на сервер.
Возвращает ссылку на загрузку файла (с учётом baseUrl,
переданного в конструктор)
Возвращает хэш загруженного файла.
При ошибках выбрасывается исключение.
* Visibility: **public**
#### Arguments
* $data **string** - <p>Данные для загрузки</p>
* $data **mixed** - <p>Данные для загрузки - строка (string) или поток (stream)</p>
* $name **string** - <p>(необязательно) Имя файла, по умолчанию - file</p>
### getUploadUrl
string AttachmentsClient\AttachmentsClient::getUploadUrl()
Возвращает URL для заливки (upload) файла. Вынесено в отдельный
protected-метод, чтобы можно было переопределить это в субклассе,
на случай если сервер использует нестандартное название для
метода загрузки.
* Visibility: **protected**
......@@ -34,7 +34,7 @@ $ composer install
Чтобы сгенерировать документацию (нужен phpdoc):
```
$ phpdoc -d src -t docs --visibility=public --template=xml
$ phpdoc -d src -t docs --visibility=public,protected --template=xml
$ vendor/bin/phpdocmd docs/structure.xml
```
......
......@@ -23,9 +23,20 @@ class AttachmentsClient {
// *** Public API methods ***
/**
* Возвращает URL для скачивания файла по его хэшу и имени.
*
* @param string $hash Хэш файла, полученный от метода загрузки.
* @param string $name (необязательно) Имя файла, по умолчанию - file
*
* @return string
*/
public function getDownloadUrl ($hash, $name) {
return $this->baseUrl . '/dl/' . $hash . '/' . $name;
}
/**
* Загружает файл с диска на сервер (по имени файла).
* Возвращает ссылку на загрузку файла (с учётом baseUrl,
* переданного в конструктор).
* Возвращает хэш загруженного файла.
* При ошибках выбрасывается исключение.
*
* @param string $filename Путь к файлу
......@@ -42,8 +53,7 @@ class AttachmentsClient {
/**
* Загружает файл из памяти на сервер.
* Возвращает ссылку на загрузку файла (с учётом baseUrl,
* переданного в конструктор).
* Возвращает хэш загруженного файла.
* При ошибках выбрасывается исключение.
*
* @param mixed $data Данные для загрузки - строка (string) или поток (stream)
......@@ -52,21 +62,29 @@ class AttachmentsClient {
* @return string
*/
public function uploadFromMemory ($data, $name = 'file') {
$url = $this->getFullMethodUrl('/ul');
$url = $this->getUploadUrl();
$result = $this->sendPostRequestWithFile ($url, $data, $name);
$json = json_decode($result, true);
return $this->getDownloadUrl($json['id'], $json['filename']);
return $json['id'];
}
// *** End of public API methods ***
private function ensureNotEndsWithSlash ($url) {
return rtrim($url, '/');
/**
* Возвращает URL для заливки (upload) файла. Вынесено в отдельный
* protected-метод, чтобы можно было переопределить это в субклассе,
* на случай если сервер использует нестандартное название для
* метода загрузки.
*
* @return string
*/
protected function getUploadUrl () {
return $this->getFullMethodUrl('/ul');
}
private function getDownloadUrl ($hash, $name) {
return $this->baseUrl . '/dl/' . $hash . '/' . $name;
private function ensureNotEndsWithSlash ($url) {
return rtrim($url, '/');
}
private function getFullMethodUrl ($method) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment