本文整理汇总了Golang中fileutils.TempFile函数的典型用法代码示例。如果您正苦于以下问题:Golang TempFile函数的具体用法?Golang TempFile怎么用?Golang TempFile使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了TempFile函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestTraceSetToFile
func TestTraceSetToFile(t *testing.T) {
stdOut := bytes.NewBuffer([]byte{})
trace.SetStdout(stdOut)
fileutils.TempFile("trace_test", func(file *os.File, err error) {
assert.NoError(t, err)
file.Write([]byte("pre-existing content"))
os.Setenv(trace.CF_TRACE, file.Name())
logger := trace.NewLogger()
logger.Print("hello world")
file.Seek(0, os.SEEK_SET)
result, err := ioutil.ReadAll(file)
assert.NoError(t, err)
byteString := string(result)
assert.Contains(t, byteString, "pre-existing content")
assert.Contains(t, byteString, "hello world")
result, _ = ioutil.ReadAll(stdOut)
assert.Equal(t, string(result), "")
})
}
示例2: uploadBits
func (repo CloudControllerApplicationBitsRepository) uploadBits(appGuid string, zipFile *os.File, presentResourcesJson []byte) (apiResponse net.ApiResponse) {
url := fmt.Sprintf("%s/v2/apps/%s/bits", repo.config.ApiEndpoint(), appGuid)
fileutils.TempFile("requests", func(requestFile *os.File, err error) {
if err != nil {
apiResponse = net.NewApiResponseWithError("Error creating tmp file: %s", err)
return
}
boundary, err := repo.writeUploadBody(zipFile, requestFile, presentResourcesJson)
if err != nil {
apiResponse = net.NewApiResponseWithError("Error writing to tmp file: %s", err)
return
}
var request *net.Request
request, apiResponse = repo.gateway.NewRequest("PUT", url, repo.config.AccessToken(), requestFile)
if apiResponse.IsNotSuccessful() {
return
}
contentType := fmt.Sprintf("multipart/form-data; boundary=%s", boundary)
request.HttpReq.Header.Set("Content-Type", contentType)
response := &Resource{}
_, apiResponse = repo.gateway.PerformPollingRequestForJSONResponse(request, response, 5*time.Minute)
if apiResponse.IsNotSuccessful() {
return
}
})
return
}
示例3: uploadBits
func (repo CloudControllerBuildpackBitsRepository) uploadBits(buildpack cf.Buildpack, zipFile *os.File) (apiResponse net.ApiResponse) {
url := fmt.Sprintf("%s/v2/buildpacks/%s/bits", repo.config.Target, buildpack.Guid)
fileutils.TempFile("requests", func(requestFile *os.File, err error) {
if err != nil {
apiResponse = net.NewApiResponseWithMessage(err.Error())
return
}
boundary, err := repo.writeUploadBody(zipFile, requestFile)
if err != nil {
apiResponse = net.NewApiResponseWithError("Error creating upload", err)
return
}
request, apiResponse := repo.gateway.NewRequest("PUT", url, repo.config.AccessToken, requestFile)
contentType := fmt.Sprintf("multipart/form-data; boundary=%s", boundary)
request.HttpReq.Header.Set("Content-Type", contentType)
if apiResponse.IsNotSuccessful() {
return
}
apiResponse = repo.gateway.PerformRequest(request)
})
return
}
示例4: downloadBuildpack
func (repo CloudControllerBuildpackBitsRepository) downloadBuildpack(url string, cb func(*os.File, error)) {
fileutils.TempFile("buildpack-download", func(tempfile *os.File, err error) {
if err != nil {
cb(nil, err)
return
}
var certPool *x509.CertPool
if len(repo.TrustedCerts) > 0 {
certPool = x509.NewCertPool()
for _, tlsCert := range repo.TrustedCerts {
cert, _ := x509.ParseCertificate(tlsCert.Certificate[0])
certPool.AddCert(cert)
}
}
client := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{RootCAs: certPool},
Proxy: http.ProxyFromEnvironment,
},
}
response, err := client.Get(url)
if err != nil {
cb(nil, err)
return
}
io.Copy(tempfile, response.Body)
tempfile.Seek(0, 0)
cb(tempfile, nil)
})
}
示例5: TestZipWithInvalidFile
func TestZipWithInvalidFile(t *testing.T) {
fileutils.TempFile("zip_test", func(zipFile *os.File, err error) {
zipper := ApplicationZipper{}
err = zipper.Zip("/a/bogus/directory", zipFile)
assert.Error(t, err)
assert.Contains(t, err.Error(), "open /a/bogus/directory")
})
}
示例6: TestZipWithEmptyDir
func TestZipWithEmptyDir(t *testing.T) {
fileutils.TempFile("zip_test", func(zipFile *os.File, err error) {
fileutils.TempDir("zip_test", func(emptyDir string, err error) {
zipper := ApplicationZipper{}
err = zipper.Zip(emptyDir, zipFile)
assert.Error(t, err)
assert.Equal(t, err.Error(), "Directory is empty")
})
})
}
示例7: TestZipWithJarFile
func TestZipWithJarFile(t *testing.T) {
fileutils.TempFile("zip_test", func(zipFile *os.File, err error) {
dir, err := os.Getwd()
assert.NoError(t, err)
zipper := ApplicationZipper{}
err = zipper.Zip(filepath.Join(dir, "../fixtures/application.jar"), zipFile)
assert.NoError(t, err)
assert.Equal(t, fileToString(t, zipFile), "This is an application jar file\n")
})
}
示例8: TestZipWithDirectory
func TestZipWithDirectory(t *testing.T) {
fileutils.TempFile("zip_test", func(zipFile *os.File, err error) {
workingDir, err := os.Getwd()
assert.NoError(t, err)
dir := filepath.Join(workingDir, "../fixtures/zip/")
err = os.Chmod(filepath.Join(dir, "subDir/bar.txt"), 0666)
assert.NoError(t, err)
zipper := ApplicationZipper{}
err = zipper.Zip(dir, zipFile)
assert.NoError(t, err)
offset, err := zipFile.Seek(0, os.SEEK_CUR)
assert.NoError(t, err)
assert.Equal(t, offset, 0)
fileStat, err := zipFile.Stat()
assert.NoError(t, err)
reader, err := zip.NewReader(zipFile, fileStat.Size())
assert.NoError(t, err)
readFileInZip := func(index int) (string, string) {
buf := &bytes.Buffer{}
file := reader.File[index]
fReader, err := file.Open()
_, err = io.Copy(buf, fReader)
assert.NoError(t, err)
return file.Name, string(buf.Bytes())
}
assert.Equal(t, len(reader.File), 3)
name, contents := readFileInZip(0)
assert.Equal(t, name, "foo.txt")
assert.Equal(t, contents, "This is a simple text file.")
name, contents = readFileInZip(1)
assert.Equal(t, name, "subDir/bar.txt")
assert.Equal(t, contents, "I am in a subdirectory.")
assert.Equal(t, reader.File[1].FileInfo().Mode(), uint32(0666))
name, contents = readFileInZip(2)
assert.Equal(t, name, "subDir/otherDir/file.txt")
assert.Equal(t, contents, "This file should be present.")
})
}
示例9: UploadBuildpack
func (repo CloudControllerBuildpackBitsRepository) UploadBuildpack(buildpack models.Buildpack, buildpackLocation string) (apiErr error) {
fileutils.TempFile("buildpack-upload", func(zipFileToUpload *os.File, err error) {
if err != nil {
apiErr = errors.NewWithError("Couldn't create temp file for upload", err)
return
}
var buildpackFileName string
if isWebURL(buildpackLocation) {
buildpackFileName = path.Base(buildpackLocation)
repo.downloadBuildpack(buildpackLocation, func(downloadFile *os.File, downloadErr error) {
if downloadErr != nil {
err = downloadErr
return
}
err = normalizeBuildpackArchive(downloadFile, zipFileToUpload)
})
} else {
buildpackFileName = filepath.Base(buildpackLocation)
stats, err := os.Stat(buildpackLocation)
if err != nil {
apiErr = errors.NewWithError("Error opening buildpack file", err)
return
}
if stats.IsDir() {
err = repo.zipper.Zip(buildpackLocation, zipFileToUpload)
} else {
specifiedFile, err := os.Open(buildpackLocation)
if err != nil {
apiErr = errors.NewWithError("Couldn't open buildpack file", err)
return
}
err = normalizeBuildpackArchive(specifiedFile, zipFileToUpload)
}
}
if err != nil {
apiErr = errors.NewWithError("Couldn't write zip file", err)
return
}
apiErr = repo.uploadBits(buildpack, zipFileToUpload, buildpackFileName)
})
return
}
示例10: UploadApp
func (repo CloudControllerApplicationBitsRepository) UploadApp(appGuid string, appDir string, cb func(path string, zipSize, fileCount uint64)) (apiResponse net.ApiResponse) {
fileutils.TempDir("apps", func(uploadDir string, err error) {
if err != nil {
apiResponse = net.NewApiResponseWithMessage(err.Error())
return
}
var presentResourcesJson []byte
repo.sourceDir(appDir, func(sourceDir string, sourceErr error) {
if sourceErr != nil {
err = sourceErr
return
}
presentResourcesJson, err = repo.copyUploadableFiles(sourceDir, uploadDir)
})
if err != nil {
apiResponse = net.NewApiResponseWithMessage("%s", err)
return
}
fileutils.TempFile("uploads", func(zipFile *os.File, err error) {
if err != nil {
apiResponse = net.NewApiResponseWithMessage("%s", err.Error())
return
}
err = repo.zipper.Zip(uploadDir, zipFile)
if err != nil {
apiResponse = net.NewApiResponseWithError("Error zipping application", err)
return
}
stat, err := zipFile.Stat()
if err != nil {
apiResponse = net.NewApiResponseWithError("Error zipping application", err)
return
}
cb(appDir, uint64(stat.Size()), cf.CountFiles(uploadDir))
apiResponse = repo.uploadBits(appGuid, zipFile, presentResourcesJson)
if apiResponse.IsNotSuccessful() {
return
}
})
})
return
}
示例11: UploadBuildpack
func (repo CloudControllerBuildpackBitsRepository) UploadBuildpack(buildpack cf.Buildpack, dir string) (apiResponse net.ApiResponse) {
fileutils.TempFile("buildpack", func(zipFile *os.File, err error) {
if err != nil {
apiResponse = net.NewApiResponseWithMessage(err.Error())
return
}
err = repo.zipper.Zip(dir, zipFile)
if err != nil {
apiResponse = net.NewApiResponseWithError("Invalid buildpack", err)
return
}
apiResponse = repo.uploadBits(buildpack, zipFile)
if apiResponse.IsNotSuccessful() {
return
}
})
return
}
示例12: init
func init() {
permissionsToSet = 0467
fileutils.TempFile("permissionedFile", func(file *os.File, err error) {
if err != nil {
panic("could not create tmp file")
}
fileInfo, err := file.Stat()
if err != nil {
panic("could not stat tmp file")
}
expectedPermissionBits = fileInfo.Mode()
if runtime.GOOS != "windows" {
expectedPermissionBits |= permissionsToSet & 0111
}
})
}
示例13: UploadApp
func (repo CloudControllerApplicationBitsRepository) UploadApp(app cf.Application, appDir string) (apiResponse net.ApiResponse) {
fileutils.TempDir("apps", func(uploadDir string, err error) {
if err != nil {
apiResponse = net.NewApiResponseWithMessage(err.Error())
return
}
var resourcesJson []byte
repo.sourceDir(appDir, func(sourceDir string, sourceErr error) {
if sourceErr != nil {
err = sourceErr
return
}
resourcesJson, err = repo.copyUploadableFiles(sourceDir, uploadDir)
})
if err != nil {
apiResponse = net.NewApiResponseWithMessage(err.Error())
return
}
fileutils.TempFile("uploads", func(zipFile *os.File, err error) {
if err != nil {
apiResponse = net.NewApiResponseWithMessage(err.Error())
return
}
err = repo.zipper.Zip(uploadDir, zipFile)
if err != nil {
apiResponse = net.NewApiResponseWithError("Error zipping application", err)
return
}
apiResponse = repo.uploadBits(app, zipFile, resourcesJson)
if apiResponse.IsNotSuccessful() {
return
}
})
})
return
}
示例14: TestTraceSetToInvalidFile
func TestTraceSetToInvalidFile(t *testing.T) {
stdOut := bytes.NewBuffer([]byte{})
trace.SetStdout(stdOut)
fileutils.TempFile("trace_test", func(file *os.File, err error) {
assert.NoError(t, err)
file.Chmod(0000)
os.Setenv(trace.CF_TRACE, file.Name())
logger := trace.NewLogger()
logger.Print("hello world")
result, _ := ioutil.ReadAll(file)
assert.Equal(t, string(result), "")
result, _ = ioutil.ReadAll(stdOut)
assert.Contains(t, string(result), "hello world")
})
}
示例15: performMultiPartUpload
func (repo CloudControllerBuildpackBitsRepository) performMultiPartUpload(url string, fieldName string, fileName string, body io.Reader) (apiErr error) {
fileutils.TempFile("requests", func(requestFile *os.File, err error) {
if err != nil {
apiErr = err
return
}
writer := multipart.NewWriter(requestFile)
part, err := writer.CreateFormFile(fieldName, fileName)
if err != nil {
writer.Close()
return
}
_, err = io.Copy(part, body)
writer.Close()
if err != nil {
apiErr = errors.NewWithError("Error creating upload", err)
return
}
var request *net.Request
request, apiErr = repo.gateway.NewRequest("PUT", url, repo.config.AccessToken(), requestFile)
contentType := fmt.Sprintf("multipart/form-data; boundary=%s", writer.Boundary())
request.HttpReq.Header.Set("Content-Type", contentType)
if apiErr != nil {
return
}
apiErr = repo.gateway.PerformRequest(request)
})
return
}