Skip to content

jin/nusmods-gem

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
lib
 
 
 
 
 
 
 
 
 
 

A ruby wrapper for the NUSModsAPI (v0.0.4)

Disclaimer

This gem is not maintained by the creator of NUSMods.

NUSModsAPI repository: https://github.com/nusmodifications/nusmods-api


Installation

gem install nusmods

or add this line into your Gemfile

gem 'nusmods'

then, run bundle install.

Changes in 0.0.4

  • Switched Faraday to HTTParty.

Usage

require 'nusmods' # => true
client = NUSMods::Client.new #  => #<NUSMods::Client:0x007f85928efb10 @base_url="http://api.nusmods.com/">

Endpoints

All methods are set to retrieve the current AY's records if you do not provide any parameters for year or semester.

Every response is either an Array or a Hash object.

Example:

client.get_module_details("MA1101R").keys
 => ["ModuleCode", "ModuleTitle", "Department", "ModuleDescription",
"ModuleCredit", "Workload", "Prerequisite", "Preclusion", "ExamDate", "Types",
"Lecturers", "IVLE", "Timetable", "CorsBiddingStats", "LecturePeriods",
"TutorialPeriods"]

Faculty Departments

Retrieves the list of faculty departments/sub-departments in a Hash.

client.get_faculty_departments(year = 2014, semester = 1)

# => {"Arts & Social Sciences"=>["Centre For Language Studies", "Chinese Studies", "Communications And New Media", "Dean's Office (Arts & Social Sc.)", ...

Lesson Types

Retrieves a list of the types of lessons in a Hash. This API call is not tied to a specific AY or semester.

client.get_lesson_types
# => {"DESIGN LECTURE"=>"Tutorial", "LABORATORY"=>"Tutorial", "LECTURE"=>"Lecture" ... 

Module codes

Retrieves a list of all module codes offered in the semester in an Array.

client.get_module_codes(year = 2014, semester = 1)
# => ["ACC1002", "ACC1002X", "ACC2002", "ACC3601", "ACC3602", ...

Module codes with names

Retrieves a list of all module codes accompanied by their names in an Array.

client.get_module_codes_with_names(year = 2014, semester = 1)
# => {"ACC1002"=>"Financial Accounting", "ACC1002X"=>"Financial Accounting", "ACC2002"=>"Managerial Accounting" ...

Module details

Retrieves all information about a specific module in a Hash

client.get_module_details("MA1101R", year = 2014, semester = 1)
# => {"ModuleCode"=>"MA1101R", "ModuleTitle"=>"Linear Algebra I", "Department"=>"Mathematics", ...

All modules

Retrieves all information about every module in an Array. Note: This retrieves a large dataset, so it will take a while. It is highly suggested that you download a copy from the API directly and store it locally.

client.get_modules(year = 2014, semester = 1)
# => [{ "ModuleCredit" => "4", "ModmavenTree" => { "name" => "ACC1002", "children" => [] }, "LockedModules" => [ "FIN3113", "ACC2002", "IS5116", "FIN2004", ...

For exact response examples or more details, see NUSMods API's README.

Tests:

gem install rspec
rspec spec/nusmods.rb

License

http://opensource.org/licenses/MIT

About

A ruby interface for NUSModsAPI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages