/**
  * Get REST client instance
  *
  * @return null|RestClient
  */
 public static function getRestClient()
 {
     if (is_null(self::$restClient)) {
         self::$restClient = new RestClient(array('base_url' => 'https://app.getsitecontrol.com/api/v1', 'headers' => array('Content-Type' => 'application/json')));
     }
     return self::$restClient;
 }
 /**
  * Processing a sign up form
  */
 public function post_sign_up()
 {
     if (self::post('gsc_sign_up') && check_admin_referer()) {
         $data['name'] = self::post('gsc_name');
         $data['email'] = self::post('gsc_email');
         $data['password'] = self::post('gsc_password');
         $data['site'] = self::post('gsc_site');
         if (self::validate($data, 'register')) {
             $response = GetSiteControlApi::getRestClient()->post('users/register', json_encode(array('name' => $data['name'], 'email' => $data['email'], 'password' => $data['password'], 'site' => $data['site'], 'tracking' => array('context' => 'utm_campaign=WorpressPlugin&utm_medium=plugin'))));
             if (empty($response->error)) {
                 $responseObject = json_decode($response->response);
                 if (empty($responseObject->error)) {
                     //If no errors, save the api key and login url
                     self::$settings['api_key'] = $responseObject->api_key;
                     self::update(self::$settings);
                     wp_redirect(admin_url('admin.php?page=' . self::$actions['index']['slug']));
                 } else {
                     foreach ((array) $responseObject->error->field_errors as $field => $messages) {
                         foreach ($messages as $message) {
                             self::$errors[$field][] = $message;
                         }
                     }
                 }
             } else {
                 self::$errors['__all__'][] = $response->error;
             }
         }
     }
 }