wondeclient 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/bin/wondeclient +4 -0
  3. data/lib/client.rb +72 -0
  4. data/lib/endpoints/achievements.rb +11 -0
  5. data/lib/endpoints/assessment/aspects.rb +11 -0
  6. data/lib/endpoints/assessment/marksheets.rb +11 -0
  7. data/lib/endpoints/assessment/results.rb +11 -0
  8. data/lib/endpoints/assessment/resultsets.rb +11 -0
  9. data/lib/endpoints/assessment/templates.rb +11 -0
  10. data/lib/endpoints/assessment.rb +14 -0
  11. data/lib/endpoints/attendance.rb +16 -0
  12. data/lib/endpoints/attendancecodes.rb +11 -0
  13. data/lib/endpoints/behaviours.rb +11 -0
  14. data/lib/endpoints/classes.rb +11 -0
  15. data/lib/endpoints/contacts.rb +11 -0
  16. data/lib/endpoints/counts.rb +11 -0
  17. data/lib/endpoints/deletions.rb +11 -0
  18. data/lib/endpoints/employees.rb +11 -0
  19. data/lib/endpoints/events.rb +11 -0
  20. data/lib/endpoints/groups.rb +11 -0
  21. data/lib/endpoints/lessonattendance.rb +15 -0
  22. data/lib/endpoints/lessons.rb +11 -0
  23. data/lib/endpoints/medicalconditions.rb +11 -0
  24. data/lib/endpoints/medicalevents.rb +11 -0
  25. data/lib/endpoints/periods.rb +11 -0
  26. data/lib/endpoints/photos.rb +11 -0
  27. data/lib/endpoints/rooms.rb +11 -0
  28. data/lib/endpoints/schools.rb +54 -0
  29. data/lib/endpoints/students.rb +11 -0
  30. data/lib/endpoints/subjects.rb +11 -0
  31. data/lib/endpoints.rb +141 -0
  32. data/lib/exceptions/invalidattendanceexception.rb +7 -0
  33. data/lib/exceptions/invalidlessonattendanceexception.rb +7 -0
  34. data/lib/exceptions/invalidsessionexception.rb +7 -0
  35. data/lib/exceptions/invalidtokenexception.rb +7 -0
  36. data/lib/exceptions/validationerror.rb +7 -0
  37. data/lib/wondeclient.rb +45 -0
  38. data/lib/writeback/lessonattendancerecord.rb +53 -0
  39. data/lib/writeback/lessonregister.rb +30 -0
  40. data/lib/writeback/sessionattendancerecord.rb +89 -0
  41. data/lib/writeback/sessionregister.rb +30 -0
  42. metadata +98 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cce565e4e39b5312ef766bd0a2c13c6cee2f5612
