You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: delivery.rb
    path of file: ./repos/rpush/lib/rpush/daemon/webpush
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

require "webpush"

module Rpush
  module Daemon
    module Webpush

      # Webpush::Request handles all the encryption / signing.
      # We just override #perform to inject the http instance that is managed
      # by Rpush.
      #
      class Request < ::Webpush::Request
        def perform(http)
          req = Net::HTTP::Post.new(uri.request_uri, headers)
          req.body = body
          http.request(uri, req)
        end
 
    
        def send_request
          # The initializer is inherited from Webpush::Request and looks like
          # this:
          #
          # initialize(message: '', subscription:, vapid:, **options)
          #
          # where subscription is a hash of :endpoint and :keys, and vapid
          # holds the vapid public and private keys and the :subject (which is
          # an email address).
          Request.new(
            message: @notification.message,
            subscription: @notification.subscription,
            vapid: @app.vapid,
            ttl: @notification.time_to_live,
            urgency: @notification.urgency
          ).perform(@http)
        end