|
|
|
@ -8,6 +8,7 @@ import ( |
|
|
|
|
"encoding/base64" |
|
|
|
|
"errors" |
|
|
|
|
"fmt" |
|
|
|
|
"io/ioutil" |
|
|
|
|
"path" |
|
|
|
|
"path/filepath" |
|
|
|
|
"strings" |
|
|
|
@ -148,7 +149,7 @@ func Single(ctx *middleware.Context, params martini.Params) { |
|
|
|
|
if entry != nil && !entry.IsDir() { |
|
|
|
|
blob := entry.Blob() |
|
|
|
|
|
|
|
|
|
if data, err := blob.Data(); err != nil { |
|
|
|
|
if dataRc, err := blob.Data(); err != nil { |
|
|
|
|
ctx.Handle(404, "repo.Single(blob.Data)", err) |
|
|
|
|
} else { |
|
|
|
|
ctx.Data["FileSize"] = blob.Size() |
|
|
|
@ -161,20 +162,32 @@ func Single(ctx *middleware.Context, params martini.Params) { |
|
|
|
|
ctx.Data["FileExt"] = ext |
|
|
|
|
ctx.Data["FileLink"] = rawLink + "/" + treename |
|
|
|
|
|
|
|
|
|
_, isTextFile := base.IsTextFile(data) |
|
|
|
|
_, isImageFile := base.IsImageFile(data) |
|
|
|
|
buf := make([]byte, 1024) |
|
|
|
|
n, _ := dataRc.Read(buf) |
|
|
|
|
if n > 0 { |
|
|
|
|
buf = buf[:n] |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
defer func() { |
|
|
|
|
dataRc.Close() |
|
|
|
|
}() |
|
|
|
|
|
|
|
|
|
_, isTextFile := base.IsTextFile(buf) |
|
|
|
|
_, isImageFile := base.IsImageFile(buf) |
|
|
|
|
ctx.Data["FileIsText"] = isTextFile |
|
|
|
|
|
|
|
|
|
if isImageFile { |
|
|
|
|
ctx.Data["IsImageFile"] = true |
|
|
|
|
} else { |
|
|
|
|
d, _ := ioutil.ReadAll(dataRc) |
|
|
|
|
buf = append(buf, d...) |
|
|
|
|
readmeExist := base.IsMarkdownFile(blob.Name()) || base.IsReadmeFile(blob.Name()) |
|
|
|
|
ctx.Data["ReadmeExist"] = readmeExist |
|
|
|
|
if readmeExist { |
|
|
|
|
ctx.Data["FileContent"] = string(base.RenderMarkdown(data, "")) |
|
|
|
|
ctx.Data["FileContent"] = string(base.RenderMarkdown(buf, "")) |
|
|
|
|
} else { |
|
|
|
|
if isTextFile { |
|
|
|
|
ctx.Data["FileContent"] = string(data) |
|
|
|
|
ctx.Data["FileContent"] = string(buf) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -218,17 +231,29 @@ func Single(ctx *middleware.Context, params martini.Params) { |
|
|
|
|
if readmeFile != nil { |
|
|
|
|
ctx.Data["ReadmeInSingle"] = true |
|
|
|
|
ctx.Data["ReadmeExist"] = true |
|
|
|
|
if data, err := readmeFile.Data(); err != nil { |
|
|
|
|
if dataRc, err := readmeFile.Data(); err != nil { |
|
|
|
|
ctx.Handle(404, "repo.Single(readmeFile.LookupBlob)", err) |
|
|
|
|
return |
|
|
|
|
} else { |
|
|
|
|
|
|
|
|
|
buf := make([]byte, 1024) |
|
|
|
|
n, _ := dataRc.Read(buf) |
|
|
|
|
if n > 0 { |
|
|
|
|
buf = buf[:n] |
|
|
|
|
} |
|
|
|
|
defer func() { |
|
|
|
|
dataRc.Close() |
|
|
|
|
}() |
|
|
|
|
|
|
|
|
|
ctx.Data["FileSize"] = readmeFile.Size |
|
|
|
|
ctx.Data["FileLink"] = rawLink + "/" + treename |
|
|
|
|
_, isTextFile := base.IsTextFile(data) |
|
|
|
|
_, isTextFile := base.IsTextFile(buf) |
|
|
|
|
ctx.Data["FileIsText"] = isTextFile |
|
|
|
|
ctx.Data["FileName"] = readmeFile.Name() |
|
|
|
|
if isTextFile { |
|
|
|
|
ctx.Data["FileContent"] = string(base.RenderMarkdown(data, branchLink)) |
|
|
|
|
d, _ := ioutil.ReadAll(dataRc) |
|
|
|
|
buf = append(buf, d...) |
|
|
|
|
ctx.Data["FileContent"] = string(base.RenderMarkdown(buf, branchLink)) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|