module BtCommunicator

Attributes

opts[R]

Public Instance Methods

auth() click to toggle source
# File lib/btsync/communicator.rb, line 32
def auth
  { username: user, password: password }
end
cookies() click to toggle source
# File lib/btsync/communicator.rb, line 49
def cookies
  @cookies ||= request_token.headers['set-cookie'].split('; ')[0]
end
generate_secret() click to toggle source
# File lib/btsync/communicator.rb, line 7
def generate_secret
  res = get(path('generatesecret'))
  res.parsed_response['secret']
end
get(path, opts = {}) click to toggle source
# File lib/btsync/communicator.rb, line 57
def get(path, opts = {})
  opts = {
    headers: {
      'Cookie' => cookies
    }, query: {

    }, basic_auth: auth }.merge(opts)
  self.class.get(path, opts)
end
password() click to toggle source
# File lib/btsync/communicator.rb, line 28
def password
  @opts[:password]
end
path(action_name) click to toggle source
# File lib/btsync/communicator.rb, line 86
def path(action_name)
  "#{root_url}gui/?token=#{token}&action=#{action_name}"
end
port() click to toggle source
# File lib/btsync/communicator.rb, line 12
def port
  @opts[:port]
end
protocol() click to toggle source
# File lib/btsync/communicator.rb, line 20
def protocol
  @opts[:protocol]
end
request_token(force = false) click to toggle source
# File lib/btsync/communicator.rb, line 67
def request_token(force = false)
  @last_request ||= 0
  t = DateTime.now.strftime('%s').to_i
  if @request_token.nil? || force || (@last_request + 600) < t
    @last_request = t
    @request_token = self.class.get(token_path, basic_auth: auth)
  else
    @request_token
  end
end
root_url() click to toggle source
# File lib/btsync/communicator.rb, line 53
def root_url
  "#{starter}#{uri}:#{port}/"
end
starter() click to toggle source
# File lib/btsync/communicator.rb, line 82
def starter
  "#{protocol}://"
end
token(force = false) click to toggle source
# File lib/btsync/communicator.rb, line 36
def token(force = false)
  @token_cache ||= 0
  time = DateTime.now.strftime('%s').to_i
  if time > @token_cache + 600 || force
    @token = request_token(force).
      gsub('</div></html>', '').
      gsub("<html><div id='token' style='display:none;'>", '')
    @token_cache = time
  end
  @cookies = nil if force
  @token
end
token_path() click to toggle source
# File lib/btsync/communicator.rb, line 78
def token_path
  "#{root_url}gui/token.html"
end
uri() click to toggle source
# File lib/btsync/communicator.rb, line 16
def uri
  @opts[:uri]
end
user() click to toggle source
# File lib/btsync/communicator.rb, line 24
def user
  @opts[:user]
end