Class: AzureEnum::Federation
- Inherits:
-
Object
- Object
- AzureEnum::Federation
- Defined in:
- lib/azure_enum.rb
Defined Under Namespace
Classes: Discovery
Instance Method Summary collapse
- #check_redirect ⇒ Object
- #enumerate_autodisc ⇒ Object
- #getdomains ⇒ Object
-
#initialize(domain) ⇒ Federation
constructor
A new instance of Federation.
Constructor Details
#initialize(domain) ⇒ Federation
Returns a new instance of Federation.
8 9 10 11 12 |
# File 'lib/azure_enum.rb', line 8 def initialize(domain) @domain = domain @xml_text = nil @redirect = nil end |
Instance Method Details
#check_redirect ⇒ Object
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/azure_enum.rb', line 14 def check_redirect url = "http://autodiscover.#{@domain}/autodiscover/autodiscover.svc" begin res = HTTPClient.head(url) rescue return nil end return nil unless res.status_code == 302 @redirect = res.header["Location"][0] end |
#enumerate_autodisc ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/azure_enum.rb', line 25 def enumerate_autodisc httpsdomains = [ "https://#{@domain}/autodiscover/autodiscover.svc", "https://autodiscover.#{@domain}/autodiscover/autodiscover.svc" ] httpsdomains.unshift @redirect if @redirect httpsdomains.each do |url| xml = get_xml(@domain, url) begin http = HTTPClient.new content = { "Content-Type" => "text/xml; charset=utf-8" } res = http.post(url, xml, content) @xml_text = res.content return @xml_text last rescue next end end end |
#getdomains ⇒ Object
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/azure_enum.rb', line 46 def getdomains fail "enumumerate_autodisc not called yet" unless @xml_text tree = Nokogiri.parse(@xml_text) tree.xpath( "//ad:GetFederationInformationResponseMessage/ad:Response/ad:Domains/ad:Domain", "ad": "http://schemas.microsoft.com/exchange/2010/Autodiscover") .map do |node| node.text end end |