nusmods 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/nusmods.rb +68 -0
  3. metadata +45 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b3fd0eab99bd3b37856079d2fc44138e79abfdf9
4
+ data.tar.gz: 25a6c2303ad83a51e3a99b4e7e8b9441c8cee063
5
+ SHA512:
6
+ metadata.gz: 8ac8cdb19d112637bd38694b6f8518c52cb07857d1448f029a8e920f201b68bea3a5af644378e627496eb1d0c82b6cf6e3a2807ecbe8e90d041a32e469140824
7
+ data.tar.gz: c39cf9cb8372c96e937eef0dce2193d0dacc5bc60f7d768874d2a29a6fdb54c860206a2b5636de3c861977bbdde0327f1a4d1d5116afe5860384273a40acb12b
@@ -0,0 +1,68 @@
1
+ require 'json'
2
+ require 'net/http'
3
+
4
+ class NUSMods
5
+
6
+ def fetch_json(url)
7
+ resp = Net::HTTP.get_response(URI.parse(url))
8
+ JSON.parse(resp.body)
9
+ end
10
+
11
+ # Returns a Array of all module codes in the given year and semester
12
+ def get_module_codes(year, semester)
13
+ endpoint = "http://api.nusmods.com/#{year}-#{year + 1}/#{semester}/moduleCodes.json"
14
+ begin
15
+ @module_codes = fetch_json(endpoint) if @module_codes.nil?
16
+ rescue
17
+ raise "The requested resource is not available for the given year or semester."
18
+ end
19
+ end
20
+
21
+ # Returns a Hash of all module codes as keys, and its respective module name as values.
22
+ def get_module_codes_with_names(year, semester)
23
+ endpoint = "http://api.nusmods.com/#{year}-#{year + 1}/#{semester}/moduleList.json"
24
+ begin
25
+ @module_codes_with_names = fetch_json(endpoint) if @module_codes_with_names.nil?
26
+ rescue
27
+ raise "The requested resource is not available for the given year or semester."
28
+ end
29
+ end
30
+
31
+ # Returns a Hash of all faculties as keys, and departments under the respective faculties as values.
32
+ def get_faculty_departments(year, semester)
33
+ endpoint = "http://api.nusmods.com/#{year}-#{year + 1}/#{semester}/facultyDepartments.json"
34
+ begin
35
+ @faculty_departments = fetch_json(endpoint) if @faculty_departments.nil?
36
+ rescue
37
+ raise "The requested resource is not available for the given year or semester."
38
+ end
39
+ end
40
+
41
+ def get_lesson_types(year, semester)
42
+ endpoint = "http://api.nusmods.com/#{year}-#{year + 1}/#{semester}/lessonTypes.json"
43
+ begin
44
+ @lesson_types = fetch_json(endpoint) if @lesson_types.nil?
45
+ rescue
46
+ raise "The requested resource is not available for the given year or semester."
47
+ end
48
+ end
49
+
50
+ def get_module_details(year, semester, module_code)
51
+ endpoint = "http://api.nusmods.com/#{year}-#{year + 1}/#{semester}/modules/#{module_code}.json"
52
+ begin
53
+ @module_details = fetch_json(endpoint) if @module_details.nil?
54
+ rescue
55
+ raise "The requested resource is not available for the given year or semester."
56
+ end
57
+ end
58
+
59
+ def get_modules(year, semester)
60
+ endpoint = "http://api.nusmods.com/#{year}-#{year + 1}/#{semester}/modules.json"
61
+ begin
62
+ @modules = fetch_json(endpoint) if @modules.nil?
63
+ rescue
64
+ raise "The requested resource is not available for the given year or semester."
65
+ end
66
+ end
67
+
68
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nusmods
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jingwen Chen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-16 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: This rubygem aims to provide an easier way to fetch data from the NUSMods
14
+ API, especially if you're building ruby apps.
15
+ email: jin@crypt.sg
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/nusmods.rb
21
+ homepage: http://rubygems.org/gems/nusmods
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.2.2
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: A ruby interface for NUSModsAPI.
45
+ test_files: []