| 122 | |
| 123 | template <> |
| 124 | Try<Descriptor> parse(const string& s) |
| 125 | { |
| 126 | Try<JSON::Object> json = JSON::parse<JSON::Object>(s); |
| 127 | if (json.isError()) { |
| 128 | return Error("JSON parse failed: " + json.error()); |
| 129 | } |
| 130 | |
| 131 | Try<Descriptor> descriptor = protobuf::parse<Descriptor>(json.get()); |
| 132 | if (descriptor.isError()) { |
| 133 | return Error("Protobuf parse failed: " + descriptor.error()); |
| 134 | } |
| 135 | |
| 136 | Option<Error> error = internal::validateDigest(descriptor->digest()); |
| 137 | if (error.isSome()) { |
| 138 | return Error( |
| 139 | "OCI v1 image descriptor validation failed: " + error->message); |
| 140 | } |
| 141 | |
| 142 | return descriptor.get(); |
| 143 | } |
| 144 | |
| 145 | |
| 146 | template <> |
no test coverage detected