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

Return hash instead of full URL

parent 29b76961
...@@ -35,14 +35,30 @@ Methods ...@@ -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 ### uploadFromFile
string AttachmentsClient\AttachmentsClient::uploadFromFile(string $filename) string AttachmentsClient\AttachmentsClient::uploadFromFile(string $filename)
Загружает файл с диска на сервер (по имени файла). Загружает файл с диска на сервер (по имени файла).
Возвращает ссылку на загрузку файла (с учётом baseUrl, Возвращает хэш загруженного файла.
переданного в конструктор)
При ошибках выбрасывается исключение. При ошибках выбрасывается исключение.
* Visibility: **public** * Visibility: **public**
...@@ -55,19 +71,34 @@ Methods ...@@ -55,19 +71,34 @@ Methods
### uploadFromMemory ### uploadFromMemory
string AttachmentsClient\AttachmentsClient::uploadFromMemory(string $data, string $name) string AttachmentsClient\AttachmentsClient::uploadFromMemory(mixed $data, string $name)
Загружает файл из памяти на сервер. Загружает файл из памяти на сервер.
Возвращает ссылку на загрузку файла (с учётом baseUrl, Возвращает хэш загруженного файла.
переданного в конструктор)
При ошибках выбрасывается исключение. При ошибках выбрасывается исключение.
* Visibility: **public** * Visibility: **public**
#### Arguments #### Arguments
* $data **string** - <p>Данные для загрузки</p> * $data **mixed** - <p>Данные для загрузки - строка (string) или поток (stream)</p>
* $name **string** - <p>(необязательно) Имя файла, по умолчанию - file</p> * $name **string** - <p>(необязательно) Имя файла, по умолчанию - file</p>
### getUploadUrl
string AttachmentsClient\AttachmentsClient::getUploadUrl()
Возвращает URL для заливки (upload) файла. Вынесено в отдельный
protected-метод, чтобы можно было переопределить это в субклассе,
на случай если сервер использует нестандартное название для
метода загрузки.
* Visibility: **protected**
...@@ -34,7 +34,7 @@ $ composer install ...@@ -34,7 +34,7 @@ $ composer install
Чтобы сгенерировать документацию (нужен phpdoc): Чтобы сгенерировать документацию (нужен 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 $ vendor/bin/phpdocmd docs/structure.xml
``` ```
......
...@@ -23,9 +23,20 @@ class AttachmentsClient { ...@@ -23,9 +23,20 @@ class AttachmentsClient {
// *** Public API methods *** // *** 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 Путь к файлу * @param string $filename Путь к файлу
...@@ -42,8 +53,7 @@ class AttachmentsClient { ...@@ -42,8 +53,7 @@ class AttachmentsClient {
/** /**
* Загружает файл из памяти на сервер. * Загружает файл из памяти на сервер.
* Возвращает ссылку на загрузку файла (с учётом baseUrl, * Возвращает хэш загруженного файла.
* переданного в конструктор).
* При ошибках выбрасывается исключение. * При ошибках выбрасывается исключение.
* *
* @param mixed $data Данные для загрузки - строка (string) или поток (stream) * @param mixed $data Данные для загрузки - строка (string) или поток (stream)
...@@ -52,21 +62,29 @@ class AttachmentsClient { ...@@ -52,21 +62,29 @@ class AttachmentsClient {
* @return string * @return string
*/ */
public function uploadFromMemory ($data, $name = 'file') { public function uploadFromMemory ($data, $name = 'file') {
$url = $this->getFullMethodUrl('/ul'); $url = $this->getUploadUrl();
$result = $this->sendPostRequestWithFile ($url, $data, $name); $result = $this->sendPostRequestWithFile ($url, $data, $name);
$json = json_decode($result, true); $json = json_decode($result, true);
return $this->getDownloadUrl($json['id'], $json['filename']); return $json['id'];
} }
// *** End of public API methods *** // *** 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) { private function ensureNotEndsWithSlash ($url) {
return $this->baseUrl . '/dl/' . $hash . '/' . $name; return rtrim($url, '/');
} }
private function getFullMethodUrl ($method) { 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