Conversation
…into google-calendar
space Signed-off-by: Miles Kirkbride <miles.kirkbride@yahoo.com>
Signed-off-by: Miles Kirkbride <miles.kirkbride@yahoo.com>
Signed-off-by: Miles Kirkbride <miles.kirkbride@yahoo.com>
🔀 Branch Merge CheckPR direction: ✅ Passed — |
✅ Ability Validation Passed |
✅ Community PR Path Check — PassedAll changed files are inside the |
🔍 Lint Results✅
|
Removed hardcoded OAuth credentials and updated token retrieval method. Signed-off-by: Uzair Ullah <uzairullahmail@gmail.com>
Signed-off-by: Uzair Ullah <uzairullahmail@gmail.com>
Signed-off-by: Uzair Ullah <uzairullahmail@gmail.com>
Refactor timezone handling and improve error messages. Signed-off-by: Uzair Ullah <uzairullahmail@gmail.com>
Set LOCAL_TZ to None initially and update it in call() using the SDK's get_timezone() method. Signed-off-by: Uzair Ullah <uzairullahmail@gmail.com>
Signed-off-by: Uzair Ullah <uzairullahmail@gmail.com>
uzair401
left a comment
There was a problem hiding this comment.
Hi @Mmiless , I’ve updated this PR to align with the latest SDK practices.
OAuth handling has been simplified by removing all manual token logic and switching to self.capability_worker.get_token("google"), which is the recommended SDK approach for retrieving tokens instead of handling refresh tokens manually. You can refer to the docs here: https://docs.openhome.com/OpenHome_SDK_Reference#get_token-platform
Timezone handling is now taken from the SDK using get_timezone() instead of hardcoding it at the module level. I also wrapped the main flow in a proper try/finally block to ensure resume_normal_flow() is always called, even if something fails.
These same updates were applied consistently in both main.py and background.py.
If you’re building or updating abilities, it’s important to rely on SDK methods like get_token() and get_timezone() instead of handling these manually, as this keeps everything consistent and avoids runtime issues.
Great work on this, I am approving it for the community.
As part of our process, abilities go through a 30-day evaluation period where we monitor performance, identify any issues, and make necessary improvements. Once everything meets our quality standards, we proceed with publishing to the marketplace with full credit to the original author.
We truly appreciate your effort and encourage you to keep building and submitting more abilities. Contributions like yours help strengthen the ecosystem, and we look forward to seeing more of your work.
What does this Ability do?
Suggested Trigger Words
Calendar
Schedule
What is on my
Reschedule
Invite
Uninvite
Push back
What do I have going on
Who's on
Who's going to be
Cancel
Meeting
Remind me about
Type
External APIs
Uses Google Calendar API requiring some Google Cloud setup. Instructions in README.
Testing
Checklist
community/my-ability-name/main.pyfollows SDK pattern (extendsMatchingCapability, hasregister_capability+call)README.mdincluded with description, suggested triggers, and setupresume_normal_flow()called on every exit pathprint()— usingeditor_logging_handlerredis,user_config)asyncio.sleep()orasyncio.create_task()— usingsession_tasksAnything else?