Sha256: 7ced6a6a5eb91243f5ca395f5be94a88277894359a03c45be0bfa904ca9dccb8
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
module Webgit class GitController < ApplicationController before_action :set_repo_branch, except: [:index, :set_current_repo] def index end def set_current_repo session[:current_repo] = params[:repo_name] redirect_to webgit_tree_path(:master) end def tree @tree = find_object end def blob @blob = find_object render formats: [:html] end def preview @blob = find_object content_type = Mime.fetch(params[:format]){|fallback| "text/html"}.to_s response.headers['Cache-Control'] = "public, max-age=#{12.hours.to_i}" response.headers['Content-Type'] = content_type response.headers['Content-Disposition'] = 'inline' render text: @blob.content, content_type: content_type end protected def find_object obj = @branch.tree if ps = params[:path] ps = ps + "." + params[:format] if params[:format] ps.split('/').each do|p| obj = find_object_in_tree(obj, p) break unless obj end end obj end def find_object_in_tree(tree, name) tree.each do|obj| if name == obj[:name] oid = obj[:oid] return @repo.lookup(obj[:oid]) end end if tree.respond_to?(:each) end def set_repo_branch if session[:current_repo] && (path = AppConfig::REPOS[session[:current_repo]]['path']) @repo = Rugged::Repository.new(path) @branch = @repo.rev_parse(params[:branch]) @branches = Rugged::Branch.each_name(@repo).select{|item| !item.include?('/') && item != params[:branch]} else redirect_to webgit_path end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
webgit-0.0.1 | app/controllers/webgit/git_controller.rb |