function parse_request(&$wp)
 {
     if (array_key_exists('patreon-oauth', $wp->query_vars)) {
         if (array_key_exists('code', $wp->query_vars)) {
             if (get_option('patreon-client-id', false) == false || get_option('patreon-client-secret', false) == false) {
                 /* redirect to homepage because of oauth client_id or secure_key error #HANDLE_ERROR */
                 wp_redirect(home_url());
                 exit;
             } else {
                 $oauth_client = new Patreon_Oauth();
             }
             $tokens = $oauth_client->get_tokens($wp->query_vars['code'], site_url() . '/patreon-authorization/');
             if (array_key_exists('error', $tokens)) {
                 /* redirect to homepage because of some error #HANDLE_ERROR */
                 wp_redirect(home_url());
                 exit;
             } else {
                 /* redirect to homepage successfully #HANDLE_SUCCESS */
                 $api_client = new Patreon_API($tokens['access_token']);
                 $user_response = $api_client->fetch_user();
                 $user = Patreon_Login::createUserFromPatreon($user_response, $tokens);
                 wp_redirect(home_url(), 302);
                 exit;
             }
         } else {
             wp_redirect(home_url());
             exit;
         }
     }
 }
 static function getPatreonUser($user)
 {
     /* get user meta data and query patreon api */
     $user_meta = get_user_meta($user->ID);
     if (isset($user_meta['patreon_access_token'][0])) {
         $api_client = new Patreon_API($user_meta['patreon_access_token'][0]);
         $user = $api_client->fetch_user();
         return $user;
     }
     return false;
 }