webuntis 0.0.1 → 0.0.2

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 (4) hide show
  1. data/README.md +16 -3
  2. data/lib/webuntis.rb +107 -3
  3. data/lib/webuntis/version.rb +1 -1
  4. metadata +9 -9
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # Webuntis
1
+ # WebUntis
2
2
 
3
- TODO: Write a gem description
3
+ This gem makes calls to the [WebUntis][wu] JSON-RPC API.
4
4
 
5
5
  ## Installation
6
6
 
@@ -18,7 +18,18 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ Using it should be quite easy. For example, to print a list of all active
22
+ teachers, you just do this:
23
+
24
+ ``` ruby
25
+ require "webuntis"
26
+
27
+ wu = WebUntis.new("demo_inf", "student", "", server="demo.webuntis.com")
28
+ wu.authorize
29
+ wu.teachers.each do |teacher|
30
+ puts teacher["longName"] if teacher["active"]
31
+ end
32
+ ```
22
33
 
23
34
  ## Contributing
24
35
 
@@ -27,3 +38,5 @@ TODO: Write usage instructions here
27
38
  3. Commit your changes (`git commit -am 'Add some feature'`)
28
39
  4. Push to the branch (`git push origin my-new-feature`)
29
40
  5. Create a new Pull Request
41
+
42
+ [wu]: http://www.grupet.at/en/produkte/webuntis/uebersicht_webuntis.php
@@ -1,7 +1,6 @@
1
1
  require "webuntis/version"
2
2
  require "httparty"
3
3
  require "securerandom"
4
- require "pp"
5
4
 
6
5
  class WebUntis
7
6
  include HTTParty # http://www.youtube.com/watch?v=6Zbi0XmGtMw
@@ -20,8 +19,7 @@ class WebUntis
20
19
  # @param school [String] The school name (e.g. htl-stp)
21
20
  # @param user [String] The user name
22
21
  # @param password [String] The user's password
23
- # @param server [String] The server to use, without +/WebUntis+ (e.g.
24
- # demo.webuntis.com).
22
+ # @param server [String] The server to use, without +/WebUntis+ (e.g. demo.webuntis.com).
25
23
  def initialize(school, user, password, server="demo.webuntis.com")
26
24
  @school = school
27
25
  @user = user
@@ -42,6 +40,112 @@ class WebUntis
42
40
  alias authorize authenticate
43
41
  alias login authenticate
44
42
 
