繁体   English   中英

Rackspace Cloud API的Perl绑定和设置/获取对象元数据的问题

[英]Issues with the Perl binding of the Rackspace Cloud API and setting/getting object metadata

使用Rackspace Cloud API [ Github ]的非官方Perl绑定 ,我不能为我的生活设置或检索给定对象的元数据。

我可以成功地从云端下载文件,但是当我按照文档中的定义调​​用object_metadata ,我会收到一个抱怨uninitialized value的错误。 我可以通过Cloud Files管理器验证是否在元数据中为Status设置了值。 我甚至尝试检查X-Object-Meta-Status (没有成功)。

相关代码如下:

# authentication
# set $container to pre-made container
my @files = $container->objects(prefix => 'tainted/')->all;
FILE: foreach my $file(@files) {

  # throws undefined // have tried capitalized and not, quotes and none
  next FILE if $file->object_metadata->{'status'} != '-1';

  # download file from object & do stuff with it

  # does not update object in cloud (not sure if anything id done locally)
  $file->object_metadata({ status => $status });

}

就像我说的,对象被成功检索,我只是无法查看给定文件上的元数据。 我已经玩过上面的一些变化,但是每种新方法的测试都会花费带宽(金钱!)。 任何帮助将非常感谢!

我觉得根本没有设置元数据。 我们来看看使用Moose构建的WebService :: Rackspace :: CloudFiles :: Object

has 'object_metadata' => (
    is => 'rw',
    isa => 'HashRef',
    required => 0,
    default => sub {
        return {};
    }
);

所以有一个可选的属性object_metadata ,可以使用内置选择器检索它。 大!

$container->objects返回的$container->objects是在WebService :: Rackspace :: CloudFiles :: Container中创建的( 剪切 ):

foreach my $bit (@bits) {
  push @objects,
    WebService::Rackspace::CloudFiles::Object->new(
    cloudfiles => $self->cloudfiles,
    container => $self,
    name => $bit->{name},
    etag => $bit->{hash},
    size => $bit->{bytes},
    content_type => $bit->{content_type},
    last_modified => $bit->{last_modified},
  );
}

因此,如果我正确地看到这一点,则此调用中没有object_metadata属性,这很好,因为它是可选的。 但是如果它没有设置,你检索一个空的hashref是否有意义,不是吗?

我想你可能想要自己补丁一下。 : - /


我做了一些挖掘:在CloudFiles文档中,它表示元数据在结果的HTTP标头中返回。 关于如何自行检索元数据文档很好地解释了它是如何传输的。 但不幸的是,在模块中肯定没有解析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM