34 lines
No EOL
1.2 KiB
Ruby
34 lines
No EOL
1.2 KiB
Ruby
module Autodiscover
|
|
class Client
|
|
DEFAULT_HTTP_TIMEOUT = 10
|
|
attr_accessor :domain, :email, :http
|
|
|
|
# @param email [String] An e-mail to use for autodiscovery. It will be
|
|
# used as the default username.
|
|
# @param password [String]
|
|
# @param username [String] An optional username if you want to authenticate
|
|
# with something other than the e-mail. For instance DOMAIN\user
|
|
# @param domain [String] An optional domain to provide as an override for
|
|
# the one parsed from the e-mail.
|
|
def initialize(email:, password:, username: nil, domain: nil, connect_timeout: DEFAULT_HTTP_TIMEOUT)
|
|
@email = email
|
|
@domain = domain || @email.split('@').last
|
|
@http = HTTPClient.new
|
|
@http.connect_timeout = connect_timeout if connect_timeout
|
|
@username = username || @email
|
|
@http.set_auth(nil, @username, password)
|
|
end
|
|
|
|
# @param type [Symbol] The type of response. Right now this is just :pox
|
|
# @param [Hash] **options
|
|
def autodiscover(type: :pox, **options)
|
|
case type
|
|
when :pox
|
|
PoxRequest.new(self, **options).autodiscover
|
|
else
|
|
raise Autodiscover::ArgumentError, "Not a valid autodiscover type (#{type})."
|
|
end
|
|
end
|
|
|
|
end
|
|
end |