| 145 | } |
| 146 | |
| 147 | Result<gcs::PredefinedAcl> ToPredefinedAcl( |
| 148 | const std::shared_ptr<const KeyValueMetadata>& metadata) { |
| 149 | if (!metadata) { |
| 150 | return gcs::PredefinedAcl{}; |
| 151 | } |
| 152 | |
| 153 | const auto& keys = metadata->keys(); |
| 154 | const auto& values = metadata->values(); |
| 155 | |
| 156 | for (std::size_t i = 0; i < keys.size(); ++i) { |
| 157 | if (keys[i] == "predefinedAcl") { |
| 158 | return gcs::PredefinedAcl(values[i]); |
| 159 | } |
| 160 | } |
| 161 | return gcs::PredefinedAcl{}; |
| 162 | } |
| 163 | |
| 164 | Result<gcs::WithObjectMetadata> ToObjectMetadata( |
| 165 | const std::shared_ptr<const KeyValueMetadata>& metadata) { |