4
+ data.tar.gz: ac4b217f44da358d562bfd76deca1e1d24a63e28
5
+ SHA512:
6
+ metadata.gz: df843c31804091c8fe5381247c429e409db794be02b6f505baa608c2f313d0c163ec20ce9666edd2a7c0b429b4121050612d5ecb83b3be65f483f87be635742a
7
+ data.tar.gz: 80af9f937e0bde09745d5b96c698ab6dd926d15a5da2cff6d8f4face73ace72f071222b380aeb6887868d027b46b82baaf03374cb052c507f4b6946caa58dbf6
data/bin/wondeclient ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/ruby
2
+ require 'wondeclient'
3
+
4
+ puts "CLI client not implemented yet"
data/lib/client.rb ADDED
@@ -0,0 +1,72 @@
1
+ require 'pp'
2
+ # Main Module/Namespace to hold all the Wonde classes
3
+ #
4
+ module Wonde
5
+ # Main client class that the user will interface with
6
+ #
7
+ # @param token [String]
8
+ # @return [Object]
9
+ #
10
+ # @example
11
+ # require 'wondeclient'
12
+ # client = Wonde::Client.new('TOKEN_GOES_HERE')
13
+ # client.schools.all().each do |school|
14
+ # p school.name
15
+ # end
16
+ class Client
17
+ attr_accessor :schools, :attendanceCodes, :token
18
+ @@attendanceCodes
19
+ @@token
20
+ @@version = '0.0.5'
21
+ # Initialize a Client Object
22
+ #
23
+ # @param token [String]
24
+ # @return [Object]
25
+ #
26
+ # @example
27
+ # Wonde::Client.new("SOMETOKEN") #=> #<Wonde::Client:0x007fb223953da0 @token="SOMETOKEN">
28
+ def initialize(token)
29
+ @@token = token
30
+ @token = token
31
+ @schools = Wonde::Schools.new(token)
32
+ @attendanceCodes = Wonde::AttendanceCodes.new(token)
33
+ end
34
+
35
+ # Get School/Schools Object
36
+ #
37
+ # @param id [String]
38
+ # @return [Object]
39
+ #
40
+ # @example
41
+ # client = Wonde::Client.new("SOMETOKEN")
42
+ # school = client.school('SCHOOLID')
43
+ def school(id)
44
+ return Wonde::Schools.new(@token, id)
45
+ end
46
+
47
+ # requestAccess endpoint POST
48
+ #
49
+ # @param schoolId [String]
50
+ # @return [Object]
51
+ #
52
+ # @example
53
+ # client = Wonde::Client.new("SOMETOKEN")
54
+ # client.requestAccess("A0000000000")
55
+ def requestAccess(schoolId)
56
+ return Wonde::Endpoints.new(@token, ('schools/' + schoolId + '/request-access')).post()
57
+ end
58
+
59
+ # revokeAccess endpoint DELETE
60
+ #
61
+ # @param schoolId [String]
62
+ # @return [Object]
63
+ #
64
+ # @example
65
+ # client = Wonde::Client.new("SOMETOKEN")
66
+ # client.revokeAccess('A0000000000')
67
+ def revokeAccess(schoolId)
68
+ return Wonde::Endpoints.new(@token, ('schools/' + schoolId + '/revoke-access')).delete()
69
+ end
70
+
71
+ end
72
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Achievements < Endpoints
3
+ @@uri = 'achievements/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Aspects < Endpoints
3
+ @@uri = 'assessment/aspects/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class MarkSheets < Endpoints
3
+ @@uri = 'assessment/marksheets/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Results < Endpoints
3
+ @@uri = 'assessment/results/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class ResultSets < Endpoints
3
+ @@uri = 'assessment/resultsets/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Templates < Endpoints
3
+ @@uri = 'assessment/templates/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module Wonde
2
+ class Assessment < Endpoints
3
+ attr_accessor :uri, :templates, :aspects, :marksheets, :results, :resultsets
4
+ def initialize(token, id=false)
5
+ super
6
+ self.templates = Templates.new(token, self.uri)
7
+ self.aspects = Aspects.new(token, self.uri)
8
+ self.marksheets = MarkSheets.new(token, self.uri)
9
+ self.results = Results.new(token, self.uri)
10
+ self.resultsets = ResultSets.new(token, self.uri)
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ module Wonde
2
+ class Attendance < Endpoints
3
+ @@uri = 'attendance/session'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+
11
+ def sessionRegister(register)
12
+ throw InvalidSessionException unless register.class == SessionRegister
13
+ return self.post(register)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class AttendanceCodes < Endpoints
3
+ @@uri = 'attendance-codes/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Behaviours < Endpoints
3
+ @@uri = 'behaviours/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Classes < Endpoints
3
+ @@uri = 'classes/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Contacts < Endpoints
3
+ @@uri = 'contacts/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Counts < Endpoints
3
+ @@uri = 'counts/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Deletions < Endpoints
3
+ @@uri = 'deletions/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Employees < Endpoints
3
+ @@uri = 'employees/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Events < Endpoints
3
+ @@uri = 'events/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Groups < Endpoints
3
+ @@uri = 'groups/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ module Wonde
2
+ class LessonAttendance < Endpoints
3
+ @@uri = 'attendance/lesson/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ def lessonRegister(register)
11
+ throw InvalidSessionException unless register.class == LessonRegister
12
+ return self.post(register)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Lessons < Endpoints
3
+ @@uri = 'lessons/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class MedicalConditions < Endpoints
3
+ @@uri = 'medical-conditions/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class MedicalEvents < Endpoints
3
+ @@uri = 'medical-events/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Periods < Endpoints
3
+ @@uri = 'periods/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Photos < Endpoints
3
+ @@uri = 'photos/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Rooms < Endpoints
3
+ @@uri = 'rooms/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,54 @@
1
+ module Wonde
2
+ class Schools < Endpoints
3
+ attr_accessor :uri, :achievements, :attendance, :behaviours, :classes,
4
+ :contacts, :counts, :employees, :groups, :lessons,
5
+ :lessonAttendance, :medicalConditions, :medicalEvents, :periods,
6
+ :photos, :rooms, :subjects, :students, :assessment, :deletions,
7
+ :events
8
+ @@uri = 'schools/'
9
+ def initialize(token, id=false)
10
+ super(token, id)
11
+ self.token = token
12
+ self.uri = @@uri
13
+ self.uri = @@uri + id + '/' if id
14
+ self.uri = self.uri.gsub("//", "/").chomp("/")
15
+ self.achievements = Wonde::Achievements.new(token, self.uri)
16
+ self.assessment = Wonde::Assessment.new(token, self.uri)
17
+ self.attendance = Wonde::Attendance.new(token, self.uri)
18
+ self.behaviours = Wonde::Behaviours.new(token, self.uri)
19
+ self.classes = Wonde::Classes.new(token, self.uri)
20
+ self.contacts = Wonde::Contacts.new(token, self.uri)
21
+ self.counts = Wonde::Counts.new(token, self.uri)
22
+ self.deletions = Wonde::Deletions.new(token, self.uri)
23
+ self.employees = Wonde::Employees.new(token, self.uri)
24
+ self.events = Wonde::Events.new(token, self.uri)
25
+ self.groups = Wonde::Groups.new(token, self.uri)
26
+ self.lessons = Wonde::Lessons.new(token, self.uri)
27
+ self.lessonAttendance = Wonde::LessonAttendance.new(token, self.uri)
28
+ self.medicalConditions = Wonde::MedicalConditions.new(token, self.uri)
29
+ self.medicalEvents = Wonde::MedicalEvents.new(token, self.uri)
30
+ self.periods = Wonde::Periods.new(token, self.uri)
31
+ self.photos = Wonde::Photos.new(token, self.uri)
32
+ self.rooms = Wonde::Rooms.new(token, self.uri)
33
+ self.students = Wonde::Students.new(token, self.uri)
34
+ self.subjects = Wonde::Subjects.new(token, self.uri)
35
+ end
36
+
37
+ def pending(includes = Array.new(), parameters = Array.new())
38
+ self.uri = @@uri + 'pending/'
39
+ return self.all(includes, parameters)
40
+ end
41
+
42
+ def search(includes = Hash.new(), parameters = Hash.new())
43
+ self.uri = @@uri + 'all/'
44
+ return self.all(includes, parameters)
45
+ end
46
+
47
+ def get(id, includes = Array.new(), parameters = Array.new())
48
+ self.uri = @@uri
49
+ school = super(id, includes, parameters)
50
+ return school
51
+ end
52
+
53
+ end
54
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Students < Endpoints
3
+ @@uri = 'students/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Wonde
2
+ class Subjects < Endpoints
3
+ @@uri = 'subjects/'
4
+ def initialize(token, id=false)
5
+ super(token, id)
6
+ self.uri = @@uri
7
+ self.uri = id + '/' + @@uri if id
8
+ self.uri = self.uri.gsub("//", "/").chomp("/")
9
+ end
10
+ end
11
+ end
data/lib/endpoints.rb ADDED
@@ -0,0 +1,141 @@
1
+ module Wonde
2
+ # Top level Endpoints class, most of our classes inherit from this
3
+ # Some methods use this directly
4
+ class Endpoints
5
+ require 'unirest'
6
+ require 'ostruct'
7
+ require "addressable/uri"
8
+ require 'json'
9
+ attr_accessor :endpoint, :uri, :token, :version
10
+ # Main endpoint, base URI
11
+ @@endpoint = 'https://api.wonde.com/v1.0/'
12
+
13
+
14
+ def initialize(token, uri=false)
15
+ self.endpoint = @@endpoint
16
+ self.uri = String.new()
17
+ self.version = '0.0.1'
18
+ self.token = token
19
+ self.uri = uri if uri
20
+ end
21
+
22
+ # Forwards request info, eventually to unirest
23
+ #
24
+ # @param endpoint [String]
25
+ # @return [Object]
26
+ def getRequest(endpoint)
27
+ puts "self.endpoint: " + self.endpoint if ENV["debug_wonde"]
28
+ puts "endpoint:" + endpoint if ENV["debug_wonde"]
29
+ return getUrl(self.endpoint + endpoint)
30
+ end
31
+
32
+ # Forwards request info to unirest
33
+ #
34
+ # @param url [String]
35
+ # @return [Object]
36
+ def getUrl(url)
37
+ return _client().get(url)
38
+ end
39
+
40
+ # Builds get request and passes it along
41
+ #
42
+ # @param id [String]
43
+ # @param includes [Hash]
44
+ # @param parameters [Hash]
45
+ # @return [Object]
46
+ def get(id, includes = Hash.new(), parameters = Hash.new())
47
+ unless includes.nil? or includes.empty?
48
+ parameters['include'] = includes.join(",")
49
+ end
50
+ unless parameters.empty?
51
+ uriparams = Addressable::URI.new
52
+ uriparams.query_values = parameters
53
+ uri = self.uri + id + "?" + uriparams.query
54
+ else
55
+ uri = self.uri + id
56
+ end
57
+ response = getRequest(uri).body["data"]
58
+ puts response if ENV["debug_wonde"]
59
+ jsonized = response.to_json
60
+ puts jsonized if ENV["debug_wonde"]
61
+ object = JSON.parse(jsonized, object_class: OpenStruct)
62
+ puts object if ENV["debug_wonde"]
63
+ return object
64
+ end
65
+
66
+ def postRequest(endpoint, body=Hash.new())
67
+ puts "self.endpoint:\n " + self.endpoint if ENV["debug_wonde"]
68
+ puts "endpoint:\n" + endpoint if ENV["debug_wonde"]
69
+ puts "body:\n" + body.to_json if ENV["debug_wonde"]
70
+ return postUrl(self.endpoint + endpoint, body)
71
+ end
72
+
73
+ def postUrl(url, body=Hash.new())
74
+ puts body.to_json if ENV["debug_wonde"]
75
+ return _client().post(url, headers:{ "Accept" => "application/json",
76
+ "Content-Type" => "application/json"},
77
+ parameters:body.to_json)
78
+ end
79
+
80
+ def post(body=Hash.new())
81
+ hash_response = self.postRequest(self.uri, body).body
82
+ if hash_response.nil?
83
+ return Hash.new()
84
+ end
85
+ return OpenStruct.new hash_response
86
+
87
+ end
88
+
89
+ def deleteRequest(endpoint, body=Hash.new())
90
+ puts "self.endpoint: " + self.endpoint if ENV["debug_wonde"]
91
+ puts "endpoint:" + endpoint if ENV["debug_wonde"]
92
+ puts "body:" + body.to_json if ENV["debug_wonde"]
93
+ return deleteUrl(self.endpoint + endpoint, body)
94
+ end
95
+
96
+ def deleteUrl(url, body=Hash.new())
97
+ puts body.to_json if ENV["debug_wonde"]
98
+ return _client().delete(url, headers:{ "Accept" => "application/json",
99
+ "Content-Type" => "application/json"},
100
+ parameters:body.to_json)
101
+ end
102
+
103
+ def delete(body=Hash.new())
104
+ hash_response = self.deleteRequest(self.uri, body).body
105
+ if hash_response.nil?
106
+ return Hash.new()
107
+ end
108
+ return OpenStruct.new hash_response
109
+
110
+ end
111
+
112
+ def all(includes = Array.new(), parameters = Hash.new())
113
+ unless includes.nil? or includes.empty?
114
+ parameters['include'] = includes.join(",")
115
+ end
116
+
117
+ unless parameters.nil? or parameters.empty?
118
+ uriparams = Addressable::URI.new
119
+ uriparams.query_values = parameters
120
+ uriparams.query
121
+ uri = self.uri + '?' + uriparams.query
122
+ else
123
+ uri = self.uri
124
+ end
125
+ response = getRequest(uri).body["data"]
126
+ puts response if ENV["debug_wonde"]
127
+ jsonized = response.to_json
128
+ puts jsonized if ENV["debug_wonde"]
129
+ object = JSON.parse(jsonized, object_class: OpenStruct)
130
+ puts object if ENV["debug_wonde"]
131
+ return object
132
+ end
133
+
134
+ private
135
+ def _client()
136
+ Unirest.default_header('Authorization', ('Basic ' + self.token))
137
+ Unirest.default_header("User-Agent", ("wonde-rb-client-" + self.version))
138
+ return Unirest
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,7 @@
1
+ module Wonde
2
+ class InvalidAttendanceException < StandardError
3
+ def initialize(msg="Unknown InvalidAttendanceException Error")
4
+ super
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Wonde
2
+ class InvalidLessonAttendanceException < StandardError
3
+ def initialize(msg="Unknown InvalidLessonAttendanceException Error")
4
+ super
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Wonde
2
+ class InvalidSessionException < StandardError
3
+ def initialize(msg="Unknown InvalidSessionException Error")
4
+ super
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Wonde
2
+ class InvalidTokenException < StandardError
3
+ def initialize(msg="Unknown InvalidTokenException Error")
4
+ super
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Wonde
2
+ class ValidationError < StandardError
3
+ def initialize(msg="Unknown Validation Error")
4
+ super
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,45 @@
1
+
2
+ module Wonde
3
+ autoload :Client, 'client'
4
+ autoload :Endpoints, 'endpoints'
5
+ #Endpoints
6
+ autoload :Achievements, 'endpoints/achievements'
7
+ autoload :Assessment, 'endpoints/assessment'
8
+ autoload :Attendance, 'endpoints/attendance'
9
+ autoload :AttendanceCodes, 'endpoints/attendancecodes'
10
+ autoload :Behaviours, 'endpoints/behaviours'
11
+ autoload :Classes, 'endpoints/classes'
12
+ autoload :Contacts, 'endpoints/contacts'
13
+ autoload :Counts, 'endpoints/counts'
14
+ autoload :Deletions, 'endpoints/deletions'
15
+ autoload :Employees, 'endpoints/employees'
16
+ autoload :Events, 'endpoints/events'
17
+ autoload :Groups, 'endpoints/groups'
18
+ autoload :LessonAttendance, 'endpoints/lessonattendance'
19
+ autoload :Lessons, 'endpoints/lessons'
20
+ autoload :MedicalConditions, 'endpoints/medicalconditions'
21
+ autoload :MedicalEvents, 'endpoints/medicalevents'
22
+ autoload :Periods, 'endpoints/periods'
23
+ autoload :Photos, 'endpoints/photos'
24
+ autoload :Rooms, 'endpoints/rooms'
25
+ autoload :Schools, 'endpoints/schools'
26
+ autoload :Students, 'endpoints/students'
27
+ autoload :Subjects, 'endpoints/subjects'
28
+ #Assesments
29
+ autoload :Aspects, 'endpoints/assessment/aspects'
30
+ autoload :MarkSheets, 'endpoints/assessment/marksheets'
31
+ autoload :Results, 'endpoints/assessment/results'
32
+ autoload :ResultSets, 'endpoints/assessment/resultsets'
33
+ autoload :Templates, 'endpoints/assessment/templates'
34
+ #Writebacks
35
+ autoload :LessonAttendanceRecord, 'writeback/lessonattendancerecord'
36
+ autoload :LessonRegister, 'writeback/lessonregister'
37
+ autoload :SessionAttendanceRecord, 'writeback/sessionattendancerecord'
38
+ autoload :SessionRegister, 'writeback/sessionregister'
39
+ #Exceptions
40
+ autoload :InvalidAttendanceException, 'exceptions/invalidattendanceexception'
41
+ autoload :InvalidLessonAttendanceException, 'exceptions/invalidlessonattendanceexception'
42
+ autoload :InvalidSessionException, 'exceptions/invalidsessionexception'
43
+ autoload :InvalidTokenException, 'exceptions/invalidtokenexception'
44
+ autoload :ValidationError, 'exceptions/validationerror'
45
+ end
@@ -0,0 +1,53 @@
1
+ module Wonde
2
+ class LessonAttendanceRecord
3
+ attr_accessor :student_id, :lesson_id, :attendance_code_id
4
+
5
+ #most of these methods are here to be compatible 1:1 with the php module, standard ruby getters and setters should still work too
6
+
7
+ def setStudentId(studentId)
8
+ if studentId.empty? or studentId.nil?
9
+ throw InvalidLessonAttendanceException, 'Student id can not be set to null.'
10
+ end
11
+ @student_id = studentId
12
+ end
13
+
14
+ def setLessonId(lessonId)
15
+ if lessonId.empty? or lessonId.nil?
16
+ throw InvalidLessonAttendanceException, 'Lesson id can not be set to null.'
17
+ end
18
+ @lesson_id = lessonId
19
+ end
20
+
21
+ def setAttendanceCodeId(attendanceCodeId)
22
+ if attendanceCodeId.empty? or attendanceCodeId.nil?
23
+ throw InvalidLessonAttendanceException, 'Attendance code id can not be set to null.'
24
+ end
25
+ @attendance_code_id = attendanceCodeId
26
+ end
27
+
28
+ def isValid()
29
+ return ! (self.getStudentId().empty? || self.getLessonId().empty? || self.getAttendanceCodeId().empty?)
30
+ end
31
+
32
+ def getStudentId()
33
+ return self.student_id
34
+ end
35
+
36
+ def getLessonId()
37
+ return self.lesson_id
38
+ end
39
+
40
+ def getAttendanceCodeId()
41
+ return self.attendance_code_id
42
+ end
43
+
44
+ def toArray()
45
+ required = {
46
+ 'lesson_id': self.getLessonId(),
47
+ 'student_id': self.getStudentId(),
48
+ 'attendance_code_id': self.getAttendanceCodeId()
49
+ }
50
+ return required
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,30 @@
1
+ module Wonde
2
+ class LessonRegister
3
+ attr_accessor :attendance
4
+ def initialize()
5
+ self.attendance = Array.new()
6
+ end
7
+
8
+ def to_json()
9
+ {'attendance' => [self.attendance]}.to_json
10
+ end
11
+
12
+ def add(lessonAttendance)
13
+ newlessonattendance = Array.new()
14
+ newlessonattendance.push(lessonAttendance)
15
+ newlessonattendance.each do |lessonAttendanceSingular|
16
+ if lessonAttendanceSingular.class == LessonAttendanceRecord && lessonAttendanceSingular.isValid()
17
+ self.attendance = lessonAttendanceSingular.toArray()
18
+ else
19
+ unless lessonAttendanceSingular.class == LessonAttendanceRecord
20
+ throw InvalidLessonAttendanceException, 'Attendance is not an instance of the LessonAttendance Class.'
21
+ end
22
+ unless lessonAttendanceSingular.isValid()
23
+ throw InvalidLessonAttendanceException, 'Attendance has empty fields.'
24
+ end
25
+ throw InvalidLessonAttendanceException
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,89 @@
1
+ module Wonde
2
+ class SessionAttendanceRecord
3
+ require 'time'
4
+ attr_accessor :student_id, :date, :session, :attendance_code_id, :comment
5
+
6
+ #most of these methods are here to be compatible 1:1 with the php module, standard ruby getters and setters should still work too
7
+
8
+ def setStudentId(studentId)
9
+ if studentId.empty? or studentId.nil?
10
+ throw InvalidAttendanceException, 'Student id can not be set to null.'
11
+ end
12
+ @student_id = studentId
13
+ end
14
+
15
+
16
+ def setAttendanceCodeId(attendanceCodeId)
17
+ if attendanceCodeId.empty? or attendanceCodeId.nil?
18
+ throw InvalidAttendanceException, 'Attendance code id can not be set to null.'
19
+ end
20
+ @attendance_code_id = attendanceCodeId
21
+ end
22
+
23
+ def setDate(date)
24
+ if date.empty? or date.nil?
25
+ throw InvalidAttendanceException, 'Date can not be set to null.'
26
+ end
27
+ begin
28
+ mytime = Time.parse(date).to_i
29
+ rescue
30
+ throw InvalidAttendanceException, 'Date provided is invalid'
31
+ end
32
+ newdate = Time.at(mytime)
33
+ self.date = newdate
34
+ end
35
+
36
+
37
+ def setSession(session)
38
+ session = session.upcase
39
+
40
+ if (session == 'AM' || session == 'PM')
41
+ self.session = session
42
+ else
43
+ throw InvalidSessionException, 'The session is invalid'
44
+ end
45
+ end
46
+
47
+ def isValid()
48
+ return ! (self.getDate().empty? || self.getStudentId().empty? || self.getSession().empty? || self.getAttendanceCodeId().empty?)
49
+ end
50
+
51
+ def getStudentId()
52
+ return self.student_id
53
+ end
54
+
55
+
56
+ def getAttendanceCodeId()
57
+ return self.attendance_code_id
58
+ end
59
+
60
+ def getDate()
61
+ return self.date.to_s
62
+ end
63
+
64
+ def getSession()
65
+ return self.session
66
+ end
67
+
68
+ def toArray()
69
+ required = {
70
+ 'date': self.getDate(),
71
+ 'session': self.getSession(),
72
+ 'student_id': self.getStudentId(),
73
+ 'attendance_code_id': self.getAttendanceCodeId()
74
+ }
75
+ unless self.getComment.nil? or self.getComment.empty?
76
+ required['comment'] = self.getComment()
77
+ end
78
+ return required
79
+ end
80
+
81
+ def getComment()
82
+ return self.comment;
83
+ end
84
+
85
+ def setComment(comment)
86
+ self.comment = comment;
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,30 @@
1
+ module Wonde
2
+ class SessionRegister
3
+ attr_accessor :attendance
4
+ def initialize()
5
+ self.attendance = Array.new()
6
+ end
7
+
8
+ def to_json()
9
+ {'attendance' => [self.attendance]}.to_json
10
+ end
11
+
12
+ def add(attendance)
13
+ newattendance = Array.new()
14
+ newattendance.push(attendance)
15
+ newattendance.each do |attendanceSingular|
16
+ if attendanceSingular.class == SessionAttendanceRecord && attendanceSingular.isValid()
17
+ self.attendance = attendanceSingular.toArray()
18
+ else
19
+ unless attendanceSingular.class == SessionAttendanceRecord
20
+ throw InvalidAttendanceException, 'Attendance is not an instance of the Attendance Class.'
21
+ end
22
+ unless attendanceSingular.isValid()
23
+ throw InvalidAttendanceException, 'Attendance has empty fields.'
24
+ end
25
+ throw InvalidAttendanceException
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wondeclient
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Mike Donlon
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: unirest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Wonde Client
28
+ email: 'miked63017@gmail.com '
29
+ executables:
30
+ - wondeclient
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - bin/wondeclient
35
+ - lib/client.rb
36
+ - lib/endpoints.rb
37
+ - lib/endpoints/achievements.rb
38
+ - lib/endpoints/assessment.rb
39
+ - lib/endpoints/assessment/aspects.rb
40
+ - lib/endpoints/assessment/marksheets.rb
41
+ - lib/endpoints/assessment/results.rb
42
+ - lib/endpoints/assessment/resultsets.rb
43
+ - lib/endpoints/assessment/templates.rb
44
+ - lib/endpoints/attendance.rb
45
+ - lib/endpoints/attendancecodes.rb
46
+ - lib/endpoints/behaviours.rb
47
+ - lib/endpoints/classes.rb
48
+ - lib/endpoints/contacts.rb
49
+ - lib/endpoints/counts.rb
50
+ - lib/endpoints/deletions.rb
51
+ - lib/endpoints/employees.rb
52
+ - lib/endpoints/events.rb
53
+ - lib/endpoints/groups.rb
54
+ - lib/endpoints/lessonattendance.rb
55
+ - lib/endpoints/lessons.rb
56
+ - lib/endpoints/medicalconditions.rb
57
+ - lib/endpoints/medicalevents.rb
58
+ - lib/endpoints/periods.rb
59
+ - lib/endpoints/photos.rb
60
+ - lib/endpoints/rooms.rb
61
+ - lib/endpoints/schools.rb
62
+ - lib/endpoints/students.rb
63
+ - lib/endpoints/subjects.rb
64
+ - lib/exceptions/invalidattendanceexception.rb
65
+ - lib/exceptions/invalidlessonattendanceexception.rb
66
+ - lib/exceptions/invalidsessionexception.rb
67
+ - lib/exceptions/invalidtokenexception.rb
68
+ - lib/exceptions/validationerror.rb
69
+ - lib/wondeclient.rb
70
+ - lib/writeback/lessonattendancerecord.rb
71
+ - lib/writeback/lessonregister.rb
72
+ - lib/writeback/sessionattendancerecord.rb
73
+ - lib/writeback/sessionregister.rb
74
+ homepage: https://github.com/wondeltd
75
+ licenses:
76
+ - MIT
77
+ metadata: {}
78
+ post_install_message:
79
+ rdoc_options: []
80
+ require_paths:
81
+ - lib
82
+ required_ruby_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ requirements: []
93
+ rubyforge_project:
94
+ rubygems_version: 2.5.1
95
+ signing_key:
96
+ specification_version: 4
97
+ summary: Wonde Client
98
+ test_files: []