*/ class RestClient { private $curl ; private $url ; private $response =""; private $headers = array(); private $method="GET"; private $params=null; private $contentType = null; private $file =null; /** * Private Constructor, sets default options */ private function __construct() { $this->curl = curl_init(); curl_setopt($this->curl,CURLOPT_RETURNTRANSFER,true); curl_setopt($this->curl,CURLOPT_AUTOREFERER,true); // This make sure will follow redirects curl_setopt($this->curl,CURLOPT_FOLLOWLOCATION,true); // This too curl_setopt($this->curl,CURLOPT_HEADER,true); // THis verbose option for extracting the headers } /** * Execute the call to the webservice * @return RestClient */ public function execute() { if($this->method === "POST") { curl_setopt($this->curl,CURLOPT_POST,true); curl_setopt($this->curl,CURLOPT_POSTFIELDS,$this->params); } else if($this->method == "GET"){ curl_setopt($this->curl,CURLOPT_HTTPGET,true); $this->treatURL(); } else if($this->method === "PUT") { curl_setopt($this->curl,CURLOPT_PUT,true); $this->treatURL(); $this->file = tmpFile(); fwrite($this->file,$this->params); fseek($this->file,0); curl_setopt($this->curl,CURLOPT_INFILE,$this->file); curl_setopt($this->curl,CURLOPT_INFILESIZE,strlen($this->params)); } else { curl_setopt($this->curl,CURLOPT_CUSTOMREQUEST,$this->method); } if($this->contentType != null) { curl_setopt($this->curl,CURLOPT_HTTPHEADER,array("Content-Type: ".$this->contentType)); } curl_setopt($this->curl,CURLOPT_URL,$this->url); $r = curl_exec($this->curl); $this->treatResponse($r); // Extract the headers and response return $this ; } /** * Treats URL */ private function treatURL(){ if(is_array($this->params) && count($this->params) >= 1) { // Transform parameters in key/value pars in URL if(!strpos($this->url,'?')) $this->url .= '?' ; foreach($this->params as $k=>$v) { $this->url .= "&".urlencode($k)."=".urlencode($v); } } return $this->url; } /* * Treats the Response for extracting the Headers and Response */ private function treatResponse($r) { if($r == null or strlen($r) < 1) { return; } $parts = explode("\n\r",$r); // HTTP packets define that Headers end in a blank line (\n\r) where starts the body while(preg_match('@HTTP/1.[0-1] 100 Continue@',$parts[0]) or preg_match("@Moved@",$parts[0])) { // Continue header must be bypass for($i=1;$iheaders['content-type'] = $reg[1]; preg_match("@HTTP/1.[0-1] ([0-9]{3}) ([a-zA-Z ]+)@",$parts[0],$reg); // This extracts the response header Code and Message $this->headers['code'] = $reg[1]; $this->headers['message'] = $reg[2]; $this->response = ""; for($i=1;$i 1) { $this->response .= "\n\r"; } $this->response .= $parts[$i]; } } /* * @return array */ public function getHeaders() { return $this->headers; } /* * @return string */ public function getResponse() { return $this->response ; } /* * HTTP response code (404,401,200,etc) * @return int */ public function getResponseCode() { return (int) $this->headers['code']; } /* * HTTP response message (Not Found, Continue, etc ) * @return string */ public function getResponseMessage() { return $this->headers['message']; } /* * Content-Type (text/plain, application/xml, etc) * @return string */ public function getResponseContentType() { return $this->headers['content-type']; } /** * This sets that will not follow redirects * @return RestClient */ public function setNoFollow() { curl_setopt($this->curl,CURLOPT_AUTOREFERER,false); curl_setopt($this->curl,CURLOPT_FOLLOWLOCATION,false); return $this; } /** * This closes the connection and release resources * @return RestClient */ public function close() { curl_close($this->curl); $this->curl = null ; if($this->file !=null) { fclose($this->file); } return $this ; } /** * Sets the URL to be Called * @return RestClient */ public function setUrl($url) { $this->url = $url; return $this; } /** * Set the Content-Type of the request to be send * Format like "application/xml" or "text/plain" or other * @param string $contentType * @return RestClient */ public function setContentType($contentType) { $this->contentType = $contentType; return $this; } /** * Set the Credentials for BASIC Authentication * @param string $user * @param string $pass * @return RestClient */ public function setCredentials($user,$pass) { if($user != null) { curl_setopt($this->curl,CURLOPT_HTTPAUTH,CURLAUTH_BASIC); curl_setopt($this->curl,CURLOPT_USERPWD,"{$user}:{$pass}"); } return $this; } /** * Set the Request HTTP Method * For now, only accepts GET and POST * @param string $method * @return RestClient */ public function setMethod($method) { $this->method=$method; return $this; } /** * Set Parameters to be send on the request * It can be both a key/value par array (as in array("key"=>"value")) * or a string containing the body of the request, like a XML, JSON or other * Proper content-type should be set for the body if not a array * @param mixed $params * @return RestClient */ public function setParameters($params) { $this->params=$params; return $this; } /** * Creates the RESTClient * @param string $url=null [optional] * @return RestClient */ public static function createClient($url=null) { $client = new RestClient ; if($url != null) { $client->setUrl($url); } return $client; } /** * Convenience method wrapping a commom POST call * @param string $url * @param mixed params * @param string $user=null [optional] * @param string $password=null [optional] * @param string $contentType="multpary/form-data" [optional] commom post (multipart/form-data) as default * @return RestClient */ public static function post($url,$params=null,$user=null,$pwd=null,$contentType="multipart/form-data") { return self::call("POST",$url,$params,$user,$pwd,$contentType); } /** * Convenience method wrapping a commom PUT call * @param string $url * @param string $body * @param string $user=null [optional] * @param string $password=null [optional] * @param string $contentType=null [optional] * @return RestClient */ public static function put($url,$body,$user=null,$pwd=null,$contentType=null) { return self::call("PUT",$url,$body,$user,$pwd,$contentType); } /** * Convenience method wrapping a commom GET call * @param string $url * @param array params * @param string $user=null [optional] * @param string $password=null [optional] * @return RestClient */ public static function get($url,array $params=null,$user=null,$pwd=null) { return self::call("GET",$url,$params,$user,$pwd); } /** * Convenience method wrapping a commom delete call * @param string $url * @param array params * @param string $user=null [optional] * @param string $password=null [optional] * @return RestClient */ public static function delete($url,array $params=null,$user=null,$pwd=null) { return self::call("DELETE",$url,$params,$user,$pwd); } /** * Convenience method wrapping a commom custom call * @param string $method * @param string $url * @param string $body * @param string $user=null [optional] * @param string $password=null [optional] * @param string $contentType=null [optional] * @return RestClient */ public static function call($method,$url,$body,$user=null,$pwd=null,$contentType=null) { return self::createClient($url) ->setParameters($body) ->setMethod($method) ->setCredentials($user,$pwd) ->setContentType($contentType) ->execute() ->close(); } } ?> Et quels impacts aura cette nouvelle réalité sur votre vie de couple ou familiale?

Et quels impacts aura cette nouvelle réalité sur votre vie de couple ou familiale?

Il est possible que votre dynamique de couple ou de famille souffre pour un certain temps du dévoilement de l’homosexualité de votre enfant. Vous devez comprendre que le processus d’acceptation de l’homosexualité ne se fait pas au même rythme pour tout le monde. Ainsi, peut-être que votre partenaire (conjoint, conjointe) l’acceptera plus vite ou moins vite que vous. Ce n’est pas une course. Vous n’avez pas à vous comparer. Vous devez prendre chacun le temps de vivre vos émotions, de trouver réponse à vos questions à votre rythme. L’important est que vous soyez en mesure de poursuivre votre rôle de parent auprès de votre (vos) enfant(s).

Il faut éviter d’imposer votre vision des choses à votre partenaire, car cela pourrait entraîner des conflits au sein de votre couple. Essayez d’en parler ensemble calmement, d’être à l’écoute et d’identifier de possibles ententes en attendant que les choses soient plus claires pour tous.

Si vous vous disputez à ce propos, évitez de le faire devant votre jeune. Il vit déjà, sans doute, énormément d’émotions. Pas besoin d’y rajouter la culpabilité des chicanes de ses parents. Une chose importante à retenir : il vous faut éviter de dire des choses concernant votre fils qui dépassent votre pensée et que vous pourriez regretter par la suite.

En ce qui concerne la dynamique familiale – incluant les autres membres de votre famille – le dévoilement peut certainement avoir un impact. Si vous avez d’autres enfants, vous remarquerez peut-être qu’ils étaient déjà au courant de la situation. C’est souvent plus facile pour l’enfant homosexuel d’en parler à son frère ou sa sœur qu’à ses parents. Votre fils aura tendance à faire ses dévoilements en pensant aux risques potentiels et anticipés de rejet. Ainsi, pour lui, le risque associé au rejet d’un frère ou d’une sœur peut paraître, quoique très important, quand même moins dramatique que le rejet qu’il pourrait vivre de son père ou de sa mère.

Il se peut aussi que votre fils n’en ait parlé à personne de la famille lorsqu’il l’abordera avec vous. Vous devrez voir avec lui s’il souhaite que vous en parliez avec les autres ou non. Il peut aussi vous demander de garder la nouvelle secrète. C’est à vous de voir avec lui si vous êtes à l’aise d’agir ainsi. L’important est que vous puissiez en parler ensemble.

Vous aurez peut-être aussi les émotions et réactions des autres membres de la famille à gérer (les frères et sœurs, les grands-parents, les oncles et tantes). N’hésitez pas à les référer à des ressources pouvant leur permettre de ventiler si jamais vous ne vous sentez pas en mesure de les épauler. N’oubliez jamais de vivre vos émotions : elles sont aussi importantes que celles des autres membres de votre famille.

Enfin, il est important de maintenir le dialogue familial pour que l’homosexualité de votre fils ne devienne pas un sujet tabou qui risque de faire naître un grand malaise au sein de votre famille.