Регистрация и подготовка:
- Едем сюда https://www.copy.com/developer/signup и регистрируемся как разработчик.
- Потом здесь регистрируем наше приложение и ставим все галочки. Получаем Consumer key и Consumer secret и запоминаем их.
- Качаем мастер архив отсюда и заливаем папку на хостинг, в файле config.php изменяем значение параметра $callbackURL на верный путь до файла get_access_token.php.
- Заходим в эту папочку и вписываем на странице Set Consumer Key/Secret наши запомненные ранее данные
- Теперь едем в Default App Permissions и внизу жмем Manually continue to Copy Auth page на следующей странице жмем Allow — нас возвратят обратно и вручат Access Token и Access Token Secret
Обязательно потыкайтесь по страницам из скаченного архива, там есть примеры реализации работы с API, и собственно, весь код ниже взят от туда. Еще вот тут официальная документация.
На этом танцы с бубном завершены и можно приступать к самой работе.
Закачивание и изменение:
Тут соль в том, что типа есть форма, в которую подгружают файл и пишут его название, а он попадает в наше облачное хранилище:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
/* НИЖЕ КУЧА НАСТРОЕК ДЛЯ ОБРАЩЕНИЯ К API можно их не трогать */ $server = "api.copy.com"; $secure = true; $self_signed = false; $www = "www.copy.com"; $s = $secure ? 's' : ''; $requestURL = "http$s://$server/oauth/request"; $accessURL = "http$s://$server/oauth/access"; $apiURL = "http$s://$server/rest/"; $authorizeURL = "http$s://$www/applications/authorize"; /* ВПИШИТЕ ПОЛУЧЕННЫЕ ВАМИ ДАННЫЕ ИЗ РУБРИКИ ТАНЦЫ С БУБНОМ В ЭТИ ПЕРЕМЕННЫЕ */ $consumerKey = 'МНОГО_СИМВОЛОВ_ВСЯКИХ_БУКОВКОВ'; $consumerSecret = 'МНОГО_СИМВОЛОВ_ВСЯКИХ_БУКОВКОВ'; $token = 'МНОГО_СИМВОЛОВ_ВСЯКИХ_БУКОВКОВ'; $tokenSecret = 'МНОГО_СИМВОЛОВ_ВСЯКИХ_БУКОВКОВ'; $endpoint = 'files/'; // Работаем с файлами $filename = !empty($_POST['filename']) ? $_POST['filename'] : $_FILES['file']['name']; // Если название не написали, то достаем его из массива загруженных файлов $method = 'POST'; $overwrite = '?overwrite=true'; // если название загружаемого файла совпадет с существующим на сервере, то он заменится $boundary = "FormBoundary" . rand(1000000,9999999); // рандомная строка непонятно зачем $additional_errors = null; // видимо для дебага $encoded_file = file_get_contents($_FILES['upload']['tmp_name']); // берем файл /* ФОРМИРУЕМ ТЕЛО ЗАПРОСА */ $body = <<setToken($token, $tokenSecret); $OAuth->enableDebug(); if ($self_signed) $OAuth->disableSSLChecks(); /* ПРОБУЕМ ОТПРАВИТЬ */ try { $result = $OAuth->fetch($apiURL . $endpoint . $overwrite, str_replace('RAW_FILE_CONTENTS', $encoded_file, $body), $method, array( 'X-Api-Version' => '1', 'Accept' => 'application/json', 'Content-Type' => "multipart/form-data; boundary=----$boundary" )); } catch (OAuthException $E) { $additional_errors = $E->getMessage(); } unset($encoded_file); // уничтожаем переменную с файлом $response = $OAuth->getLastResponse(); // получаем ответ $response = @json_decode($response); // расджейсониваем его if (!$response->objects[0]->id) { // если нет ID файла то выводим ерор echo 'Something wrong oO'; } else { // иначе все гуд и продолжаем /* РАСШАРИВАЕМ ЕГО И СКЛЕИВАЕМ ПРЯМУЮ ССЫЛКУ */ $endpoint = 'links'; // теперь работаем с ссылками $method = 'POST'; $body = array(); // формируем тело запроса $body['public'] = true; // файл будет доступен всем $body['name'] = $filename; // имя файла $body['paths'][]= htmlentities("/copy/".$filename); // тут путь до файла, в моем случае он лежит в корневой папке $body = json_encode($body); // сджейсониваем массив /* ПРОБУЕМ ОТПРАВИТЬ */ try { $result = $OAuth->fetch($apiURL . $endpoint, $body, $method, array( 'X-Api-Version' => '1', 'Accept' => 'application/json' )); } catch (OAuthException $E) { $additional_errors = $E->getMessage(); } $response_body = $OAuth->getLastResponse(); // получаем ответ $response_body = @json_decode($response_body); // расджейсониваем его $link = 'http://copy.com/'.$response_body->id.'?download=1'; // тут будет прямая ссылка на скачивание |
Удаление
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
/* НИЖЕ КУЧА НАСТРОЕК ДЛЯ ОБРАЩЕНИЯ К API можно их не трогать */ $server = "api.copy.com"; $secure = true; $self_signed = false; $www = "www.copy.com"; $s = $secure ? 's' : ''; $requestURL = "http$s://$server/oauth/request"; $accessURL = "http$s://$server/oauth/access"; $apiURL = "http$s://$server/rest/"; $authorizeURL = "http$s://$www/applications/authorize"; /* ВПИШИТЕ ПОЛУЧЕННЫЕ ВАМИ ДАННЫЕ ИЗ РУБРИКИ ТАНЦЫ С БУБНОМ В ЭТИ ПЕРЕМЕННЫЕ */ $consumerKey = 'МНОГО_СИМВОЛОВ_ВСЯКИХ_БУКОВКОВ'; $consumerSecret = 'МНОГО_СИМВОЛОВ_ВСЯКИХ_БУКОВКОВ'; $token = 'МНОГО_СИМВОЛОВ_ВСЯКИХ_БУКОВКОВ'; $tokenSecret = 'МНОГО_СИМВОЛОВ_ВСЯКИХ_БУКОВКОВ'; $endpoint = 'files/'.$filename; // конечная точка = файл который нужно удалить $method = 'DELETE'; // УНИЧТОЖЕНИЕ $body = ''; // тело запроса в данном случае не нужно $OAuth = new OAuth($consumerKey, $consumerSecret); $OAuth->setToken($token, $tokenSecret); try { $result = $OAuth->fetch($apiURL . $endpoint, $body, $method, array( 'X-Api-Version' => '1', 'Accept' => 'application/json' )); } catch (OAuthException $E) { $additional_errors = $E->getMessage(); } |
Вот и все, вроде совсем не сложно