# Protobuf How To ⚠️ Protobuf classes are generated, do NOT modify the classes manually ⚠️ ## Setup - Install the protobuf compiler ```sh sudo apt install protobuf-compiler ``` - Install the protobuf PHP extension ```sh sudo pecl install protobuf ``` - Install the composer package ```sh composer require google/protobuf ``` Reference: [protobuf/php](https://github.com/protocolbuffers/protobuf/tree/main/php) ## Generate the class - Edit the *.proto file >Reference: [protocol-buffers/docs/proto3](https://developers.google.com/protocol-buffers/docs/proto3) - Run the following cli command: ```bash protoc --proto_path=app/Protobuf/ --php_out=. app/Protobuf/GoogleAuth.proto ``` Protoc will generate the files in `app/Protobuf` while we want them to be in `App/protobuf`. - Moves the files from `app/Protobuf` to `App/protobuf` - Update the namespace of the moved files to match their new location >Reference: [protocol-buffers/docs/php-generated](https://developers.google.com/protocol-buffers/docs/reference/php-generated#invocation) command to decode an otpauth uri using protoc cli ```bash echo "otpauth-migration://offline?data=[BASE32_ENCODED_DATA]" | sed 's/QR-Code://' | sed 's/otpauth-migration:\/\/offline?data=//' | sed -e 's/%2B/+/ig' -e 's/%2F/\//ig' -e 's/%3D/=/ig' | base64 -d | protoc --decode_raw ```