aboutsummaryrefslogtreecommitdiffstats
path: root/modules/git
diff options
context:
space:
mode:
Diffstat (limited to 'modules/git')
-rw-r--r--modules/git/blob.go13
-rw-r--r--modules/git/commit.go70
2 files changed, 13 insertions, 70 deletions
diff --git a/modules/git/blob.go b/modules/git/blob.go
index 674a6a9592..732356e5b2 100644
--- a/modules/git/blob.go
+++ b/modules/git/blob.go
@@ -10,6 +10,8 @@ import (
"encoding/base64"
"io"
"io/ioutil"
+
+ "code.gitea.io/gitea/modules/typesniffer"
)
// This file contains common functions between the gogit and !gogit variants for git Blobs
@@ -82,3 +84,14 @@ func (b *Blob) GetBlobContentBase64() (string, error) {
}
return string(out), nil
}
+
+// GuessContentType guesses the content type of the blob.
+func (b *Blob) GuessContentType() (typesniffer.SniffedType, error) {
+ r, err := b.DataAsync()
+ if err != nil {
+ return typesniffer.SniffedType{}, err
+ }
+ defer r.Close()
+
+ return typesniffer.DetectContentTypeFromReader(r)
+}
diff --git a/modules/git/commit.go b/modules/git/commit.go
index 027642720d..f4d6075fe2 100644
--- a/modules/git/commit.go
+++ b/modules/git/commit.go
@@ -11,13 +11,7 @@ import (
"container/list"
"errors"
"fmt"
- "image"
- "image/color"
- _ "image/gif" // for processing gif images
- _ "image/jpeg" // for processing jpeg images
- _ "image/png" // for processing png images
"io"
- "net/http"
"os/exec"
"strconv"
"strings"
@@ -81,70 +75,6 @@ func (c *Commit) ParentCount() int {
return len(c.Parents)
}
-func isImageFile(data []byte) (string, bool) {
- contentType := http.DetectContentType(data)
- if strings.Contains(contentType, "image/") {
- return contentType, true
- }
- return contentType, false
-}
-
-// IsImageFile is a file image type
-func (c *Commit) IsImageFile(name string) bool {
- blob, err := c.GetBlobByPath(name)
- if err != nil {
- return false
- }
-
- dataRc, err := blob.DataAsync()
- if err != nil {
- return false
- }
- defer dataRc.Close()
- buf := make([]byte, 1024)
- n, _ := dataRc.Read(buf)
- buf = buf[:n]
- _, isImage := isImageFile(buf)
- return isImage
-}
-
-// ImageMetaData represents metadata of an image file
-type ImageMetaData struct {
- ColorModel color.Model
- Width int
- Height int
- ByteSize int64
-}
-
-// ImageInfo returns information about the dimensions of an image
-func (c *Commit) ImageInfo(name string) (*ImageMetaData, error) {
- if !c.IsImageFile(name) {
- return nil, nil
- }
-
- blob, err := c.GetBlobByPath(name)
- if err != nil {
- return nil, err
- }
- reader, err := blob.DataAsync()
- if err != nil {
- return nil, err
- }
- defer reader.Close()
- config, _, err := image.DecodeConfig(reader)
- if err != nil {
- return nil, err
- }
-
- metadata := ImageMetaData{
- ColorModel: config.ColorModel,
- Width: config.Width,
- Height: config.Height,
- ByteSize: blob.Size(),
- }
- return &metadata, nil
-}
-
// GetCommitByPath return the commit of relative path object.
func (c *Commit) GetCommitByPath(relpath string) (*Commit, error) {
return c.repo.getCommitByPathWithID(c.ID, relpath)