Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"bucket.go",
"dir.go",
"model.go",
"upload.go",
],
importpath = "go-common/app/interface/main/upload/model",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = ["//library/time:go_default_library"],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,40 @@
package model
import (
"go-common/library/time"
)
// Bucket in accord with bucket table in database
type Bucket struct {
ID int `json:"id" gorm:"column:id"`
Name string `json:"name" gorm:"column:bucket_name"`
Property int `json:"property" gorm:"column:property"`
KeyID string `json:"key_id" gorm:"column:key_id"`
KeySecret string `json:"key_secret" gorm:"column:key_secret"`
PurgeCDN bool `json:"purge_cdn" gorm:"column:purge_cdn"`
CacheControl int `json:"cache_control" gorm:"column:purge_cdn"`
CTime time.Time `json:"ctime" gorm:"column:ctime"`
MTime time.Time `json:"mtime" gorm:"column:mtime"`
DirLimit map[string]*DirConfig `json:"dir_limit" gorm:"-"`
}
// DirLimit in accord with dir_limit table in database
type DirLimit struct {
ID int `json:"id" gorm:"column:id"`
BucketName string `json:"bucket_name" gorm:"column:bucket_name"`
Dir string `json:"dir" gorm:"column:dir"`
DirPicConfig string `json:"dir_pic_config" gorm:"column:config_pic"`
DirRateConfig string `json:"dir_rate_config" gorm:"column:config_rate"`
CTime time.Time `json:"ctime" gorm:"column:ctime"`
MTime time.Time `json:"mtime" gorm:"column:mtime"`
}
// TableName return table name.
func (b Bucket) TableName() string {
return "bucket"
}
// TableName return table name.
func (l DirLimit) TableName() string {
return "dir_limit"
}

View File

@@ -0,0 +1,42 @@
package model
// DirConfig directory config
type DirConfig struct {
Pic DirPicConfig `json:"dir_pic_config"`
Rate DirRateConfig `json:"dir_rate_config"`
}
// DirPicConfig directory picture config
type DirPicConfig struct {
FileSize int `json:"file_size"` //文件大小上限 单位 Byte
MaxPixelWidthSize int `json:"max_pixel_width_size"` //像素宽上限
MinPixelWidthSize int `json:"min_pixel_width_size"` //像素高下限
MaxPixelHeightSize int `json:"max_pixel_height_size"` //像素高上限
MinPixelHeightSize int `json:"min_pixel_height_size"` //像素宽下限
MaxAspectRatio float64 `json:"max_aspect_ratio"` //最大宽高比
MinAspectRatio float64 `json:"min_aspect_ratio"` //最小宽高比
AllowType string `json:"allow_type"` //允许的MIME类型
AllowTypeSlice []string // 允许的MIME类型列表,AllowTypeSlice = strings.Split(AllowType,",")
}
// DirRateConfig directory rate config
type DirRateConfig struct {
// secondQPS 接受 countQPS 个请求
SecondQPS int `json:"second_qps"`
CountQPS int `json:"count_qps"`
}
//{
//    file_size 100                   文件大小上限 单位 Byte
//    max_pixel_width_size 1024       像素宽上限
//    max_pixel_height_size1024       像素高上限
//    min_pixel_width_size 10         像素宽下限
//    min_pixel_height_size10         像素高下限
//    max_aspect_ratio 100            最大宽高比
//    min_aspect_ratio 10             最小宽高比
//}
//{
// max_user_qps 最大用户qps
// max_user_upload_number 每日最大用户上传数量
//}

View File

@@ -0,0 +1,49 @@
package model
const (
_defaultWmPaddingX = 10
_defaultWmPaddingY = 10
_defaultWmScale = float64(1) / 24
)
// Result upload result
type Result struct {
Location string `json:"location"`
Etag string `json:"etag"`
}
// ResultWm watermark result
type ResultWm struct {
Location string `json:"location"`
Md5 string `json:"md5"`
Height int `json:"height"`
Width int `json:"width"`
}
// UploadParam upload params
type UploadParam struct {
Bucket string `form:"bucket" json:"bucket" validate:"required" `
ContentType string `form:"content_type" json:"content_type"`
Dir string `form:"dir" json:"dir"`
FileName string `form:"file_name" json:"file_name"`
WmKey string `form:"wm_key" json:"wm_key"`
WmText string `form:"wm_text" json:"wm_text"`
WmPaddingX int `form:"wm_padding_x" json:"wm_padding_x"`
WmPaddingY int `form:"wm_padding_y" json:"wm_padding_y"`
WmScale float64 `form:"wm_scale" json:"wm_scale"`
}
// WMInit init watermark default value.
func (up *UploadParam) WMInit() {
if up.WmKey != "" || up.WmText != "" {
if up.WmPaddingX < 0 {
up.WmPaddingX = _defaultWmPaddingX
}
if up.WmPaddingY < 0 {
up.WmPaddingY = _defaultWmPaddingY
}
if up.WmScale <= 0 {
up.WmScale = _defaultWmScale
}
}
}

View File

@@ -0,0 +1,36 @@
package model
const (
// MaxUploadSize max upload file size
MaxUploadSize = 20 * 1024 * 1024
)
// UploadActionType report action type
type UploadActionType int
// report action type
const (
UploadInternal UploadActionType = iota + 1 // 内网用户
UploadInternalAdmin // 内网管理员
UploadPublic // 外网公用
UploadApp // 外网 app
UploadWeb // 外网web
)
func (a UploadActionType) String() (s string) {
switch a {
case UploadInternal:
s = "internal_upload"
case UploadInternalAdmin:
s = "internal_admin_upload"
case UploadPublic:
s = "outer_public_upload"
case UploadApp:
s = "outer_app_upload"
case UploadWeb:
s = "outer_web_upload"
default:
s = "undefined_upload"
}
return
}