/** * WP_oEmbed_Controller class, used to provide an oEmbed endpoint. * * @package WordPress * @subpackage Embeds * @since 4.4.0 */ /** * oEmbed API endpoint controller. * * Registers the REST API route and delivers the response data. * The output format (XML or JSON) is handled by the REST API. * * @since 4.4.0 */ #[AllowDynamicProperties] final class WP_oEmbed_Controller { /** * Register the oEmbed REST API route. * * @since 4.4.0 */ public function register_routes() { /** * Filters the maxwidth oEmbed parameter. * * @since 4.4.0 * * @param int $maxwidth Maximum allowed width. Default 600. */ $maxwidth = apply_filters( 'oembed_default_width', 600 ); register_rest_route( 'oembed/1.0', '/embed', array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => '__return_true', 'args' => array( 'url' => array( 'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ), 'required' => true, 'type' => 'string', 'format' => 'uri', ), 'format' => array( 'default' => 'json', 'sanitize_callback' => 'wp_oembed_ensure_format', ), 'maxwidth' => array( 'default' => $maxwidth, 'sanitize_callback' => 'absint', ), ), ), ) ); register_rest_route( 'oembed/1.0', '/proxy', array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_proxy_item' ), 'permission_callback' => array( $this, 'get_proxy_item_permissions_check' ), 'args' => array( 'url' => array( 'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ), 'required' => true, 'type' => 'string', 'format' => 'uri', ), 'format' => array( 'description' => __( 'The oEmbed format to use.' ), 'type' => 'string', 'default' => 'json', 'enum' => array( 'json', 'xml', ), ), 'maxwidth' => array( 'description' => __( 'The maximum width of the embed frame in pixels.' ), 'type' => 'integer', 'default' => $maxwidth, 'sanitize_callback' => 'absint', ), 'maxheight' => array( 'description' => __( 'The maximum height of the embed frame in pixels.' ), 'type' => 'integer', 'sanitize_callback' => 'absint', ), 'discover' => array( 'description' => __( 'Whether to perform an oEmbed discovery request for unsanctioned providers.' ), 'type' => 'boolean', 'default' => true, ), ), ), ) ); } /** * Callback for the embed API endpoint. * * Returns the JSON object for the post. * * @since 4.4.0 * * @param WP_REST_Request $request Full data about the request. * @return array|WP_Error oEmbed response data or WP_Error on failure. */ public function get_item( $request ) { $post_id = url_to_postid( $request['url'] ); /** * Filters the determined post ID. * * @since 4.4.0 * * @param int $post_id The post ID. * @param string $url The requested URL. */ $post_id = apply_filters( 'oembed_request_post_id', $post_id, $request['url'] ); $data = get_oembed_response_data( $post_id, $request['maxwidth'] ); if ( ! $data ) { return new WP_Error( 'oembed_invalid_url', get_status_header_desc( 404 ), array( 'status' => 404 ) ); } return $data; } /** * Checks if current user can make a proxy oEmbed request. * * @since 4.8.0 * * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ public function get_proxy_item_permissions_check() { if ( ! current_user_can( 'edit_posts' ) ) { return new WP_Error( 'rest_forbidden', __( 'Sorry, you are not allowed to make proxied oEmbed requests.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Callback for the proxy API endpoint. * * Returns the JSON object for the proxied item. * * @since 4.8.0 * * @see WP_oEmbed::get_html() * @global WP_Embed $wp_embed WordPress Embed object. * @global WP_Scripts $wp_scripts * * @param WP_REST_Request $request Full data about the request. * @return object|WP_Error oEmbed response data or WP_Error on failure. */ public function get_proxy_item( $request ) { global $wp_embed, $wp_scripts; $args = $request->get_params(); // Serve oEmbed data from cache if set. unset( $args['_wpnonce'] ); $cache_key = 'oembed_' . md5( serialize( $args ) ); $data = get_transient( $cache_key ); if ( ! empty( $data ) ) { return $data; } $url = $request['url']; unset( $args['url'] ); // Copy maxwidth/maxheight to width/height since WP_oEmbed::fetch() uses these arg names. if ( isset( $args['maxwidth'] ) ) { $args['width'] = $args['maxwidth']; } if ( isset( $args['maxheight'] ) ) { $args['height'] = $args['maxheight']; } // Short-circuit process for URLs belonging to the current site. $data = get_oembed_response_data_for_url( $url, $args ); if ( $data ) { return $data; } $data = _wp_oembed_get_object()->get_data( $url, $args ); if ( false === $data ) { // Try using a classic embed, instead. /* @var WP_Embed $wp_embed */ $html = $wp_embed->get_embed_handler_html( $args, $url ); if ( $html ) { // Check if any scripts were enqueued by the shortcode, and include them in the response. $enqueued_scripts = array(); foreach ( $wp_scripts->queue as $script ) { $enqueued_scripts[] = $wp_scripts->registered[ $script ]->src; } return (object) array( 'provider_name' => __( 'Embed Handler' ), 'html' => $html, 'scripts' => $enqueued_scripts, ); } return new WP_Error( 'oembed_invalid_url', get_status_header_desc( 404 ), array( 'status' => 404 ) ); } /** This filter is documented in wp-includes/class-wp-oembed.php */ $data->html = apply_filters( 'oembed_result', _wp_oembed_get_object()->data2html( (object) $data, $url ), $url, $args ); /** * Filters the oEmbed TTL value (time to live). * * Similar to the {@see 'oembed_ttl'} filter, but for the REST API * oEmbed proxy endpoint. * * @since 4.8.0 * * @param int $time Time to live (in seconds). * @param string $url The attempted embed URL. * @param array $args An array of embed request arguments. */ $ttl = apply_filters( 'rest_oembed_ttl', DAY_IN_SECONDS, $url, $args ); set_transient( $cache_key, $data, $ttl ); return $data; } } Casino Tower overview and options for Canadian players -

