| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
sergei v.2 27.11 00:59
@USE
Hash.p
@CLASS
RabbitMQ
###########################################################################
@create[h][HResQueue]
$self.Config[$h.config]
$self.queue[$h.queue]
^if(def $h.config.sign_pass && ^h.is_sign.bool(true)==true){
$self.sign_pass[$h.config.sign_pass]
}
$HResQueue[^_sendRequest[
$.url[queues/^if($self.Config.vhost ne '/'){$self.Config.vhost}{%2F}/$self.queue]
$.request_method[GET]
]]
^if(def $HResQueue.error && $HResQueue.error eq 'Object Not Found'){
$HResQueue[^_sendRequest[
$.url[queues/^if($self.Config.vhost ne '/'){$self.Config.vhost}{%2F}/$self.queue]
$.request_method[PUT]
$.data[{"auto_delete":false,"durable":true,"arguments":{}}]
]]
}
###########################################################################
@push[sValue]
$result[^_sendRequest[
$.url[exchanges/^if($self.Config.vhost ne '/'){$self.Config.vhost}{%2F}/amq.default/publish]
$.data[{"properties":{"headers":{^if(def $self.sign_pass){"sign":"^self.getSign[$sValue]"}}},"routing_key":"$self.queue","payload":"^taint[json][$sValue]","payload_encoding":"string"}]
]]
###########################################################################
@pull[count]
$result[^_sendRequest[
$.url[queues/^if($self.Config.vhost ne '/'){$self.Config.vhost}{%2F}/${self.queue}/get]
$.data[{"count":^count.int(1),"ackmode":"ack_requeue_false","encoding":"auto","truncate":50000}]
]]
^if($result.0.properties.headers.sign ne ^getSign[^taint[as-is][$result.0.payload]]){
^return[^Hash::create[$.error[Неверная сигнатура данных]]]
}
###########################################################################
@_sendRequest[h]
$f[^curl:load[
$.content-type[application/json]
$.username[$self.Config.user]
$.password[$self.Config.password]
$.url[^taint[as-is][$self.Config.url]/api/$h.url]
^if(def $h.request_method && ($h.request_method eq 'PUT' || $h.request_method eq 'GET' || $h.request_method eq 'DELETE')){
$.customrequest[$h.request_method]
}{
$.post(1)
}
$.postfields[$h.data]
$.charset[UTF-8]
$.timeout(30)
]]
$result[^Hash::create[^taint[as-is][$f.text]]]
###########################################################################
@getSign[s]
$result[^math:digest[sha256;${s}${self.sign_pass}]]