{"id":19451021,"url":"https://github.com/variar/dropbox-fake","last_synced_at":"2026-06-13T03:02:47.359Z","repository":{"id":145912506,"uuid":"46083758","full_name":"variar/dropbox-fake","owner":"variar","description":null,"archived":false,"fork":false,"pushed_at":"2016-09-06T08:55:10.000Z","size":52,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-25T09:29:28.579Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/variar.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-11-12T22:05:21.000Z","updated_at":"2016-09-06T08:45:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"f176e7b6-bec5-4948-abde-0d983c8dccb6","html_url":"https://github.com/variar/dropbox-fake","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/variar/dropbox-fake","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/variar%2Fdropbox-fake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/variar%2Fdropbox-fake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/variar%2Fdropbox-fake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/variar%2Fdropbox-fake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/variar","download_url":"https://codeload.github.com/variar/dropbox-fake/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/variar%2Fdropbox-fake/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34270417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T16:39:53.734Z","updated_at":"2026-06-13T03:02:47.342Z","avatar_url":"https://github.com/variar.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dropbox Fake\n\n[![Build Status](https://travis-ci.org/variar/dropbox-fake.svg)](https://travis-ci.org/variar/dropbox-fake)\n\nЗаглушка, реализующая подмножество Dropbox REST API v1, достаточное для\nработы простых программ резервного копирования.\n\nДля работы нужно каким-либо образом перенаправить https запросы к\napi.dropboxapi.com, content.dropboxapi.com и www.dropbox.com\nна эту заглушку (hosts, fiddler, nginx?)\n\n## Установка и запуск\n1. [Установите Node.js][] (возможно, потребуется настроить прокси для npm)\n2. Перейдите в папку с исходным кодом приложения\n3. Выполните `npm install --production`, чтобы скачать и установить зависимости.\n4. Укажите в файле .env свои настройки портов (по-умолчанию 3000-http, 3001-https).\n5. Вывполните `npm start`, чтобы запустить приложение.\n\nЕсли используются стандартные порты (80, 443), то, возможно, потребуется\nзапускать с правами администратора.\n\n### Настройка прокси для npm\n1. `npm config set strict-ssl false`\n2. `npm config set registry \"http://registry.npmjs.org\"`\n3. `npm config set proxy http://user:password@proxy.server:1234`\n\nЕсли в имени пользователя/пароле есть спец.символы,\nто нужно преобразовать эти строки в urlencoded-форму.\n\n## Запуск тестов\nВместе с заглушкой поставляется два набора тестов:\n1. Юнит-тесты в папке `test`. Для из запуска используется фреймворк `mocha`\n(копия устанавливается вместе с dev-зависимостями).\n2. Функциональные тесты в папке `test-rest`. Эти тесты запускаются\nкак отдельное приложение, сами запускают сервер и выполняют ряд типичных\nhttp-запросов.\n\nДля запуска тестов нужно доустановить dev-зависимости с помощью команды\n`npm install --dev` в папке с приложением.\n\nКоманда `npm test` запустит все тесты. Команда `npm run test-rest` - только функциональные.\n\n## Авторизация пользователей по OAuth\nВ заглушке реализована авторизация по [OAuth 1.0][]. Процедура состоит из трех шагов:\n1. get request_token -- получить временный токен для второго шага авторизации.\n2. authorize -- открыть страницу в браузере, где пользователь поддтвердит запрос.\n3. get access_token -- получить постоянный токен, поддвержденный пользователем.\n\nВ Dropbox на шаге 2 открывается веб-страница, где пользователь может\nразрешить доступ или отказаться. В этой заглушке на шаге 2 открывается пустая\nстраница, а доступ автоматически разрешается.\nПоведение может измениться в будущем.\n\nOAuth в заглушке реализован корректно в части проверки валиндности request_token\nна втором шаге и проверки авторизованности request_token на третьем шаге.\n\nПри этом не проверяются consumer_secret. В Dropbox они используются для\nподключения различных приложений к одному аккаунту.\n\nДля всех последующих запросов к api производится проверка соответствия токена\nи секрета.\n\nТокены по умолчанию хранятся в базе данных (`data\\db.json`).\nЕсли сохранять токены между запусками заглушики не требуется,\nто нужно в файле `.env` закомментировать `SAVE_DB=true`.\n\n## Хранение загруженных данных\nДля каждого пользователя в процессе авторизации по OAuth генерируется\nтокен (guid). Для этого токена создаются папки в каталогах `data` и `chunks`.\nВ папку `data\\\u003ctoken\u003e` будут загружаться данные пользователя\n(аналог папки приложения в Dropbox). В папку `chunks\\\u003ctoken\u003e` будут загружаться\nчастично загруженные файлы, которые по окончанию загрузки перемещаются в\n`data\\\u003ctoken\u003e`.\n\nСервис сообщает, что пользователю доступно 2Гб данных. В реальности этот лимит\nникак не проверяется.\n\n## Работа по https\nДля работы по https используется самоподписанный сертификат,\nкоторый выписан для адресов dropbox.com, www.dropbox.com,\napi.dropboxapi.com, content.dropboxapi.com.\n\nСертификат, ключ и настройки для openssl лежат в папке `cert`.\nВозможно, потребуется установить его в качестве доверенного сертификата\nв вашей ОС.\n\n## Имитация выключения API V1\nДля тестирования реакции на отключения устаревшего API V1 нужно в файле .env\n(либо в переменных окружения) выставить переменную DISABLE_V1=true.\nВ этом случае на все запросы будет возвращаться ошибка 400 с телом\n{\"error\": \"v1_retired\"}.\n\n[Установите Node.js]: https://nodejs.org/en/download/\n[OAuth 1.0]: http://oauth.net/core/1.0/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvariar%2Fdropbox-fake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvariar%2Fdropbox-fake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvariar%2Fdropbox-fake/lists"}