module Whatdidconsole

Constants

VERSION

Public Class Methods

configure() { |$wdc_config| ... } click to toggle source
# File lib/whatdidconsole.rb, line 10
def self.configure
  $wdc_config = Struct.new(:application_id, :access_token).new
  yield($wdc_config)

  $wdc_commands = []
  $wdc_session_id = ""

  IRB::Context.class_eval do
    alias wdc_old_evaluate evaluate
    alias wdc_old_initialize initialize

    def initialize(irb, workspace = nil, input_method = nil)
      begin
        uri =
          URI::HTTP.build(
            scheme: "https",
            host: "api.whatdidconsole.com",
            port: "443",
            path: "/api/v0/applications/sessions"
          )

        http = Net::HTTP.new(uri.host, uri.port)
        http.use_ssl = true
        http.read_timeout = 2
        request = Net::HTTP::Post.new(uri.request_uri)
        request["Content-Type"] = "application/json"
        request.basic_auth($wdc_config.application_id, $wdc_config.access_token)
        request.body = JSON.generate({ hostname: Socket.gethostname })
        response = http.request(request)
        data = JSON.parse(response.body)
        $wdc_session_id = data.fetch("session").fetch("id")

        at_exit {
          __wdc_send_session
        }
      rescue StandardError => e
        puts "Failed to initialize Whatdidconsole: #{e}"
      end
      wdc_old_initialize(irb, workspace, input_method)
    end

    def evaluate(line, line_no, exception: nil)
      $wdc_commands << { line: line, error: false, duration: 42 }
      wdc_old_evaluate(line, line_no, exception: exception)
    end

    def __wdc_send_session
      begin
        uri = 
          URI::HTTP.build(
            scheme: "https",
            host: "api.whatdidconsole.com",
            port: "443",
            path: "/api/v0/applications/sessions/#{$wdc_session_id}/close"
          )
        http = Net::HTTP.new(uri.host, uri.port)
        http.read_timeout = 2
        http.use_ssl = true
        request = Net::HTTP::Post.new(uri.request_uri)
        request["Content-Type"] = "application/json"
        request.basic_auth($wdc_config.application_id, $wdc_config.access_token)
        request.body =
          JSON.generate({ hostname: Socket.gethostname, commands: $wdc_commands })
        response = http.request(request)
      rescue StandardError => e
        puts "Failed to push session to Whatdidconsole: #{e}"
      end
    end
  end
end
new(irb, workspace = nil, input_method = nil) click to toggle source
# File lib/whatdidconsole.rb, line 21
def initialize(irb, workspace = nil, input_method = nil)
  begin
    uri =
      URI::HTTP.build(
        scheme: "https",
        host: "api.whatdidconsole.com",
        port: "443",
        path: "/api/v0/applications/sessions"
      )

    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    http.read_timeout = 2
    request = Net::HTTP::Post.new(uri.request_uri)
    request["Content-Type"] = "application/json"
    request.basic_auth($wdc_config.application_id, $wdc_config.access_token)
    request.body = JSON.generate({ hostname: Socket.gethostname })
    response = http.request(request)
    data = JSON.parse(response.body)
    $wdc_session_id = data.fetch("session").fetch("id")

    at_exit {
      __wdc_send_session
    }
  rescue StandardError => e
    puts "Failed to initialize Whatdidconsole: #{e}"
  end
  wdc_old_initialize(irb, workspace, input_method)
end

Public Instance Methods

__wdc_send_session() click to toggle source
# File lib/whatdidconsole.rb, line 56
def __wdc_send_session
  begin
    uri = 
      URI::HTTP.build(
        scheme: "https",
        host: "api.whatdidconsole.com",
        port: "443",
        path: "/api/v0/applications/sessions/#{$wdc_session_id}/close"
      )
    http = Net::HTTP.new(uri.host, uri.port)
    http.read_timeout = 2
    http.use_ssl = true
    request = Net::HTTP::Post.new(uri.request_uri)
    request["Content-Type"] = "application/json"
    request.basic_auth($wdc_config.application_id, $wdc_config.access_token)
    request.body =
      JSON.generate({ hostname: Socket.gethostname, commands: $wdc_commands })
    response = http.request(request)
  rescue StandardError => e
    puts "Failed to push session to Whatdidconsole: #{e}"
  end
end
evaluate(line, line_no, exception: nil) click to toggle source
# File lib/whatdidconsole.rb, line 51
def evaluate(line, line_no, exception: nil)
  $wdc_commands << { line: line, error: false, duration: 42 }
  wdc_old_evaluate(line, line_no, exception: exception)
end