unistats 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/unistats.rb +102 -0
  2. metadata +78 -0
data/lib/unistats.rb ADDED
@@ -0,0 +1,102 @@
1
+ require 'rubygems'
2
+ require 'httparty'
3
+
4
+ class Unistats
5
+ include HTTParty
6
+ format :json
7
+
8
+ base_uri 'data.unistats.ac.uk/api/KIS'
9
+
10
+ # Initialises the Unistats class and configures authentication with an
11
+ # access token - obtain one at http://dataportal.unistats.ac.uk/Account/Register
12
+ # Params:
13
+ # +access_token+:: an access token for the Unistats API
14
+ def initialize(access_token)
15
+ self.class.basic_auth access_token, nil
16
+ end
17
+
18
+ # Checks whether provided API authentication credentials for the Unistats
19
+ # API are correct, returning *true* or *false*
20
+ def authenticated?
21
+ response = institutions
22
+ case response.code
23
+ when 401
24
+ false
25
+ else
26
+ true
27
+ end
28
+ end
29
+
30
+ # Returns a list of institutions registered on Unistats in pages of 25
31
+ # entries as an object parsed from JSON
32
+ # Params:
33
+ # +pageIndex+:: the page number to view, starting from 0
34
+ def institutions(pageIndex=0, options={})
35
+ options.merge!({:query => {:pageIndex => pageIndex}})
36
+ self.class.get("/Institutions.json", options)
37
+ end
38
+
39
+ # Returns information about a specified institution as an object parsed
40
+ # from JSON
41
+ # Params:
42
+ # +institution+:: the UKPRN identifier for an institution
43
+ def institution(institution, options={})
44
+ self.class.get("/Institution/#{institution}.json", options)
45
+ end
46
+
47
+ # Returns information about courses at an institution as an object parsed
48
+ # from JSON, in pages of 25 entries
49
+ # Params:
50
+ # +institution+:: the UKPRN identifier for an institution
51
+ # +pageIndex+:: the page number to view, starting from 0
52
+ def courses(institution, pageIndex=0, options={})
53
+ options.merge!({:query => {:pageIndex => pageIndex}})
54
+ self.class.get("/Institution/#{institution}/Courses.json", options)
55
+ end
56
+
57
+ # Returns information about a specific course at an institution as an object
58
+ # parsed from JSON
59
+ # Params:
60
+ # +institution+:: the UKPRN identifier for an institution
61
+ # +course+:: the KIS ID for a course, unique to a course provider (UKPRN)
62
+ # +recursive+:: (boolean) sets whether to use the other course data methods
63
+ # to find out more details about this course (e.g. statistics, stages)
64
+ def course(institution, course, recursive=true, options={})
65
+ response = self.class.get("/Institution/#{institution}/Course/#{course}.json", options)
66
+ if recursive
67
+ response.merge!({:accreditations => course_accreditations(institution, course)})
68
+ response.merge!({:stages => course_stages(institution, course)})
69
+ response.merge!({:statistics => course_statistics(institution, course)})
70
+ end
71
+ response
72
+ end
73
+
74
+ # Returns information on accreditations for a specific course at an
75
+ # institution as an object parsed from JSON
76
+ # Params:
77
+ # +institution+:: the UKPRN identifier for an institution
78
+ # +course+:: the KIS ID for a course, unique to a course provider (UKPRN)
79
+ def course_accreditations(institution, course, options={})
80
+ self.class.get("/Institution/#{institution}/Course/#{course}/Accreditation.json", options)
81
+ end
82
+
83
+ # Returns information on stages of a specific course at an
84
+ # institution as an object parsed from JSON
85
+ # Params:
86
+ # +institution+:: the UKPRN identifier for an institution
87
+ # +course+:: the KIS idea for a course, unique to a course provider (UKPRN)
88
+ def course_stages(institution, course, options={})
89
+ self.class.get("/Institution/#{institution}/Course/#{course}/Stages.json", options)
90
+ end
91
+
92
+ # Returns statistics aboout a specific course at an institution as an object
93
+ # parsed from JSON
94
+ # Params:
95
+ # +institution+:: the UKPRN identifier for an institution
96
+ # +course+:: the KIS idea for a course, unique to a course provider (UKPRN)
97
+ def course_statistics(institution, course, options={})
98
+ self.class.get("/Institution/#{institution}/Course/#{course}/Statistics.json", options)
99
+ end
100
+ end
101
+
102
+
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: unistats
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Tim Rogers
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: json
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: An API for accessing the Unistats API, which provides data from the Higher
47
+ Education Funding Council for England on further education.
48
+ email: tim@tim-rogers.co.uk
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - lib/unistats.rb
54
+ homepage: https://github.com/timrogers/unistats
55
+ licenses: []
56
+ post_install_message:
57
+ rdoc_options: []
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project:
74
+ rubygems_version: 1.8.24
75
+ signing_key:
76
+ specification_version: 3
77
+ summary: An API library for UK higher education data
78
+ test_files: []