public function getHmacGetAuthorizationRequestToken(
        $url,
        $key,
        $secret,
        array $query = array(),
        $realm = null
    ) {
        //argument test
        Argument::i()
            //Argument 1 must be a string
            ->test(1, 'string')
            //Argument 2 must be a string
            ->test(2, 'string')
            //Argument 3 must be a string
            ->test(3, 'string')
            //Argument 5 must be a string or null
            ->test(5, 'string', 'null');
            
        return $this->consumer($url, $key, $secret)
            //use authorization header
            ->useAuthorization()
            //set method to get
            ->setMethodToGet()
            //set method to HMAC-SHA1
            ->setSignatureToHmacSha1()
            //when there is a realm
            ->when($realm, function ($instance) use ($realm) {
                //set the realm
                $instance->setRealm($realm);
            //get the token
            })->getToken($query);
    }