module Pushbullet

Public Class Methods

set_access_token(token) click to toggle source
# File lib/pushbullet.rb, line 69
def self.set_access_token(token)
  @@access_token = token
end
set_verbose(is_verbose = true) click to toggle source
# File lib/pushbullet.rb, line 65
def self.set_verbose(is_verbose = true)
  @@verbose = is_verbose
end

Private Class Methods

delete(url, parameters, additional_headers) click to toggle source

http delete

@param url [String] delete url @param parameters [Hash] post parameters @param additional_headers [Hash] additional HTTP headers @return [Net::HTTPResponse]

# File lib/pushbullet.rb, line 130
def self.delete(url, parameters, additional_headers)
  parameters.each_pair{|key, value|
    unless url.include?("?")
      url += "?" 
    else
      url += "&"
    end
    url += "#{Pushbullet.urlencode(key)}=#{Pushbullet.urlencode(value)}"
  }
  uri = URI.parse(url)
  Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https'){|http|
    req = Net::HTTP::Delete.new(uri.request_uri)
    unless additional_headers.nil?
      additional_headers.each_pair{|key, value|
        req.add_field(key, value)
      }
    end
    return http.request(req)
  }
end
get(url, parameters, additional_headers) click to toggle source

http get

@param url [String] get url @param parameters [Hash] post parameters @param additional_headers [Hash] additional HTTP headers @return [Net::HTTPResponse]

# File lib/pushbullet.rb, line 103
def self.get(url, parameters, additional_headers)
  parameters.each_pair{|key, value|
    unless url.include?("?")
      url += "?" 
    else
      url += "&"
    end
    url += "#{Pushbullet.urlencode(key)}=#{Pushbullet.urlencode(value)}"
  }
  uri = URI.parse(url)
  Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https'){|http|
    req = Net::HTTP::Get.new(uri.request_uri)
    unless additional_headers.nil?
      additional_headers.each_pair{|key, value|
        req.add_field(key, value)
      }
    end
    return http.request(req)
  }
end
get_access_token() click to toggle source
# File lib/pushbullet.rb, line 79
def self.get_access_token
  unless @@access_token
    puts "* Pushbullet's access token should be set first. (can be found at: https://www.pushbullet.com/account)"
    exit 1
  end
  @@access_token
end
is_verbose() click to toggle source
# File lib/pushbullet.rb, line 75
def self.is_verbose
  @@verbose
end
post(url, parameters, additional_headers) click to toggle source

http post

@param url [String] post url @param parameters [Hash] post parameters @param additional_headers [Hash] additional HTTP headers @return [Net::HTTPResponse]

# File lib/pushbullet.rb, line 157
def self.post(url, parameters, additional_headers)
  uri = URI.parse(url)
  Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https'){|http|
    req = Net::HTTP::Post.new(uri.request_uri)
    req.set_form_data(parameters, ';')
    additional_headers.each_pair{|key, value|
      req.add_field(key.to_s, value.to_s)
    }
    return http.request(req)
  }
end
post_data(url, data, content_type, additional_headers) click to toggle source

http post data

@param url [String] post url @param data [Object] data @param content_type [String] mime type of data @param additional_headers [Hash] additional HTTP headers @return [Net::HTTPResponse]

# File lib/pushbullet.rb, line 176
def self.post_data(url, data, content_type, additional_headers)
  uri = URI.parse(url)
  Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https'){|http|
    req = Net::HTTP::Post.new(uri.request_uri)
    req.body = data
    req['Content-Type'] = content_type
    additional_headers.each_pair{|key, value|
      req.add_field(key.to_s, value.to_s)
    }
    return http.request(req)
  }
end
post_multipart(url, parameters, additional_headers) click to toggle source

http post multipart

@param url [String] post url @param parameters [Hash] post parameters @param additional_headers [Hash] additional HTTP headers @return [Net::HTTPResponse]

# File lib/pushbullet.rb, line 195
def self.post_multipart(url, parameters, additional_headers)
  uri = URI.parse(url)
  Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https'){|http|
    req = Net::HTTP::Post.new(uri.request_uri)
    boundary = "____boundary_#{Time.now.to_i.to_s}____"
    req["Content-Type"] = "multipart/form-data; boundary=#{boundary}"
    body = ""
    parameters.each_pair{|key, value|
      body << "--#{boundary}\r\n"
      if value.respond_to?(:read)     # check if it's a File object
        body << "Content-Disposition: form-data; name=\"#{Pushbullet.urlencode(key)}\"; filename=\"#{File.basename(value.path)}\"\r\n"
        body << "Content-Type: #{MimeMagic.by_path(value.path)}\r\n\r\n"
        body << value.read
      else
        body << "Content-Disposition: form-data; name=\"#{Pushbullet.urlencode(key)}\"\r\n"
        body << "Content-Type: text/plain\r\n\r\n"
        body << value
      end
      body << "\r\n"
    }
    body << "--#{boundary}--\r\n"
    req.body = body
    req["Content-Length"] = req.body.size
    additional_headers.each_pair{|key, value|
      req.add_field(key.to_s, value.to_s)
    }
    return http.request(req)
  }
end
urlencode(str, conform_to_rfc3986 = true) click to toggle source

urlencode given string tools.ietf.org/html/rfc3986#section-2.3

@param str [String] string to urlencode @param conform_to_rfc3986 [true,false] @return [String] urlencoded string

# File lib/pushbullet.rb, line 93
def self.urlencode(str, conform_to_rfc3986 = true)
  URI.escape(str.to_s, conform_to_rfc3986 ? Regexp.new("[^#{"-_.~a-zA-Z\\d"}]") : Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
end