class BtSync::Directory
Attributes
errors[R]
name[R]
secret[R]
Public Class Methods
new(name, secret, btsync)
click to toggle source
# File lib/btsync/directory.rb, line 8 def initialize(name, secret, btsync) @name = name @secret = secret @opts = btsync.opts find_or_create @errors = [] end
Public Instance Methods
add_host(host, port)
click to toggle source
# File lib/btsync/directory.rb, line 58 def add_host(host, port) query = { name: name, secret: secret, addr: host, port: port } get(path('addknownhosts'), query: query) true end
delete_to_trash=(opt)
click to toggle source
# File lib/btsync/directory.rb, line 122 def delete_to_trash=(opt) set_pref('deletetotrash', opt) end
delete_to_trash?()
click to toggle source
# File lib/btsync/directory.rb, line 126 def delete_to_trash? bool(preferences['deletetotrash']) end
destroy()
click to toggle source
# File lib/btsync/directory.rb, line 19 def destroy get(path('removefolder'), query: { name: name, secret: secret }) self.instance_variables.each { |v| v = nil } end
folders()
click to toggle source
# File lib/btsync/directory.rb, line 39 def folders res = get(path('getdir'), query: { dir: @name }) res.parsed_response['folders'] end
is_writable?()
click to toggle source
# File lib/btsync/directory.rb, line 130 def is_writable? bool(preferences['iswritable']) end
known_hosts()
click to toggle source
# File lib/btsync/directory.rb, line 50 def known_hosts query = { name: name, secret: secret } res = get(path('getknownhosts'), query: query) hosts = {} res['hosts'].map { |h| hosts[h['index']] = h['peer'] } hosts end
peers()
click to toggle source
# File lib/btsync/directory.rb, line 44 def peers res = get(path('getsyncfolders')) r = res.parsed_response['folders'].select { |f| f['name'] == name }.first r['peers'] end
preferences()
click to toggle source
# File lib/btsync/directory.rb, line 134 def preferences res = get(path('getfolderpref'), query: { name: @name, secret: @secret }) res.parsed_response['folderpref'] end
read_only_secret()
click to toggle source
# File lib/btsync/directory.rb, line 139 def read_only_secret preferences['readonlysecret'] end
remove_host(index)
click to toggle source
# File lib/btsync/directory.rb, line 64 def remove_host(index) host_name = known_hosts.select { |id, host| id == index } query = { name: name, secret: secret, index: index } get(path('removeknownhosts'), query: query) unless host_name.nil? || host_name.empty? known_hosts.select { |id, host| host == host_name }.empty? end
remove_host_by_ip(ip, port = nil)
click to toggle source
# File lib/btsync/directory.rb, line 71 def remove_host_by_ip(ip, port = nil) known_hosts.each do |id, host| host = host.split(':') if ip == host[0] next if port != host[1] unless port.nil? remove_host(id) end end end
search_dht=(opt)
click to toggle source
# File lib/btsync/directory.rb, line 106 def search_dht=(opt) set_pref('searchdht', opt) end
search_dht?()
click to toggle source
# File lib/btsync/directory.rb, line 110 def search_dht? bool(preferences['searchdht']) end
search_lan=(opt)
click to toggle source
# File lib/btsync/directory.rb, line 98 def search_lan=(opt) set_pref('searchlan', opt) end
search_lan?()
click to toggle source
# File lib/btsync/directory.rb, line 102 def search_lan? bool(preferences['searchlan']) end
update_secret(new_secret = generate_secret)
click to toggle source
# File lib/btsync/directory.rb, line 24 def update_secret(new_secret = generate_secret) query = secret_params(new_secret) res = get(path('updatesecret'), query: query) p = res.parsed_response if p != {} @secret = new_secret true else if p == {} @errors << "Invalid Secret" end false end end
use_hosts=(opt)
click to toggle source
# File lib/btsync/directory.rb, line 90 def use_hosts=(opt) set_pref('usehosts', opt) end
use_hosts?()
click to toggle source
# File lib/btsync/directory.rb, line 94 def use_hosts? bool(preferences['usehosts']) end
use_relay=(opt)
click to toggle source
# File lib/btsync/directory.rb, line 114 def use_relay=(opt) set_pref('relay', opt) end
use_relay?()
click to toggle source
# File lib/btsync/directory.rb, line 118 def use_relay? bool(preferences['relay']) end
use_tracker=(opt)
click to toggle source
# File lib/btsync/directory.rb, line 82 def use_tracker=(opt) set_pref('usetracker', opt) end
use_tracker?()
click to toggle source
# File lib/btsync/directory.rb, line 86 def use_tracker? bool(preferences['usetracker']) end
Private Instance Methods
bool(i)
click to toggle source
# File lib/btsync/directory.rb, line 182 def bool(i) i = i.to_i if i == 0 false else true end end
bool_to_i(bool)
click to toggle source
# File lib/btsync/directory.rb, line 191 def bool_to_i(bool) if bool 1 else 0 end end
default_settings()
click to toggle source
# File lib/btsync/directory.rb, line 150 def default_settings get(path('setfolderpref'), query: defaults) end
defaults()
click to toggle source
# File lib/btsync/directory.rb, line 154 def defaults { 'name' => @name, 'secret' => @secret, 'relay' => 1, 'usetracker' => 1, 'searchlan' => 1, 'searchdht' => 0, 'deletetotrash' => 1, 'usehosts' => 1 } end
find_or_create()
click to toggle source
# File lib/btsync/directory.rb, line 199 def find_or_create res = get(path('getsyncfolders')) folder_list = res.parsed_response['folders'] if folder_list.map { |f| f['name'] }.include? name true else res = get(path('addsyncfolder'), query: { name: name, secret: secret }) end end
make_opts(name, opt)
click to toggle source
# File lib/btsync/directory.rb, line 167 def make_opts(name, opt) opts = preferences opts[name] = bool_to_i(opt) opts.delete('readonlysecret') opts.merge!({ name: @name, secret: @secret }) end
secret_params(s)
click to toggle source
# File lib/btsync/directory.rb, line 174 def secret_params(s) { name: @name, secret: @secret, newsecret: s } end
set_pref(pref, opt)
click to toggle source
# File lib/btsync/directory.rb, line 145 def set_pref(pref, opt) get(path('setfolderpref'), query: make_opts(pref, opt)) true end