class Gist::Post

Class that controls a posted Gist

Attributes

source_files[RW]
user[RW]

Public Class Methods

new(filenames, pub = false, description = nil, user = nil) click to toggle source
# File lib/gist/post.rb, line 7
def initialize(filenames, pub = false, description = nil, user = nil)
  @user ||= user
  @public ||= pub
  @description ||= description ? description : ''
  @source_files ||= {}
  populate_source_files(filenames)
  @http = Net::HTTP.new(Gist::API_URL, Gist::API_PORT)
  @http.use_ssl = true
end

Public Instance Methods

submit(stdin) click to toggle source
# File lib/gist/post.rb, line 17
def submit(stdin)
  unless stdin.nil?
    @source_files['STDIN'] = {
      'content' => stdin
    }
  end
  body = {
    'files' => @source_files,
    'public' => @public,
    'description' => @description
  }.to_json
  headers ||= {}
  headers['Authorization'] = "token #{@user.access_token}" unless @user.nil?
  response = @http.post('/gists', body, headers)
  JSON.parse(response.body)['html_url']
end

Private Instance Methods

load_code(filename) click to toggle source
# File lib/gist/post.rb, line 34
        def load_code(filename)
  file = File.open(filename)
  file_str = ''
  file.each do |line|
    file_str << line
  end
  file_str
end
populate_source_files(filenames) click to toggle source
# File lib/gist/post.rb, line 43
        def populate_source_files(filenames)
  filenames.each do |filename|
    @source_files[File.basename(filename)] = {
      'content' => load_code(filename)
    }
  end
end