Class: BtSync

Inherits:
Object
  • Object
show all
Includes:
BtCommunicator, HTTParty
Defined in:
lib/btsync.rb,
lib/btsync/directory.rb

Defined Under Namespace

Classes: Directory

Instance Attribute Summary

Attributes included from BtCommunicator

#opts

Instance Method Summary collapse

Methods included from BtCommunicator

#auth, #cookies, #generate_secret, #get, #password, #path, #port, #protocol, #request_token, #root_url, #starter, #token, #token_path, #uri, #user

Constructor Details

#initialize(options = {}) ⇒ BtSync

Returns a new instance of BtSync.



13
14
15
16
17
# File 'lib/btsync.rb', line 13

def initialize(options = {})
  @opts = setup_opts(options)
  @errors = []
  @token_cache = 0
end

Instance Method Details

#add_folder(folder_name, my_secret = nil) ⇒ Object



94
95
96
97
98
99
100
101
102
103
# 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) ⇒ Object



66
67
68
69
70
# 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_versionObject



120
121
122
123
# File 'lib/btsync.rb', line 120

def check_new_version
  res = get(path('checknewversion'))
  res.parsed_response['version']
end

#device_nameObject



42
43
44
# File 'lib/btsync.rb', line 42

def device_name
  get_settings['devicename']
end

#device_name=(opt) ⇒ Object



58
59
60
# File 'lib/btsync.rb', line 58

def device_name=(opt)
  change_setting 'devicename', opt
end

#download_limitObject



38
39
40
# File 'lib/btsync.rb', line 38

def download_limit
  get_settings['dlrate'].to_i
end

#download_limit=(opt) ⇒ Object



54
55
56
# File 'lib/btsync.rb', line 54

def download_limit=(opt)
  change_setting 'dlrate', opt
end

#errorsObject



19
20
21
22
23
# File 'lib/btsync.rb', line 19

def errors
  errors = @errors
  @errors = []
  errors
end

#foldersObject



25
26
27
28
29
30
31
32
# 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 = '/') ⇒ Object



125
126
127
128
# 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_typeObject



110
111
112
113
# File 'lib/btsync.rb', line 110

def get_os_type
  res = get(path('getostype'))
  res.parsed_response['os']
end

#get_settingsObject



105
106
107
108
# File 'lib/btsync.rb', line 105

def get_settings
  res = get(path('getsettings'))
  res.parsed_response['settings']
end

#get_speedObject



72
73
74
# File 'lib/btsync.rb', line 72

def get_speed
  { up: speed('up'), down: speed('down') }
end

#get_versionObject



115
116
117
118
# File 'lib/btsync.rb', line 115

def get_version
  res = get(path('getversion'))
  res.parsed_response['version']
end

#listening_portObject



46
47
48
# File 'lib/btsync.rb', line 46

def listening_port
  get_settings['listeningport'].to_i
end

#listening_port=(opt) ⇒ Object



62
63
64
# File 'lib/btsync.rb', line 62

def listening_port=(opt)
  change_setting 'listeningport', opt
end

#remove_folder(folder_name, my_secret = nil) ⇒ Object



87
88
89
90
91
92
# 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) ⇒ Object



130
131
132
133
# File 'lib/btsync.rb', line 130

def secret(with_dir)
  f = folders.select { |folder| folder.name == with_dir }.first
  f.secret
end

#speed(type) ⇒ Object



76
77
78
79
80
81
82
83
84
85
# 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_limitObject



34
35
36
# File 'lib/btsync.rb', line 34

def upload_limit
  get_settings['ulrate'].to_i
end

#upload_limit=(opt) ⇒ Object



50
51
52
# File 'lib/btsync.rb', line 50

def upload_limit=(opt)
  change_setting 'ulrate', opt
end