Sha256: d0c196377a53deeb7fcdbdc99b2e04fb8f720f81f71c66e66e6682e1255bd29a

Contents?: true

Size: 498 Bytes

Versions: 1

Compression:

Stored size: 498 Bytes

Contents

# frozen_string_literal: true

module UrlShortly
  class Generator
    BASE_URL = "http://short.ly/"

    def self.shorten(url)
      raise Error, "URL cannot be empty" if url.to_s.empty?
      raise Error, "Invalid URL format" if !valid_url?(url)
      
      id = Base62.encode(url.hash.abs)
      "#{BASE_URL}#{id}"
    end

    def self.valid_url?(url)
      uri = URI.parse(url)
      uri.is_a?(URI::HTTP) || uri.is_a?(URI::HTTPS)
    rescue URI::InvalidURIError
      false
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
url_shortly-0.1.0 lib/url_shortly/generator.rb