Sha256: 1d75fa63a7f7a9a7ac38446fce6f3ef8e95ed7b25d47da5c43de9b3e678539cf

Contents?: true

Size: 1.16 KB

Versions: 14

Compression:

Stored size: 1.16 KB

Contents

# ~*~ encoding: utf-8 ~*~
require 'net/http'
require 'net/https' # ruby 1.8.7 fix, remove at upgrade
require 'uri'
require 'open-uri'

module Gollum
  class RemoteCode
    def initialize path
      raise(ArgumentError, 'path is nil or empty') if path.nil? or path.empty?
      @uri = URI(path)
    end

    def contents
      @contents ||= req @uri
    end

    private

      def req uri, cut = 1
        return "Too many redirects or retries" if cut >= 10
        http = Net::HTTP.new uri.host, uri.port
        http.use_ssl = true
        resp = http.get uri.path, {
          'Accept'        => 'text/plain',
          'Cache-Control' => 'no-cache',
          'Connection'    => 'keep-alive',
          'User-Agent'    => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0'
        }
        code = resp.code.to_i
        return resp.body if code == 200
        return "Not Found" if code == 404
        return "Unhandled Response Code #{code}" unless code == 304 or not resp.header['location'].nil?
        loc = URI.parse resp.header['location']
        uri2 = loc.relative? ? (uri + loc) : loc # overloads (+)
        req uri2, (cut + 1)
      end
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
gitlab-gollum-lib-1.1.0 lib/gollum-lib/remote_code.rb
gitlab-gollum-lib-1.0.2 lib/gollum-lib/remote_code.rb
gollum-lib-1.0.9 lib/gollum-lib/remote_code.rb
gollum-lib-1.0.8 lib/gollum-lib/remote_code.rb
gollum-lib-1.0.7 lib/gollum-lib/remote_code.rb
gollum-lib-1.0.6 lib/gollum-lib/remote_code.rb
gollum-lib-1.0.5 lib/gollum-lib/remote_code.rb
gollum-lib-1.0.4 lib/gollum-lib/remote_code.rb
gitlab-gollum-lib-1.0.1 lib/gollum-lib/remote_code.rb
gollum-lib-1.0.3 lib/gollum-lib/remote_code.rb
gollum-lib-1.0.2 lib/gollum-lib/remote_code.rb
gollum-lib-1.0.1 lib/gollum-lib/remote_code.rb
gitlab-gollum-lib-1.0.0 lib/gollum-lib/remote_code.rb
gollum-lib-1.0.0 lib/gollum-lib/remote_code.rb