WIP: FrostFS API Golang repository contains implementation of core FrostFS structures that can be used for integration with FrostFS.
Find a file
Evgenii Stratonikov 29f2157563
[#123] protogen: Treat bytes field as non-nullable
In protobuf 3.12 they have added an support for `optional` keyword,
which has made it into the main branch in 3.15.
https://github.com/protocolbuffers/protobuf/blob/main/docs/implementing_proto3_presence.md
https://github.com/protocolbuffers/protobuf/blob/v3.12.0/docs/field_presence.md#presence-in-proto3-apis

This means that without an explicit `optional` keyword field presence
for scalars is not tracked, thus empty string in JSON should be
unmarshaled to a nil byte slice. Relevant decoding code and tests from
protojson:
fb995f184a/internal/impl/message_reflect_field.go (L327)
fb995f184a/encoding/protojson/decode_test.go (L134)
fb995f184a/encoding/protojson/decode_test.go (L156)

We do not support `optional` keyword and the generator will fail if it sees on.
So only implement the default behaviour.

Refs #122

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-10-11 14:40:54 +03:00
.forgejo/workflows [#1316] go.mod: Bump go version to 1.22 2024-08-21 17:22:56 +03:00
.github [#14] Add Issue Template 2023-03-23 12:19:35 +03:00
accounting [#122] protogen: Always marshal empty fields 2024-10-07 15:05:43 +03:00
acl [#123] protogen: Treat bytes field as non-nullable 2024-10-11 14:40:54 +03:00
ape [#123] protogen: Treat bytes field as non-nullable 2024-10-11 14:40:54 +03:00
apemanager [#123] protogen: Treat bytes field as non-nullable 2024-10-11 14:40:54 +03:00
container [#123] protogen: Treat bytes field as non-nullable 2024-10-11 14:40:54 +03:00
docs Move to frostfs-api 2022-12-12 17:40:48 +03:00
lock/grpc [#122] protogen: Always marshal empty fields 2024-10-07 15:05:43 +03:00
netmap [#123] protogen: Treat bytes field as non-nullable 2024-10-11 14:40:54 +03:00
object [#123] protogen: Treat bytes field as non-nullable 2024-10-11 14:40:54 +03:00
refs [#123] protogen: Treat bytes field as non-nullable 2024-10-11 14:40:54 +03:00
rpc [#117] rpc: Allow to specify custom gRPC dialer 2024-09-16 12:35:37 +03:00
session [#123] protogen: Treat bytes field as non-nullable 2024-10-11 14:40:54 +03:00
signature [#113] go.mod: Use range over int 2024-09-04 15:44:59 +03:00
status [#123] protogen: Treat bytes field as non-nullable 2024-10-11 14:40:54 +03:00
tombstone [#123] protogen: Treat bytes field as non-nullable 2024-10-11 14:40:54 +03:00
util [#123] protogen: Treat bytes field as non-nullable 2024-10-11 14:40:54 +03:00
.gitattributes Simplify Makefile 2020-09-18 11:25:32 +03:00
.gitignore [#101] Remove usage of folder vendor 2024-08-08 17:38:49 +03:00
.golangci.yml [#121] .golangci.yml: Replace exportloopref with copyloopvar 2024-10-02 09:48:11 +03:00
.pre-commit-config.yaml [#113] pre-commit: Update golangci-lint to v1.60.3 2024-09-04 15:43:24 +03:00
CHANGELOG.md [#116] Update obsolete URLs 2024-09-11 14:09:12 +03:00
CONTRIBUTING.md [#116] Update obsolete URLs 2024-09-11 14:09:12 +03:00
CREDITS.md Rebranding 2022-12-09 13:41:35 +03:00
go.mod [#117] go.mod: Upgrade grpc to v1.66.2 2024-09-13 17:22:52 +03:00
go.sum [#117] go.mod: Upgrade grpc to v1.66.2 2024-09-13 17:22:52 +03:00
LICENSE change license 2020-04-10 09:22:35 +03:00
Makefile [#107] Makefile: Generate standard protobuf bindings for tests 2024-08-26 14:36:19 +03:00
prepare.sh [#101] Fix make test 2024-08-09 09:35:25 +03:00
README.md [#116] Update obsolete URLs 2024-09-11 14:09:12 +03:00

FrostFS

Low-level Golang API for FrostFS


Tests Report Release

Overview

Go implementation of recent FrostFS API versions. For a more high-level SDK see FrostFS SDK.

Frostfs-Api compatibility

frostfs-api-go version supported frostfs-api versions
v2.14.x v2.14.0

Contributing

Feel free to contribute to this project after reading the contributing guidelines.

Before starting to work on a certain topic, create a new issue first, describing the feature/topic you are going to implement.

License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details