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.
- checksums.yaml +7 -0
- data/lib/nusmods.rb +68 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -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
|
data/lib/nusmods.rb
ADDED
@@ -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: []
|