{"id":31563421,"url":"https://github.com/fosterg4/lti-gmeet","last_synced_at":"2025-10-05T04:59:10.353Z","repository":{"id":129785175,"uuid":"526835031","full_name":"FosterG4/lti-gmeet","owner":"FosterG4","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-23T21:13:47.000Z","size":400,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-04-23T23:11:02.258Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FosterG4.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-08-20T05:31:30.000Z","updated_at":"2022-08-20T05:31:59.000Z","dependencies_parsed_at":"2023-05-21T09:00:15.140Z","dependency_job_id":null,"html_url":"https://github.com/FosterG4/lti-gmeet","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/FosterG4/lti-gmeet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FosterG4%2Flti-gmeet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FosterG4%2Flti-gmeet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FosterG4%2Flti-gmeet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FosterG4%2Flti-gmeet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FosterG4","download_url":"https://codeload.github.com/FosterG4/lti-gmeet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FosterG4%2Flti-gmeet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278411254,"owners_count":25982368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-05T04:59:05.097Z","updated_at":"2025-10-05T04:59:10.348Z","avatar_url":"https://github.com/FosterG4.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Google Meet LTI (Archived)\n\n## Archiving Notice\n\nThere are now better Canvas / Google meet integrations than then \"LTI Google Meet\" application we built here, including an official one from Canvas. This served its purpose during the initial months of the COVID-19 pandemic.\n\n## Prepare the environment\n\n1. In your Terminal or Command Prompt, run the following at the root of the project directory:\n\n```\n$ npm i\n```\n\n2. Replace the example favicon.png and logo.svg in the `/src/main/branding` with your own favicon and logo\n\n## Prepare the environment variables\n\n1. Create a .env file, by renaming the provided sample\n2. Set the environment variable values to your .env file\n\n## How to run the project using NodeJS\n\nIn your Terminal or Command Prompt, run the following at the root of the\nproject directory to run the server, which will expose an API and call Aleks\nwhenever accessed:\n\n```\n$ npm start\n```\n\n## How to test the project using NodeJS\n\nIn your Terminal or Command Prompt, run the following at the root of the\nproject directory to run the tests:\n\n```\n$ npm test\n```\n\n## How to build the project using Docker\n\nIn your Terminal or Command Prompt, run the following at the root of the\ndirectory to build the server and tag it `lti-googlemeet`:\n\n```\n$ docker build --tag lti-googlemeet .\n```\n\n## How to run the project using Docker\n\nIn your Terminal or Command Prompt, run the following to run the server, which will expose an API on port 3000 and call Aleks whenever accessed if you have the current .env file:\n\n```\n$ docker run -t -p 3000:3000 --env-file ./.env lti-googlemeet\n```\n\nOr run the following in Terminal/Command Prompt to define custom environment\nvariable(s)\n\n```\n$ docker run -p 3000:3000 -e DB_TYPE=type -e HOSTNAME=host -e DATABASE=db -e USER=user -e PASS=pass -e GCAL_CLIENT_EMAIL=gcal_client_email -e GCAL_PRIVATE_KEY=gcal_private_key  -e GCAL_CALENDAR_USER=gcal_calendar_user -e GCAL_CALENDAR_ID=gcal_calendar_id chapel-server\n```\n\n## How to deploy the project to DEV OpenShift\n\n###### In your Terminal or Command Prompt run the following at the root directory of the project:\n\nLog in to DEV OpenShift:\n\n```\n$ oc login https://master.sysdev.ose.apu.edu:8443\n```\n\nDeploy definitions to DEV Openshift:\n\n```\n$ ansible-playbook ./ansible/deploy-to-ose.yml -i ansible/inventories/development.yml\n```\n\nThen, build/deploy from your Terminal or Command Prompt:\n\n```\n$ oc start-build lti-googlemeet\n```\n\nOr, build/deploy from the Openshift GUI\n\n## How to use the project\n\nFrom your browser, or an application such as Postman, you can hit the following endpoints:\n\n## Available Routes:\n\n### /hangout/url - POST\n\nSummary: Redirect the user to the appropriate Google Meet URL, if a URL exists\nDescription: Redirects the user to the Google Meet, if the Google Meet has been created, otherwise an HTML file is sent explaining to the user the Google event has not been created yet\n#### Parameters\nNone\n\n#### Responses\n - **Status Code: 200**\n  - Description: Not ready, needs authorization\n - **Status Code: 301**\n  - Description: Redirect to Google Meet\n - **Status Code: 400**\n  - Description: Class Code not specified\n\n### /oauthcallback - GET\n\nSummary: oAuth redirects here\nDescription: After a successful authorization, Google should redirect the user to this endpoint. Furthermore, this endpoint will create the calendar event, save it to the database and return the Google Meet link\n#### Parameters\n - ##### code\n  - Description: Authorization code coming from Google\n  - Required: true\n  - Data Type: string\n - ##### state\n  - Description: State of the redirect from Google\n  - Required: false\n  - Data Type: string\n\n#### Responses\n - **Status Code: 301**\n  - Description: Redirect to Google Meet\n\n### /xml - GET\n\nSummary: Returns LTI configuration XML\nDescription: Returns LTI configuration XML\n#### Parameters\nNone\n\n#### Responses\n - **Status Code: 200**\n  - Description: Returns the XML configuration to be used by Canvas when creating the\nLTI in Canvas\n\n\n### /ping - GET\n\nSummary: receive a pong response from the server\nDescription: By going to the ping endpoint, the server will send pong if the request is successful\n#### Parameters\nNone\n\n#### Responses\n - **Status Code: 200**\n  - Description: receive 'pong' from the server\n\n## How to generate a markdown from the yaml files\n\nIn your Terminal or Command Prompt, run the following at the root of the project directory:\n\n```\n$ node src/main/utils/yamlToMD.js\n```\n\nThis command looks for all YAML OpenAPI files within the project and prints to the console the endpoints in a markdown format, which you can then copy/paste to your own markdown file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffosterg4%2Flti-gmeet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffosterg4%2Flti-gmeet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffosterg4%2Flti-gmeet/lists"}