class BtSync
Public Class Methods
new(options = {})
click to toggle source
# File lib/btsync.rb, line 13 def initialize(options = {}) @opts = setup_opts(options) @errors = [] @token_cache = 0 end
Public Instance Methods
add_folder(folder_name, my_secret = nil)
click to toggle source
# File lib/btsync.rb, line 94 def add_folder(folder_name, my_secret = nil) my_secret ||= generate_secret query = { name: folder_name, secret: my_secret } res = get(path('addsyncfolder'), query: query) unless res['error'] == 0 @errors << res['message'] return false end Directory.new(folder_name, my_secret, self) end
change_setting(type, opt)
click to toggle source
# File lib/btsync.rb, line 66 def change_setting(type, opt) options = get_settings.merge!({ type => opt }) get(path('setsettings'), query: options) end
check_new_version()
click to toggle source
# File lib/btsync.rb, line 120 def check_new_version res = get(path('checknewversion')) res.parsed_response['version'] end
device_name()
click to toggle source
# File lib/btsync.rb, line 42 def device_name get_settings['devicename'] end
device_name=(opt)
click to toggle source
# File lib/btsync.rb, line 58 def device_name=(opt) change_setting 'devicename', opt end
download_limit()
click to toggle source
# File lib/btsync.rb, line 38 def download_limit get_settings['dlrate'].to_i end
download_limit=(opt)
click to toggle source
# File lib/btsync.rb, line 54 def download_limit=(opt) change_setting 'dlrate', opt end
errors()
click to toggle source
# File lib/btsync.rb, line 19 def errors errors = @errors @errors = [] errors end
folders()
click to toggle source
# File lib/btsync.rb, line 25 def folders f = get_folder_list['folders'] folders = [] f.each do |folder| folders << Directory.new(folder['name'], folder['secret'], self) end folders end
get_dir(with_dir = '/')
click to toggle source
# File lib/btsync.rb, line 125 def get_dir(with_dir = '/') res = get(path('getdir'), query: { 'dir' => with_dir }) res.parsed_response['folders'].map { |f| f.gsub!('//', '/') } end
get_os_type()
click to toggle source
# File lib/btsync.rb, line 110 def get_os_type res = get(path('getostype')) res.parsed_response['os'] end
get_settings()
click to toggle source
# File lib/btsync.rb, line 105 def get_settings res = get(path('getsettings')) res.parsed_response['settings'] end
get_speed()
click to toggle source
# File lib/btsync.rb, line 72 def get_speed { up: speed('up'), down: speed('down') } end
get_version()
click to toggle source
# File lib/btsync.rb, line 115 def get_version res = get(path('getversion')) res.parsed_response['version'] end
listening_port()
click to toggle source
# File lib/btsync.rb, line 46 def listening_port get_settings['listeningport'].to_i end
listening_port=(opt)
click to toggle source
# File lib/btsync.rb, line 62 def listening_port=(opt) change_setting 'listeningport', opt end
remove_folder(folder_name, my_secret = nil)
click to toggle source
# File lib/btsync.rb, line 87 def remove_folder(folder_name, my_secret = nil) my_secret ||= secret(folder_name) query = { name: folder_name, secret: my_secret } get(path('removefolder'), query: query) true end
secret(with_dir)
click to toggle source
# File lib/btsync.rb, line 130 def secret(with_dir) f = folders.select { |folder| folder.name == with_dir }.first f.secret end
speed(type)
click to toggle source
# File lib/btsync.rb, line 76 def speed(type) case type when 'up' i = 0 when 'down' i = 1 end l = get_folder_list['speed'].split(', ')[i].split(' ') {speed: l[0].to_f, metric: l[1]} end
upload_limit()
click to toggle source
# File lib/btsync.rb, line 34 def upload_limit get_settings['ulrate'].to_i end
upload_limit=(opt)
click to toggle source
# File lib/btsync.rb, line 50 def upload_limit=(opt) change_setting 'ulrate', opt end
Private Instance Methods
defaults()
click to toggle source
# File lib/btsync.rb, line 146 def defaults { protocol: 'http', uri: 'localhost', port: '8888', user: 'admin', password: 'AdminPassword' } end
get_folder_list()
click to toggle source
# File lib/btsync.rb, line 156 def get_folder_list res = get(path('getsyncfolders')) @folder_list = res.parsed_response end
setup_opts(opts)
click to toggle source
# File lib/btsync.rb, line 137 def setup_opts(opts) opt = defaults.merge!(symbolize(opts)) opt[:uri].gsub!(%r(^(https?://){1,})i, '') @port = opt[:port] @user = opt[:user] @pass = opt[:password] opt end
symbolize(h)
click to toggle source
# File lib/btsync.rb, line 161 def symbolize(h) r = {} h.each do |k, v| if k.is_a? String r[:"#{k}"] = v else r[k] = v end end r end