本文整理汇总了Golang中launchpad/net/juju-core/environs.StorageReader类的典型用法代码示例。如果您正苦于以下问题:Golang StorageReader类的具体用法?Golang StorageReader怎么用?Golang StorageReader使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了StorageReader类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: checkFileHasContents
func checkFileHasContents(c *C, storage environs.StorageReader, name string, contents []byte, attempt trivial.AttemptStrategy) {
r, err := storage.Get(name)
c.Assert(err, IsNil)
c.Check(r, NotNil)
defer r.Close()
data, err := ioutil.ReadAll(r)
c.Check(err, IsNil)
c.Check(data, DeepEquals, contents)
url, err := storage.URL(name)
c.Assert(err, IsNil)
var resp *http.Response
for a := attempt.Start(); a.Next(); {
resp, err = http.Get(url)
c.Assert(err, IsNil)
if resp.StatusCode != 404 {
break
}
c.Logf("get retrying after earlier get succeeded. *sigh*.")
}
c.Assert(err, IsNil)
data, err = ioutil.ReadAll(resp.Body)
c.Assert(err, IsNil)
defer resp.Body.Close()
c.Assert(resp.StatusCode, Equals, 200, Commentf("error response: %s", data))
c.Check(data, DeepEquals, contents)
}
示例2: copyOne
func copyOne(
tool *state.Tools, source environs.StorageReader,
target environs.Storage, ctx *cmd.Context,
) error {
toolsName := tools.StorageName(tool.Binary)
fmt.Fprintf(ctx.Stderr, "copying %v", toolsName)
srcFile, err := source.Get(toolsName)
if err != nil {
return err
}
defer srcFile.Close()
// We have to buffer the content, because Put requires the content
// length, but Get only returns us a ReadCloser
buf := &bytes.Buffer{}
nBytes, err := io.Copy(buf, srcFile)
if err != nil {
return err
}
log.Infof("downloaded %v (%dkB), uploading", toolsName, (nBytes+512)/1024)
fmt.Fprintf(ctx.Stderr, ", download %dkB, uploading\n", (nBytes+512)/1024)
if err := target.Put(toolsName, buf, nBytes); err != nil {
return err
}
return nil
}
示例3: checkList
func checkList(c *C, storage environs.StorageReader, prefix string, names []string) {
lnames, err := storage.List(prefix)
c.Assert(err, IsNil)
// TODO(dfc) gocheck should grow an SliceEquals checker.
expected := copyslice(lnames)
sort.Strings(expected)
actual := copyslice(names)
sort.Strings(actual)
c.Assert(expected, DeepEquals, actual)
}
示例4: checkFileDoesNotExist
func checkFileDoesNotExist(c *C, storage environs.StorageReader, name string, attempt trivial.AttemptStrategy) {
var r io.ReadCloser
var err error
for a := attempt.Start(); a.Next(); {
r, err = storage.Get(name)
if err != nil {
break
}
}
c.Assert(r, IsNil)
var notFoundError *environs.NotFoundError
c.Assert(err, FitsTypeOf, notFoundError)
}
示例5: checkFileHasContents
func checkFileHasContents(c *C, storage environs.StorageReader, name string, contents []byte) {
r, err := storage.Get(name)
c.Assert(err, IsNil)
c.Check(r, NotNil)
defer r.Close()
data, err := ioutil.ReadAll(r)
c.Check(err, IsNil)
c.Check(data, DeepEquals, contents)
url, err := storage.URL(name)
c.Assert(err, IsNil)
resp, err := http.Get(url)
c.Assert(err, IsNil)
data, err = ioutil.ReadAll(resp.Body)
c.Assert(err, IsNil)
defer resp.Body.Close()
c.Assert(resp.StatusCode, Equals, http.StatusOK, Commentf("error response: %s", data))
c.Check(data, DeepEquals, contents)
}
示例6: checkList
func checkList(c *C, storage environs.StorageReader, prefix string, names []string) {
lnames, err := storage.List(prefix)
c.Assert(err, IsNil)
c.Assert(lnames, DeepEquals, names)
}
示例7: checkFileDoesNotExist
func checkFileDoesNotExist(c *C, storage environs.StorageReader, name string) {
var notFoundError *errors.NotFoundError
r, err := storage.Get(name)
c.Assert(r, IsNil)
c.Assert(err, FitsTypeOf, notFoundError)
}