43
+ # Gets a list of teachers. Requires Authentication.
44
+ # @return [Array] Array of hashes.
45
+ def teachers()
46
+ require_authentication!
47
+ options = make_options("getTeachers")
48
+ response = self.class.post("/WebUntis/jsonrpc.do;jsessionid=#{@session_id}?school=#{@school}", options)
49
+ raise response["error"]["message"] unless response["error"].nil?
50
+ response["result"]
51
+ end
52
+
53
+ # Gets a list of classes for the school year with ID +schoolyear+.
54
+ # @param schoolyear [Integer] The ID of the school year, whatever that could be. Defaults to +nil+ (current schoolyear)
55
+ # @return [Array] Array of hashes.
56
+ def classes(schoolyear=nil)
57
+ require_authentication!
58
+ options = make_options("getKlassen", (schoolyear.nil? ? {} : {schoolyear: schoolyear}))
59
+ response = self.class.post("/WebUntis/jsonrpc.do;jsessionid=#{@session_id}?school=#{@school}", options)
60
+ raise response["error"]["message"] unless response["error"].nil?
61
+ response["result"]
62
+ end
63
+ alias klassen classes
64
+
65
+ # Gets a list of subjects.
66
+ # @return [Array] Array of hashes.
67
+ def subjects()
68
+ require_authentication!
69
+ options = make_options("getSubjects")
70
+ response = self.class.post("/WebUntis/jsonrpc.do;jsessionid=#{@session_id}?school=#{@school}", options)
71
+ raise response["error"]["message"] unless response["error"].nil?
72
+ response["result"]
73
+ end
74
+
75
+ # Gets a list of rooms.
76
+ # @return [Array] Array of hashes.
77
+ def rooms()
78
+ require_authentication!
79
+ options = make_options("getRooms")
80
+ response = self.class.post("/WebUntis/jsonrpc.do;jsessionid=#{@session_id}?school=#{@school}", options)
81
+ raise response["error"]["message"] unless response["error"].nil?
82
+ response["result"]
83
+ end
84
+
85
+ # Gets a list of departments.
86
+ # @return [Array] Array of hashes.
87
+ def departments()
88
+ require_authentication!
89
+ options = make_options("getDepartments")
90
+ response = self.class.post("/WebUntis/jsonrpc.do;jsessionid=#{@session_id}?school=#{@school}", options)
91
+ raise response["error"]["message"] unless response["error"].nil?
92
+ response["result"]
93
+ end
94
+
95
+ # Gets a list of holidays.
96
+ # Dates are stored as an integer in the format yyyymmdd (e.g. 20141026)
97
+ # @return [Array] Array of hashes.
98
+ def holidays()
99
+ require_authentication!
100
+ options = make_options("getHolidays")
101
+ response = self.class.post("/WebUntis/jsonrpc.do;jsessionid=#{@session_id}?school=#{@school}", options)
102
+ raise response["error"]["message"] unless response["error"].nil?
103
+ response["result"]
104
+ end
105
+
106
+ # Gets the timegrid units.
107
+ # Times are stored as an integer in the format hhmm (e.g. 750, 1030)
108
+ # @return [Array] Array of hashes.
109
+ def timegrid()
110
+ require_authentication!
111
+ options = make_options("getTimegridUnits")
112
+ response = self.class.post("/WebUntis/jsonrpc.do;jsessionid=#{@session_id}?school=#{@school}", options)
113
+ raise response["error"]["message"] unless response["error"].nil?
114
+ response["result"]
115
+ end
116
+
117
+ # Gets information about lesson types, period codes and their colours.
118
+ # Lession types (lstypes): +ls+: lesson; +oh+: office hour; +sb+: standby;
119
+ # +bs+: break supervision; +ex+: examination
120
+ # @return [Array] Array of hashes.
121
+ def status_data()
122
+ require_authentication!
123
+ options = make_options("getStatusData")
124
+ response = self.class.post("/WebUntis/jsonrpc.do;jsessionid=#{@session_id}?school=#{@school}", options)
125
+ raise response["error"]["message"] unless response["error"].nil?
126
+ response["result"]
127
+ end
128
+
129
+ # Gets the current school year.
130
+ # @return [Hash] The current school year object as a hash.
131
+ def current_schoolyear()
132
+ require_authentication!
133
+ options = make_options("getCurrentSchoolyear")
134
+ response = self.class.post("/WebUntis/jsonrpc.do;jsessionid=#{@session_id}?school=#{@school}", options)
135
+ raise response["error"]["message"] unless response["error"].nil?
136
+ response["result"]
137
+ end
138
+
139
+ # Gets all available school years.
140
+ # @return [Array] Array of hashes.
141
+ def schoolyears()
142
+ require_authentication!
143
+ options = make_options("getSchoolyears")
144
+ response = self.class.post("/WebUntis/jsonrpc.do;jsessionid=#{@session_id}?school=#{@school}", options)
145
+ raise response["error"]["message"] unless response["error"].nil?
146
+ response["result"]
147
+ end
148
+
45
149
  # Ends the session. Requires Authentication.
46
150
  def logout()
47
151
  require_authentication!
@@ -1,6 +1,6 @@
1
1
  class WebUntis
2
2
  # The version of this gem.
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
 
5
5
  # The client name, sent while authenticating.
6
6
  CLIENT_NAME = "WebUntis gem v#{VERSION}, https://rubygems.org/gems/webuntis"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webuntis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-18 00:00:00.000000000 Z
12
+ date: 2014-10-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -32,7 +32,7 @@ dependencies:
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ! '>='
35
+ - - '>='
36
36
  - !ruby/object:Gem::Version
37
37
  version: '0'
38
38
  type: :development
@@ -40,7 +40,7 @@ dependencies:
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ! '>='
43
+ - - '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
46
  - !ruby/object:Gem::Dependency
@@ -48,7 +48,7 @@ dependencies:
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
- - - ! '>='
51
+ - - '>='
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  type: :development
@@ -56,7 +56,7 @@ dependencies:
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
- - - ! '>='
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  - !ruby/object:Gem::Dependency
@@ -103,18 +103,18 @@ require_paths:
103
103
  required_ruby_version: !ruby/object:Gem::Requirement
104
104
  none: false
105
105
  requirements:
106
- - - ! '>='
106
+ - - '>='
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
109
  required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  none: false
111
111
  requirements:
112
- - - ! '>='
112
+ - - '>='
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0'
115
115
  requirements: []
116
116
  rubyforge_project:
117
- rubygems_version: 1.8.23
117
+ rubygems_version: 1.8.29
118
118
  signing_key:
119
119
  specification_version: 3
120
120
  summary: Makes calls to the WebUntis API.