Casino Tower overview and options for Canadian players

Practical Guide to Casino Tower for Canadian Players

Welcome to the most hands‑on overview of Casino Tower written especially for gamers living in Canada. Whether you are looking for the best welcome bonus, a quick deposit method, or a smooth mobile experience, this guide cuts through the fluff and gives you clear steps to get started and stay in control.

All the information below reflects the current 2026 offering of towercasino.ca. For the official site, you can visit towercasino.ca directly.

Getting Started – Registration & Account Setup

The first hurdle is creating an account. Casino Tower asks for basic personal details – name, email, date of birth, and a Canadian postal code. The form is straightforward; however, keep a copy of the email you use because verification will be sent there.

After you hit “Register”, you’ll receive a verification link. Clicking it activates your account and unlocks the bonus page. If the email lands in your spam folder, add no-reply@towercasino.ca to your contacts list – it saves a few minutes later.

Step‑by‑step sign‑up checklist

  • Choose a strong password (mix letters, numbers, symbols).
  • Enter a valid Canadian address – this is needed for KYC.
  • Confirm your email within 24 hours.
  • Complete the optional two‑factor authentication for extra security.

Understanding the Welcome Bonus & Wagering Requirements

Casino Tower’s flagship welcome package is a 100 % match up to $500 plus 100 free spins on selected slots. The match part is called “Deposit Bonus”, while the spins are a “Free Spins Bonus”. Both are credited after your first qualifying deposit.

Wagering requirements are where many players trip up. The deposit bonus must be wagered 30× before any withdrawal, while the free spins winnings are subject to a 35× requirement. In plain terms, a $100 bonus means you need to place bets totaling $3 000 before cashing out.

Bonus types at Casino Tower

  • Deposit Match: 100 % up to $500, 30× wagering.
  • Free Spins: 100 spins, 35× wagering on winnings.
  • Reload Bonuses: 25 % match on subsequent deposits, usually with lower wagering.

Payment Methods – Deposits and Withdrawals

Choosing the right payment method can shave hours off your cash flow. Casino Tower supports the most common Canadian options: Interac e‑Transfer, credit/debit cards, and several e‑wallets. All methods are processed over encrypted SSL connections, so your data stays safe.

