Erfiat (f3ex) wrote,
Erfiat
f3ex

Работа с Dropbox из ruby

Запись опубликована F3ex's blog. Пожалуйста оставляйте свои комментарии тут.

На сервере можно в принципе запустить и консольного демона Dropbox и копировать данные туда. Но жрет он 170 метров даже в таком виде. Запускать его только в на время бекапа, тут тоже есть загвоздка с обратной связью — как узнать что закончена синхронизация.

Но разработчики нам предоставляют еще и API, можно написать консольный бекапер, который будет напрямую слать по HTTP(?) данные сразу в Dropbox.

В их примере для авторизации надо каждый раз при запуске приложения его подтверждать в админке DrobBox’a. Надо было разобраться с токенами.

Скрипт авторизации dropbbox_auth.rb

require 'rubygems'
# This references the Dropbox SDK gem install with "gem install dropbox-sdk"
require 'dropbox_sdk'
 
# Данные ключи выдаются при регистрации своего приложения на сервере dropbox https://www.dropbox.com/developers/apps
APP_KEY = 'Ключ приложения'
APP_SECRET = 'Секретный код приложения'
 
# ACCESS_TYPE should be ':dropbox' or ':app_folder' as configured for your app
ACCESS_TYPE = :app_folder
session = DropboxSession.new(APP_KEY, APP_SECRET)
 
session.get_request_token
authorize_url = session.get_authorize_url
 
# Make the user log in and authorize this token
puts "AUTHORIZING", authorize_url
puts "Please visit that website and hit 'Allow', then hit Enter here."
gets
 
p session.get_request_token

Проходим по ссылке в браузере, подтверждаем, затем возвращаемся к консоли и жмем Enter и записываем их вывода key и secret

Теперь второй файл, который уже будет работать напрямую с дропбоком.

require 'rubygems'
# This references the Dropbox SDK gem install with "gem install dropbox-sdk"
require 'dropbox_sdk'
 
# Данные ключи выдаются при регистрации своего приложения на сервере dropbox <a href="https://www.dropbox.com/developers/apps" target="_blank">https://www.dropbox.com/developers/apps</a>
APP_KEY = 'Ключ приложения'
APP_SECRET = 'Секретный код приложения'
 
# ACCESS_TYPE should be ':dropbox' or ':app_folder' as configured for your app
ACCESS_TYPE = :app_folder
session = DropboxSession.new(APP_KEY, APP_SECRET)
 
ACCESS_TOKEN = "Полученный выше ключ"
ACCESS_TOKEN_SECRET = "Полученный выше секретный ключ"
 
session.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
 
client = DropboxClient.new(session, ACCESS_TYPE)
puts "linked account:", client.account_info().inspect

Пример с питоном можно найти тут

Tags: linux
Subscribe
Comments for this post were disabled by the author