Skip to content

Tips for Running the Shimmer Project

mwang0517 edited this page Nov 17, 2021 · 10 revisions

Installation Option 1

After installing the latest version of Docker, change the General Setting as below:

Click the "setting" button, then select General and unchecked "Use Docker Compose V2".

When starting the containers using docker-compose up -d resourceserver or docker-compose up -d, ensure the Docker is running.

Registering with third-party APIs

Currently, we only use Fitbit and HealthKit (Apple) services. Please ask lab members to get a set of client credentials (OAuth client ID and client secret). Once you obtain credentials for Fitbit API, set the corresponding values in the resource-server.env file.

1 #OPENMHEALTH_SHIMMER_DATA_PROVIDER_REDIRECT_BASE_URL=http://localhost:8083

2 #OPENMHEALTH_SHIMMER_CLIENT_REDIRECT_URL=http://localhost:3200/callback

3 #OPENMHEALTH_SHIM_FITBIT_CLIENT_ID=set-value-here

4 #OPENMHEALTH_SHIM_FITBIT_CLIENT_SECRET=set-value-here

5 #OPENMHEALTH_SHIM_FITBIT_INTRADAY_DATA_AVAILABLE=false

6 #OPENMHEALTH_SHIM_FITBIT_INTRADAY_DATA_GRANULARITY_IN_MINUTES=1

Postman Collection

Please register your postman account first. If you want to run the desktop version, please use Chrome.

1. Setting up the postman environment

Add a new environment by clicking the button at the top-right of the postman console. Then click the "Import" button, select "postman-environment.json" and import the JSON file.

2. Importing the Postman collection

Import the collection by clicking the "Import" button. Then select "postman-collection.json" and import the JSON file.

Authorizing access to a third-party user account (option 2)

  1. Please select “shimmer (development)” and set shim-key to “fitbit”.

  2. Run the following URL: http://localhost:8083/authorize/fitbit?username=user1, with the GET request.

  3. Click “Send”; however, if an error shows as follows, please follow step 4. If no error exists, please jump to step 9.

    "message": "org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang. RuntimeException: A configuration for shim 'fitbit' wasn't found."

  4. Fitbit Issue

    Run ./gradlew build in the terminal. If it is failing, please follow steps 5 and 6. If no error exists, please jump to step 7.

  5. Java Version Issue

    JDK 11 is not supported by Gradle 4, so we need to install a different version of JDK (recommend JDK 8, which has the most support). Then run java -version in the terminal to check the current Java version. Here is the the second way to download; however, you need to register an account.

  6. Could not find tools.jar issue

    Error: Execution failed for task ':java-shim-sdk:compileJava'

    Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.

    Solution:

    • Run echo $JAVA_HOME in the terminal.

    • If it returns nothing, run vim .zshrc in the terminal, add the content as follows:

      export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home'

      export PATH=$JAVA_HOME/bin:$PATH

    • After editing, run source .zshrc in the terminal to reload ash, then run echo $JAVA_HOME, and it should return an URL.

    • Run ./gradlew build in the terminal.

  7. Run docker-compose -f docker-compose-build.yml build in the terminal.

    Error: failed to compute cache key: "/assets" not found: not found

    [2/3] COPY assets /usr/local/Cellar/nginx/1.21.3/html: ------ failed to compute cache key: "/assets" not found: not found ERROR: Service 'console' failed to build : Build failed

    Solution:

    • We need to find and update the correct path for the html folder. For example, in the MacBook, reset the path to /usr/local/Cellar/nginx/1.21.3/html.

    • Since the assets folder does not exist, we need to manually build an empty assets folder under shim-server/shim-server-ui/docker.

    • Delete node_modules folder and package-lock.json file manually from the shimmer project.

    • Open a new terminal from the folder shim-server-ui, then walk through the following steps:

      1. sudo npm install -g yarn (If the yarn package does not exist.)
      2. yarn (To check the current version of the yarn package.)
      3. yarn global add bower
      4. bower --version
      5. bower install
      6. In package.json file, change "grunt-google-cdn": "^0.4.3" to "grunt-google-cdn": "0.3.0". Also please check other details the in the package.json.
      7. yarn add [email protected]
      8. grunt build
      9. After step 8, the assets folder should be built, and it will contain images, scripts, styles, .etc. Then rerun docker-compose -f docker-compose-build.yml build.
  8. Run docker-compose -f docker-compose-build.yml up -d in the terminal.

    Please note we might need to update the Dockerfile (shim-server/shim-server-ui/docker/Dockerfile) in the shimmer project. We need to find and update the correct path for nginx.conf. For example, in the MacBook, the path is /usr/local/etc/nginx/nginx.conf

  9. Find the authorizationUrl value in the returned JSON response and redirect your user to this URL. Your user will land on the third-party website where they can login and authorize access to their third-party user account.