Skip to content

fix(rpcserver): normalized REST bytes base64 handling for path and query#2134

Open
sergey3bv wants to merge 2 commits into
lightninglabs:mainfrom
sergey3bv:fix/padded-base64
Open

fix(rpcserver): normalized REST bytes base64 handling for path and query#2134
sergey3bv wants to merge 2 commits into
lightninglabs:mainfrom
sergey3bv:fix/padded-base64

Conversation

@sergey3bv
Copy link
Copy Markdown
Contributor

Should close #2075

@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request improves the robustness of the REST API by standardizing how byte-based fields are parsed. By normalizing various base64 encoding formats, the API becomes more flexible for different client implementations. Additionally, it enforces stricter validation by returning explicit error responses for malformed input, preventing ambiguous or silent failures.

Highlights

  • REST API Byte Normalization: Introduced a normalization layer for REST API byte fields (batch_key, asset_filter, group_key_filter, and group_key) to support multiple base64 variants (standard, URL-safe, with or without padding).
  • Error Handling: Updated the API to return a 400 Bad Request status code for invalid base64 inputs instead of silently returning empty results.
  • Middleware Integration: Implemented a new middleware and custom query parser to handle the normalization process consistently across both path and query parameters.
New Features

🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@sergey3bv sergey3bv force-pushed the fix/padded-base64 branch from 6667bc0 to c1d6238 Compare May 14, 2026 10:10
@sergey3bv sergey3bv marked this pull request as ready for review May 14, 2026 10:11
@sergey3bv sergey3bv marked this pull request as draft May 14, 2026 10:11
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces REST bytes normalization to support various base64 variants (standard, URL-safe, padded, and unpadded) for specific fields in both path and query parameters. It includes a new middleware and query parameter parser, along with comprehensive integration and unit tests. Feedback focuses on expanding the set of normalized fields, improving the reliability of path extraction, optimizing performance by reducing allocations, and ensuring all new functions adhere to the repository's documentation style guide.

Comment thread rpcserver/rest_bytes_normalization.go
Comment thread rpcserver/rest_bytes_normalization.go
Comment thread rpcserver/rest_bytes_normalization.go Outdated
Comment thread rpcserver/rest_bytes_normalization.go Outdated
Comment thread rpcserver/rest_bytes_normalization.go
Comment thread rpcserver/rest_bytes_normalization.go
Comment thread rpcserver/rest_bytes_normalization.go Outdated
Comment thread itest/universe_test.go
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🆕 New

Development

Successfully merging this pull request may close these issues.

rest: path and query byte fields require differently-padded base64

1 participant