module Transmission

Constants

VERSION

Public Class Methods

custom_slots() click to toggle source
# File lib/alexa_transmission/custom_slots.rb, line 2
def self.custom_slots
  File.read(File.expand_path('../../../skills_config/custom_slots.txt', __FILE__))
end
intent_schema() click to toggle source
# File lib/alexa_transmission/intent_schema.rb, line 2
def self.intent_schema
  File.read(File.expand_path('../../../skills_config/intent_schema.txt', __FILE__))
end
sample_utterances() click to toggle source
# File lib/alexa_transmission/sample_utterances.rb, line 2
def self.sample_utterances
  File.read(File.expand_path('../../../skills_config/sample_utterances.txt', __FILE__))
end

Public Instance Methods

check_transmission() click to toggle source
# File lib/alexa_transmission.rb, line 11
def check_transmission
  transmission_api_client = ::TransmissionApi::Client.new(
                              :username => settings.config.transmission.username,
                              :password => settings.config.transmission.password,
                              :url      => settings.config.transmission.rpc_url
                            )

  parsed_files = transmission_api_client.all.map! do |x| 
    size_in_gb = x["totalSize"].to_f/(1000**3)
    rate_download_in_gb_sec = x["rateDownload"].to_f/(1000**3)

    hash = {
      percent_completed: x["percentDone"], 
      name: ToName.to_name(x["name"].gsub(/\+/, '.').gsub(' ', '.')),
      eta: (size_in_gb-(size_in_gb*x["percentDone"]))/rate_download_in_gb_sec/(60**2)
    } 

    hash if x["isFinished"] != true && x["rateDownload"] > 0
  end 
  puts parsed_files
  parsed_files.compact!
  
  parsed_strings = if parsed_files && !parsed_files.empty?
                     parsed_files.map! { |x| "#{x[:name].name}#{" Episode #{x[:name].episode}" if x[:name].episode} is at #{(x[:percent_completed]*100).round} percent" }
                     parsed_files.to_sentence
                   else
                     "No downloads are currently in progress"
                   end
                   
  AlexaObjects::Response.new(spoken_response: parsed_strings).to_json            
end