[chef] Re: chef-server REST api in php


Chronological Thread 
  • From: Vasiliy G Tolstov < >
  • To:
  • Subject: [chef] Re: chef-server REST api in php
  • Date: Fri, 02 Jul 2010 16:37:50 +0400
  • Organization: Selfip.Ru

В Птн, 02/07/2010 в 15:19 +0400, Vasiliy G Tolstov пишет:
> I'm try to send and recive json data from chef-server REST api.
> In ruby all simple, but i need to use php language (our developers loves
> it).
> 
> How can i generate X-Ops-Authorization-{1..} and X-Ops-Content-Hash for
> my request?
> 
> I'm already create api key with knife. I'm try to read mixlib auth, but
> can't fully understand what i need in php to sing request. (i'm try to
> send GET /nodes/NODE HTTP/1.1 ...
> 
> 
> 

Now i have this code:

<?php

class chef {

  private $con;
  private $header;
  public function __construct($url) {
    $this->con = curl_init();
    curl_setopt($this->con, CURLOPT_URL, $url);
    curl_setopt($this->con, CURLOPT_HEADER, 0);
    curl_setopt($this->con, CURLOPT_RETURNTRANSFER, 1);
    $this->header  = "Accept: application/json\n";
    $this->header .= "X-Ops-Userid: php\n";
    $this->header .= "Connection: close\n";
    $this->header .= "X-Ops-Sign: version=1.0\n";
    $this->header .= "Host: chef-server:4000\n";
    $this->header .= "X-Ops-Timestamp: 2010-07-02T12:13:25Z\n";
    $this->header .= "X-Chef-Version: 0.9.4\n";
  }

  public function send($string) {
    curl_setopt($this->con, CURLOPT_HTTPGET, 1);
    $crypt = "";
    $key = openssl_get_privatekey("file://./key.pem");
    openssl_private_encrypt(json_encode($string), $crypt, $key);
    $sigs = split("\n", chunk_split(base64_encode($crypt), 61));
    for ($i=1; $i<count($sigs);$i++) { $this->header .=
"X-Ops-Authorization-".$i.": ".$sigs[$i-1]."\n";}
var_dump($this->header);
//    curl_setopt($this->con, CURLOPT_POSTFIELDS, $this->header);
    return (object) json_decode(curl_exec($this->con));
  }
}

$api = new chef("http://chef-server:4000";);
var_dump($api->send(array("format" => 0, "action" => "show", "id" =>
"work.selfip.ru", "controller" => "nodes")));

?>

Do i need encode to json my query? What is the X-Ops-Content-Hash ?



-- 
Vasiliy G Tolstov 
< >
Selfip.Ru




Archive powered by MHonArc 2.6.16.

§