CWRUDirectory

Make queries with the Case Western Reserve University directory listing in Ruby!

Inspired by/derived from the Python implementation.

Installation

Add this line to your application's Gemfile:

gem 'cwru_directory'

And then execute:

$ bundle

Or install it yourself as:

$ gem install cwru_directory

Usage

Configuration

CWRUDirectory currently recognizes the following configuration options (you can set as many other options as you like, they just won't do anything):

CWRUDirectory.configure do |config|
  # case_id and password are used to authenticate with SSO to
  # be able to access information not available to the public
  config.case_id = 'abc123'
  config.password = 'my-password'

  # get_all_info is used to tell CWRUDirectory to actually get
  # that extra info not available to the public
  config.get_all_info = true
end

Queries

CWRUDirectory has two ways to query the directory, simple and advanced. Both return a hash, which maps the categories to the sets of results for each category.

The Result hash

As mentioned above, each element of a result set is a hash, which has the following keys:

  • :name
  • :phone_number
  • :email
  • :department

If you run this with the get_all_info config option set, you will also get some of the following, possibly more:

  • "Case Network ID" - this one is always present (as far as I can tell)
  • "Title"
  • "Mail Stop Location Code" - uhhh. I guess if you need that...

Simple Queries

Simple queries allow you to search by single search string in a given search mode.

CWRUDirectory.simple 'my_search_string'
# second argument is the search mode, defaults to :regular,
# :phonetic is the only other option the Case directory supports
CWRUDirectory.simple 'my_search_string', :phonetic

Advanced Queries

You can also make "advanced" queries with many more attributes. The Case directory has the following attributes:

  • surname - last name
  • givenname - first name
  • department - this isn't listed for most entries, so probably won't be that helpful to you
  • location - ??? if you figure out what this actually is, let me know
  • category - one of 'STUDENT', 'FACULTY', 'STAFF', 'EMERITI', 'ALL'
  • search_text - this is the same as the search text used in the simple queries
  • search_method - same as simple queries

Just pass in a hash of whichever ones you want to use; the rest will default to empty strings, except for category (default is 'ALL') and search_method (defaults to :regular)

CWRUDirectory.advanced({surname: 'Mason', givenname: 'Andrew'})

That's all for now folks! LDAP probably coming soon.