Mercurial > prosody-hg
comparison util/pubsub.lua @ 9516:038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 18 Oct 2018 18:00:54 +0100 |
| parents | 83375ec33619 |
| children | b30455212f89 |
comparison
equal
deleted
inserted
replaced
| 9515:2571c65b972f | 9516:038446c50630 |
|---|---|
| 491 end | 491 end |
| 492 end | 492 end |
| 493 return true; | 493 return true; |
| 494 end | 494 end |
| 495 | 495 |
| 496 function service:publish(node, actor, id, item, required_config) --> ok, err | 496 function service:publish(node, actor, id, item, requested_config) --> ok, err |
| 497 -- Access checking | 497 -- Access checking |
| 498 local may_publish = false; | 498 local may_publish = false; |
| 499 | 499 |
| 500 if self:may(node, actor, "publish") then | 500 if self:may(node, actor, "publish") then |
| 501 may_publish = true; | 501 may_publish = true; |
| 514 local node_obj = self.nodes[node]; | 514 local node_obj = self.nodes[node]; |
| 515 if not node_obj then | 515 if not node_obj then |
| 516 if not self.config.autocreate_on_publish then | 516 if not self.config.autocreate_on_publish then |
| 517 return false, "item-not-found"; | 517 return false, "item-not-found"; |
| 518 end | 518 end |
| 519 local ok, err = self:create(node, true, required_config); | 519 local ok, err = self:create(node, true, requested_config); |
| 520 if not ok then | 520 if not ok then |
| 521 return ok, err; | 521 return ok, err; |
| 522 end | 522 end |
| 523 node_obj = self.nodes[node]; | 523 node_obj = self.nodes[node]; |
| 524 elseif required_config and not check_preconditions(node_obj.config, required_config) then | 524 elseif requested_config and not requested_config._defaults_only then |
| 525 return false, "precondition-not-met"; | 525 -- Check that node has the requested config before we publish |
| 526 if not check_preconditions(node_obj.config, requested_config) then | |
| 527 return false, "precondition-not-met"; | |
| 528 end | |
| 526 end | 529 end |
| 527 if not self.config.itemcheck(item) then | 530 if not self.config.itemcheck(item) then |
| 528 return nil, "invalid-item"; | 531 return nil, "invalid-item"; |
| 529 end | 532 end |
| 530 local node_data = self.data[node]; | 533 local node_data = self.data[node]; |
