Sha256: f8c01dd68d81e7ac633a2a92227ff3c8e4f8999bce3fc24349eaa1e6349e977c

Contents?: true

Size: 1.39 KB

Versions: 1

Compression:

Stored size: 1.39 KB

Contents

require 'webrick'
require_relative 'slug'
require_relative 'constants'

module Pbin
  class PBServerlet < WEBrick::HTTPServlet::AbstractServlet
    def do_GET(request, response)
      dirname = request.path.split('/').last
      dirpath = "#{STORENAME}/#{dirname}"

      # If the paste file is not found then return 404 with empty response
      begin
        content = File.read("#{dirpath}/index.txt")
        response.status = 200
        response.body = content
      rescue Errno::ENOENT
        response.status = 404
        response.body = ""
      end
    end

    def do_POST(request, response)
      content = request.query["p"]
      # Try to memoize this
      slug_size = 4
      dirname = nil
      # file_name = Digest::SHA1.hexdigest(content)[0..5]
      loop do
        dirname = Slug.generate(slug_size)
        if File.exists?("#{STORENAME}/#{dirname}")
          if slug_size > 10
            response.status = 422
            response['Content-Type'] = 'text/plain'
            response.body = "Failed to create"
            break
          end
          slug_size += 1
        else
          break
        end
      end

      dirpath = "#{STORENAME}/#{dirname}"

      Dir.mkdir(dirpath)

      f = File.open("#{dirpath}/index.txt", "wb")
      f.write(content)
      f.close

      response.status = 200
      response['Content-Type'] = 'text/plain'
      response.body = dirname
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pbin-0.1.0 lib/pbin/pb_servlet.rb