Support snikket region and av-region, default av-region to na

Stephen Paul Weber created

Change summary

lib/snikket.rb | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)

Detailed changes

lib/snikket.rb 🔗

@@ -10,12 +10,17 @@ module Snikket
 	class Launch < Blather::Stanza::Iq
 		register nil, "launch", "xmpp:snikket.org/hosting/v1"
 
-		def self.new(type=nil, to=nil, id=nil, domain: nil)
+		def self.new(
+			type=nil, to=nil, id=nil,
+			domain: nil, region: nil, av_region: "na"
+		)
 			stanza = super(type || :set, to, id)
 			node = Nokogiri::XML::Node.new("launch", stanza.document)
 			node.default_namespace = registered_ns
 			stanza << node
 			stanza.domain = domain if domain
+			stanza.region = region if region
+			stanza.av_region = av_region if av_region
 			stanza
 		end
 
@@ -27,6 +32,22 @@ module Snikket
 			query << node
 		end
 
+		def region=(domain)
+			query.at_xpath("./ns:region", ns: self.class.registered_ns)&.remove
+			node = Nokogiri::XML::Node.new("region", document)
+			node.default_namespace = self.class.registered_ns
+			node.content = domain
+			query << node
+		end
+
+		def av_region=(domain)
+			query.at_xpath("./ns:av-region", ns: self.class.registered_ns)&.remove
+			node = Nokogiri::XML::Node.new("av-region", document)
+			node.default_namespace = self.class.registered_ns
+			node.content = domain
+			query << node
+		end
+
 		def query
 			at_xpath("./ns:launch", ns: self.class.registered_ns)
 		end