require 'net/http' require 'nokogiri' class Groupr attr_accessor :api_url, :certificate, :key, :uw_ca_file attr_reader :request def initialize @api_url = "https://iam-ws.u.washington.edu:7443/group_sws/v2" @uw_ca_file = "#{ENV['HOME']}/uwca.crt" end public def get_response_code @response.code.to_i end def group_exists?(group) @uri = URI.parse("#{@api_url}/group/#{group}") make_get_request if get_response_code == 200 true else false end end ## Membership-related methods: get, get effective, update, delete # https://wiki.cac.washington.edu/display/infra/Groups+WebService+Get+Members def get_membership end # https://wiki.cac.washington.edu/display/infra/Groups+WebService+Get+Effective+Members def get_effective_membership end # http://wiki.cac.washington.edu/display/infra/Groups+WebService+Update+Members def update_membership end # http://wiki.cac.washington.edu/display/infra/Groups+WebService+Delete+Members def delete_membership end ## Member-related methods # http://wiki.cac.washington.edu/display/infra/Groups+WebService+Get+Member def get_member end # http://wiki.cac.washington.edu/display/infra/Groups+WebService+Get+Effective+Member def get_effective_member end # http://wiki.cac.washington.edu/display/infra/Groups+WebService+Add+Member def add_member end # http://wiki.cac.washington.edu/display/infra/Groups+WebService+Delete+Member def delete_member end ## Group-related methods. View, create, update, delete. # https://wiki.cac.washington.edu/display/infra/Groups+WebService+Get+Group def view_group(group) @uri = URI.parse("#{@api_url}/group/#{group}") body = make_get_request @doc = Nokogiri::HTML(body) { title: get_title, description: get_description, name: get_name, regid: get_regid, contact: get_contact } end # https://wiki.cac.washington.edu/display/infra/Groups+WebService+Create+Group def create_group(group,description=nil) @group = group description.nil? ? @description = group : @description = description @uri = URI.parse("#{@api_url}/group/#{group}") @request_text = %Q{