[英]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.