MyFitnessPal API client
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
api
db
lib
public
scripts
spec
.gitignore
.rspec
.rubocop.yml
Gemfile
Gemfile.lock
Guardfile
Procfile
README.md
Rakefile
circle.yml
config.ru
sidekiq.rb

README.md

MyFitnessPal API

Setting up local development on a Mac

$ git clone https://github.com/devonzuegel/myfitnesspal-ruby.git
$ brew install postgresql
$ bundle install

Create .env.development and .env.test files with the following contents:

SESSION_SECRET=YOUR-SESSION-SECRET
DATABASE_URL=postgres://
DATABASE_NAME=mfp_api_development
RACK_ENV=development
SESSION_SECRET=YOUR-SESSION-SECRET
DATABASE_URL=postgres://
DATABASE_NAME=mfp_api_test
RACK_ENV=test
# To create your databases:
$ ENV_FILE='.env.development' rake db:create && ENV_FILE='.env.test' rake db:create

# To setup your databases:
$ ENV_FILE='.env.development' rake db:setup && ENV_FILE='.env.test' rake db:setup

# To clean your database:
$ ENV_FILE='.env.development' rake db:clean && ENV_FILE='.env.test' rake db:clean

Starting the server for local development

To start the app, execute both of these commands (in separate windows):

$ bundle exec rackup config.ru                     # Run app
$ bundle exec sidekiq -r ./sidekiq.rb -c N         # Run Sidekiq with N workers

$ bundle exec shotgun config.ru                    # Run app with hot-reloader
$ rerun 'bundle exec sidekiq -r ./sidekiq.rb -c N' # Run Sidekiq with hot-reloader

Debugging/resetting Redis:

$ brew services restart redis
$ redis-cli flushdb  # Clear Redis db

Running specs

$ bundle exec guard

Calculating actual calories in a food entry

actual_calories = amount * gram_weight * quantity * calories / grams

For example, given the following Rice food entry, the actual calories of this entry are 1 * 195 * 2.5 * 111 / 100 = 541.125.

[
  {
    "type": "FoodEntry",
    "data": {
      "food": {
        "type": "Food",
        "data": {
          "description": "Rice - Brown, long-grain, cooked",
          "nutrients": {
            "calories": 111,
            // ...
          },
          "portions": [
            {
              "type": "FoodPortion",
              "data": {
                "amount": 1,
                "gram_weight": 195,
                // ...
              }
            },
            {
              "type": "FoodPortion",
              "data": {
                "amount": 100,
                "gram_weight": 100
                // ...
              }
            },
            {
              "type": "FoodPortion",
              "data": {
                "amount": 1,
                "gram_weight": 28.34950065612793
                // ...
              }
            }
          ],
          // ...
          "grams": 100
        }
      },
      "weight_index": 0,
      "quantity": 2.5,
      // ...
    }
  }
]