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