Using Azure Functions to find out if the Steam Deck can be reserved in Australia

I’ve been following the introduction of Valve’s new Steam Deck to the gaming world with great interest. The portable gaming PC has garnered much attention and praise in the markets that it is currently available in. The Deck seems to be able to do it all, and to put it bluntly, I want one!

steam deck logo

Steam Deck can't be reserved in Australia

Therein lies my problem. When accessing the Steam Deck reservation page in Australia, we’re greeted with a message, loud and clear:

“This item is not available for reservation in your country”

Steam Deck This item is not available for reservation in your country

To ensure I find out when it does in fact become available in Australia I went ahead with a mini project to update me via email whether it can be reserved in Australia. To help facilitate this, I am piggy-backing off of an API call the Steam Deck page is making in order to inform of the reservation status.

Steam Deck reservation api

To verify this DOES work, using a VPN I changed my location the the States, and I could reserve it. Though you can do this by posting to friends or mail forwarding services, I am trying to remain patient 😇.

Azure Functions to the rescue

I went about this by utilsing Azure Functions written with dotnet core which do the following.

  • GetSteamDeckStatus

This is an HTTP Trigger function which returns a boolean value of whether the Steam Deck can be reserved or not. The value of this is provided to the request body to UploadEmailMessageToQueue.

  • UploadEmailMessageToQueue

This HTTP Trigger function gets the result of the GetSteamDeckStatu and modifies an email message to explain whether it can be reserved or not. This message is then uploaded to an Azure Storage Account Queue Storage.

  • SendEmailFromQueueStorage

This function is called based on messages in it’s connected Azure Storage Queue. When a new email message is added to the queue, this function will be called which then uses SendGrid to send the email

  • CoordinateEmailSending

This function is on a timer basis to coordinate the calling of GetSteamDeckStatus and then passing that return value to the UploadEmailMessageToQueue function so that the emails can be sent.

The result of these functions

Emails in my inbox letting me know if the Steam Deck can be reserved in Australia.

Steam Deck emails

Steam Deck reservation email

The component at the top of this post is also utilsing the GetSteamDeckStatus function to update the status so this post ‘should’ display green when it is available in Australia.

Get in contact

Complete the form below to get in contact with me 😃