Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better handling of raw bytes #346

Open
broady opened this issue Mar 19, 2019 · 3 comments
Open

Better handling of raw bytes #346

broady opened this issue Mar 19, 2019 · 3 comments
Labels
type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.

Comments

@broady
Copy link
Contributor

broady commented Mar 19, 2019

Given this field in a discovery doc:

    "AsymmetricDecryptRequest": {
      "description": "Request message for KeyManagementService.AsymmetricDecrypt.",
      "id": "AsymmetricDecryptRequest",
      "properties": {
        "ciphertext": {
          "description": "Required. The data encrypted with the named CryptoKeyVersion's public\nkey using OAEP.",
          "format": "byte",
          "type": "string"
        }
      },
      "type": "object"
    },

This gets generated as:

type AsymmetricDecryptRequest struct {
    // Ciphertext: Required. The data encrypted with the named
    // CryptoKeyVersion's public
    // key using OAEP.
    Ciphertext string `json:"ciphertext,omitempty"`

The server accepts a base64-encoded string as the data, but we don't tell users that they need to encode it themselves.

Ideally, we'd just generate this as []byte, which encoding/json actually encodes as a b64-encoded string.

Is this a worthwhile breaking change?

If not, we should at least generate some docs/example on base64-encoding the package?

@jeanbza jeanbza added type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design. type: question Request for information or clarification. Not an issue. labels Mar 19, 2019
@broady
Copy link
Contributor Author

broady commented Mar 19, 2019

/cc @bradfitz if he has an opinion about this.

etags are the most prevalent use of this type, and I'd hope that most usage is pretty opaque:

pseudocode:

o := get(foo)
o.bar = 1
patch(foo, o, etag=o.etag)

@jeanbza jeanbza removed the type: question Request for information or clarification. Not an issue. label Jun 11, 2019
@jeanbza
Copy link
Member

jeanbza commented Jun 11, 2019

There are analogies between this and the recent integer issue, in which we decided to keep int fields instead of specifying int64, int32, etc. to avoid a major breaking change. I think that same logic can be applied here. WDYT?

@broady
Copy link
Contributor Author

broady commented Jun 12, 2019

@jadekler +1

Two options to improve this without making a breaking change:

  • improved docs/examples
  • getters/setters

(or combination/both)

More generally, maybe we should collect these types of issues under a "v2" label?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.
Projects
None yet
Development

No branches or pull requests

2 participants