Withdrawal speed varies. E‑wallets are typically the fastest, often completed within 24 hours. Card withdrawals can take 2‑5 business days, while Interac may need up to 48 hours depending on your bank.

Method Min Deposit Withdrawal Speed Fees
Interac e‑Transfer $10 CAD 1‑2 business days None
Visa / MasterCard $20 CAD 2‑5 business days Up to 2 % (depends on bank)
Skrill $15 CAD Up to 24 hours None
Neteller $15 CAD Up to 24 hours None

Mobile Experience – App and Browser Play

Casino Tower offers both a downloadable app for iOS and Android and a fully responsive website that works in any modern browser. The app gives you push notifications for new promos and a smoother navigation experience, while the browser version lets you play instantly without storage space.

Both platforms share the same game library, so you won’t miss out on any live dealer tables or progressive slots. If you travel across provinces, the mobile site automatically switches to the correct currency (CAD) and respects local gambling regulations.

Pros & cons of each mobile option

  • App: Faster loading, push alerts, offline play for some slots.
  • Browser: No download needed, works on tablets, less battery drain.
  • Both: Identical bonus eligibility, same security standards.

Live Casino & Sportsbook Options

If you enjoy the feel of a real‑world casino, the live dealer section at Casino Tower covers blackjack, roulette, baccarat and a few specialty games like Dream Catcher. All streams are in high definition with professional dealers that speak English, which is helpful for Canadian players.

The sportsbook is still growing but already includes major Canadian sports: NHL, CFL, MLS, and horse racing. Odds are competitive, and you can place parlays, teasers, and even in‑play bets once the game starts.

  • Live Blackjack – 6‑seat, European rules.
  • Live Roulette – French wheel with “La Partage”.
  • Live Baccarat – Punto Banco, unlimited betting.
  • Live Game Show – Dream Catcher, Lightning Roulette.

Security, Licensing & Responsible Gambling

Casino Tower operates under a licence from the Malta Gaming Authority, which is recognised internationally for strict player protection standards. For Canadian users, the site also complies with the KYC (Know Your Customer) rules that most provinces require.

Verification typically asks for a government‑issued ID (passport or driver’s licence) and a utility bill to confirm address. The process is usually completed within a day, after which you can lift any deposit limits and claim larger bonuses.

Responsible gambling tools

  • Deposit limits – set daily, weekly or monthly caps.
  • Self‑exclusion – temporarily block your account for 24 hours up to 6 months.
  • Reality checks – pop‑up reminders of session length.

Customer Support – What to Expect

Support at Casino Tower is available 24/7 via live chat and email. The chat window opens instantly on the desktop site, while the mobile app offers a “Help” tab that routes you to the same agents. Response times are usually under two minutes for chat, and email replies arrive within a few hours.

There is also an extensive FAQ section covering common topics like bonus terms, payment troubleshooting, and account verification. If you need to speak with a supervisor, the chat can transfer you after a short waiting period.

Contact channels at a glance

  • Live chat – instant, 24/7.
  • Email – support@towercasino.ca, response < 4 hours.
  • FAQ – searchable, covers most issues.

Frequently Asked Questions (FAQ)

Can I claim the welcome bonus on my first deposit?

Yes, after you verify your email and make a minimum deposit of $20 CAD you’ll see the bonus automatically in your account.

Are there any fees for withdrawing to my bank account?

Withdrawals via Interac or e‑wallets are fee‑free. Card withdrawals may incur a small processing fee depending on your card issuer.

Is the Canadian dollar supported?

All deposits, wagers and payouts are displayed in CAD by default for Canadian players.

What if I hit a technical issue during a live game?

Use the live chat to report the problem. Most issues are resolved by reconnecting to the stream, but the support team can also credit any lost bets if the fault is on the server side.

With this practical guide you should now feel equipped to sign up, claim bonuses, and enjoy the full range of Casino Tower’s offerings without unnecessary surprises. Play responsibly, keep an eye on wagering requirements, and enjoy the entertainment that a licensed, Canadian‑friendly platform can deliver.