Skip to content

kleinjm/paprika_client

Repository files navigation

PaprikaClient

CI

A small, dependency-free Ruby client for the (unofficial) Paprika Recipe Manager Cloud Sync API. Read your own recipes and write changes — including nutritional_info — back to your Paprika account so they sync to all your devices.

This uses Paprika's private sync API, which is not officially documented or supported. It works today because it's the same API the Paprika apps use, but it could change without notice. Use it with your own account and data.

Installation

gem "paprika_client"

Or install directly:

gem install paprika_client

Usage

require "paprika_client"

client = PaprikaClient::Client.new(
  email: "you@example.com",
  password: "your-paprika-password"
)

# List every recipe (lightweight: uid + change-detection hash)
client.recipes
# => [{ "uid" => "00011ACD-...", "hash" => "B84E5D7D..." }, ...]

# Fetch a full recipe
recipe = client.recipe("00011ACD-...")
recipe.name              # => "Low Fodmap Ground Pork Noodle Bowls"
recipe.nutritional_info  # => "Fat: 22.6 g\nCalories: 487 calories\n..."

# Update nutrition and save it back (recomputes the sync hash and notifies apps)
recipe.nutritional_info = "Calories: 500 calories\nProtein: 30 g"
client.save_recipe(recipe)

save_recipe accepts either a PaprikaClient::Recipe or a plain attributes hash, always recomputes the sync hash, uploads the gzipped payload, and (by default) calls notify so your devices refresh. Pass notify: false to batch several writes and notify once at the end.

Sync hashes

Paprika uses a per-recipe hash to detect changes during sync. The server stores whatever hash a client sends, so PaprikaClient recomputes a deterministic SHA-256 (matching the community reference implementation) on every write. You never manage it yourself.

Authentication

Authentication is HTTP Basic (your Paprika email/password) against the v1 sync endpoints. Keep credentials out of source control — use environment variables or an encrypted credential store.

Development

bin/setup            # install dependencies
bundle exec rake     # run tests + RuboCop

Tests use WebMock (no live API calls) and enforce 100% line and branch coverage via SimpleCov.

License

Released under the MIT License.

About

Ruby client for the Paprika Recipe Manager Cloud Sync API — read and write your recipes, including nutritional info.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors