github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgView/kmgViewResource/kmgViewResource.go.bak (about)

     1  package kmgViewResource
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/bronze1man/kmg/kmgCrypto"
     6  	"github.com/bronze1man/kmg/kmgFile"
     7  	"github.com/bronze1man/kmg/third/kmgQiniu"
     8  	"path/filepath"
     9  	"sort"
    10  	"strings"
    11  )
    12  
    13  type ResourceUploadRequest struct {
    14  	ResourceList  []string //传入一堆资源目录的列表,然后传到七牛上.
    15  	Qiniu         *kmgQiniu.Context
    16  	QiniuPrefix   string
    17  	OutGoFilePath string
    18  }
    19  
    20  func ResourceUpload(req *ResourceUploadRequest) {
    21  	req.QiniuPrefix = strings.Trim(req.QiniuPrefix, "/")
    22  	fileList := kmgFile.MustGetAllFileFromPathList(req.ResourceList)
    23  	//1 css
    24  	cssContent := []byte{}
    25  	jsPathList := []string{}
    26  	for _, file := range fileList {
    27  		if kmgFile.HasExt(file, ".css") {
    28  			cssContent = append(cssContent, kmgFile.MustReadFile(file)...)
    29  			cssContent = append(cssContent, '\n')
    30  		}
    31  		if kmgFile.HasExt(file, ".js") {
    32  			jsPathList = append(jsPathList, file)
    33  		}
    34  	}
    35  	sort.Strings(jsPathList)
    36  	jsContent := []byte{}
    37  	for _, file := range jsPathList {
    38  		jsContent = append(jsContent, kmgFile.MustReadFile(file)...)
    39  		jsContent = append(jsContent, '\n')
    40  	}
    41  	cssFileName := kmgCrypto.Md5Hex(cssContent) + ".css"
    42  	jsFileName := kmgCrypto.Md5Hex(jsContent) + ".js"
    43  	writeFilePath := []kmgFile.PathAndContentPair{
    44  		{
    45  			Path:    cssFileName,
    46  			Content: cssContent,
    47  		},
    48  		{
    49  			Path:    jsFileName,
    50  			Content: jsContent,
    51  		},
    52  	}
    53  
    54  	for _, pair := range writeFilePath {
    55  		req.Qiniu.MustUploadFromBytes(req.QiniuPrefix+"/"+pair.Path, pair.Content)
    56  	}
    57  	packageName := filepath.Base(filepath.Dir(req.OutGoFilePath))
    58  	outGoContent := []byte(`package ` + packageName + `
    59  func getManagedJsUrl()string{
    60  	return ` + fmt.Sprintf("%#v", req.Qiniu.GetSchemeAndDomain()+"/"+req.QiniuPrefix+"/"+jsFileName) + `
    61  }
    62  func getManagedCssUrl()string{
    63  	return ` + fmt.Sprintf("%#v", req.Qiniu.GetSchemeAndDomain()+"/"+req.QiniuPrefix+"/"+cssFileName) + `
    64  }
    65  `)
    66  	kmgFile.MustWriteFile(req.OutGoFilePath, outGoContent)
    67  }