Class: BtSync::Directory

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

Instance Attribute Summary collapse

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(name, secret, btsync) ⇒ Directory

Returns a new instance of Directory.



9
10
11
12
13
14
15
16
17
18
# File 'lib/btsync/directory.rb', line 9

def initialize(name, secret, btsync)
  @name = name
  @secret = secret

  @opts = btsync.opts

  find_or_create

  @errors = []
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



7
8
9
# File 'lib/btsync/directory.rb', line 7

def errors
  @errors
end

#nameObject (readonly)

Returns the value of attribute name.



7
8
9
# File 'lib/btsync/directory.rb', line 7

def name
  @name
end

#secretObject (readonly)

Returns the value of attribute secret.



7
8
9
# File 'lib/btsync/directory.rb', line 7

def secret
  @secret
end

Instance Method Details

#add_host(host, port) ⇒ Object



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

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) ⇒ Object



128
129
130
# File 'lib/btsync/directory.rb', line 128

def delete_to_trash=(opt)
  set_pref('deletetotrash', opt)
end

#delete_to_trash?Boolean

Returns:

  • (Boolean)


132
133
134
# File 'lib/btsync/directory.rb', line 132

def delete_to_trash?
  bool(preferences['deletetotrash'])
end

#destroyObject



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

def destroy
  get(path('removefolder'), query: { name: name, secret: secret })
  self.instance_variables.each { |v| v = nil }
end

#foldersObject



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

def folders
  res = get(path('getdir'), query: { dir: @name })
  res.parsed_response['folders']
end

#is_writable?Boolean

Returns:

  • (Boolean)


136
137
138
# File 'lib/btsync/directory.rb', line 136

def is_writable?
  bool(preferences['iswritable'])
end

#known_hostsObject



53
54
55
56
57
58
59
# File 'lib/btsync/directory.rb', line 53

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

#peersObject



47
48
49
50
51
# File 'lib/btsync/directory.rb', line 47

def peers
  res = get(path('getsyncfolders'))
  r = res.parsed_response['folders'].select { |f| f['name'] == name }.first
  r['peers']
end

#preferencesObject



140
141
142
143
# File 'lib/btsync/directory.rb', line 140

def preferences
  res = get(path('getfolderpref'), query: { name: @name, secret: @secret })
  res.parsed_response['folderpref']
end

#read_only_secretObject



145
146
147
# File 'lib/btsync/directory.rb', line 145

def read_only_secret
  preferences['readonlysecret']
end

#remove_host(index) ⇒ Object



67
68
69
70
71
72
73
74
75
# File 'lib/btsync/directory.rb', line 67

def remove_host(index)
  query = { name: name, secret: secret, index: index }
  res = get(path('removeknownhosts'), query: query)
  if res.parsed_response != {}
    res.parsed_response
  else
    true
  end
end

#remove_host_by_ip(ip, port = nil) ⇒ Object



77
78
79
80
81
82
83
84
85
86
# File 'lib/btsync/directory.rb', line 77

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) ⇒ Object



112
113
114
# File 'lib/btsync/directory.rb', line 112

def search_dht=(opt)
  set_pref('searchdht', opt)
end

#search_dht?Boolean

Returns:

  • (Boolean)


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

def search_dht?
  bool(preferences['searchdht'])
end

#search_lan=(opt) ⇒ Object



104
105
106
# File 'lib/btsync/directory.rb', line 104

def search_lan=(opt)
  set_pref('searchlan', opt)
end

#search_lan?Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/btsync/directory.rb', line 108

def search_lan?
  bool(preferences['searchlan'])
end

#update_secret(new_secret = generate_secret) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/btsync/directory.rb', line 25

def update_secret(new_secret = generate_secret)
  query = secret_params(new_secret)
  res = get(path('updatesecret'), query: query)
  p = res.parsed_response
  if p != {} && p != '\r\ninvalid request'
    @secret = new_secret
    true
  else
    if p == {}
      @errors << "Invalid Secret"
    else
      @errors << res.parsed_response
    end
    false
  end
end

#use_hosts=(opt) ⇒ Object



96
97
98
# File 'lib/btsync/directory.rb', line 96

def use_hosts=(opt)
  set_pref('usehosts', opt)
end

#use_hosts?Boolean

Returns:

  • (Boolean)


100
101
102
# File 'lib/btsync/directory.rb', line 100

def use_hosts?
  bool(preferences['usehosts'])
end

#use_relay=(opt) ⇒ Object



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

def use_relay=(opt)
  set_pref('relay', opt)
end

#use_relay?Boolean

Returns:

  • (Boolean)


124
125
126
# File 'lib/btsync/directory.rb', line 124

def use_relay?
  bool(preferences['relay'])
end

#use_tracker=(opt) ⇒ Object



88
89
90
# File 'lib/btsync/directory.rb', line 88

def use_tracker=(opt)
  set_pref('usetracker', opt)
end

#use_tracker?Boolean

Returns:

  • (Boolean)


92
93
94
# File 'lib/btsync/directory.rb', line 92

def use_tracker?
  bool(preferences['usetracker'])
end