IVLE 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 (94) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +4 -0
  3. data/IVLE.gemspec +29 -0
  4. data/LICENSE +7 -0
  5. data/README.md +61 -0
  6. data/Rakefile +1 -0
  7. data/config/settings.yml +2 -0
  8. data/doc/Fixtures.html +167 -0
  9. data/doc/Fixtures/IVLE.html +213 -0
  10. data/doc/Gemfile.html +133 -0
  11. data/doc/IVLE.html +278 -0
  12. data/doc/IVLE/API.html +424 -0
  13. data/doc/IVLE/Announcement.html +309 -0
  14. data/doc/IVLE/Community.html +1305 -0
  15. data/doc/IVLE/Consultation.html +342 -0
  16. data/doc/IVLE/DeltaDatasets.html +213 -0
  17. data/doc/IVLE/Forum.html +533 -0
  18. data/doc/IVLE/Gradebook.html +213 -0
  19. data/doc/IVLE/IVLEModule.html +567 -0
  20. data/doc/IVLE/IVLENews.html +213 -0
  21. data/doc/IVLE/LibraryEReserves.html +245 -0
  22. data/doc/IVLE/Login.html +309 -0
  23. data/doc/IVLE/MyOrganizer.html +520 -0
  24. data/doc/IVLE/OpenWebcastLectures.html +247 -0
  25. data/doc/IVLE/Poll.html +309 -0
  26. data/doc/IVLE/Profile.html +213 -0
  27. data/doc/IVLE/RostersAndGroups.html +676 -0
  28. data/doc/IVLE/StudentEvents.html +378 -0
  29. data/doc/IVLE/Timetable.html +309 -0
  30. data/doc/IVLE/Webcast.html +247 -0
  31. data/doc/IVLE/Workbin.html +245 -0
  32. data/doc/Object.html +185 -0
  33. data/doc/Rakefile.html +131 -0
  34. data/doc/created.rid +26 -0
  35. data/doc/images/add.png +0 -0
  36. data/doc/images/brick.png +0 -0
  37. data/doc/images/brick_link.png +0 -0
  38. data/doc/images/bug.png +0 -0
  39. data/doc/images/bullet_black.png +0 -0
  40. data/doc/images/bullet_toggle_minus.png +0 -0
  41. data/doc/images/bullet_toggle_plus.png +0 -0
  42. data/doc/images/date.png +0 -0
  43. data/doc/images/delete.png +0 -0
  44. data/doc/images/find.png +0 -0
  45. data/doc/images/loadingAnimation.gif +0 -0
  46. data/doc/images/macFFBgHack.png +0 -0
  47. data/doc/images/package.png +0 -0
  48. data/doc/images/page_green.png +0 -0
  49. data/doc/images/page_white_text.png +0 -0
  50. data/doc/images/page_white_width.png +0 -0
  51. data/doc/images/plugin.png +0 -0
  52. data/doc/images/ruby.png +0 -0
  53. data/doc/images/tag_blue.png +0 -0
  54. data/doc/images/tag_green.png +0 -0
  55. data/doc/images/transparent.png +0 -0
  56. data/doc/images/wrench.png +0 -0
  57. data/doc/images/wrench_orange.png +0 -0
  58. data/doc/images/zoom.png +0 -0
  59. data/doc/index.html +126 -0
  60. data/doc/js/darkfish.js +155 -0
  61. data/doc/js/jquery.js +18 -0
  62. data/doc/js/navigation.js +142 -0
  63. data/doc/js/search.js +94 -0
  64. data/doc/js/search_index.js +1 -0
  65. data/doc/js/searcher.js +228 -0
  66. data/doc/rdoc.css +543 -0
  67. data/doc/table_of_contents.html +379 -0
  68. data/lib/IVLE.rb +133 -0
  69. data/lib/IVLE/api/announcement.rb +19 -0
  70. data/lib/IVLE/api/community.rb +174 -0
  71. data/lib/IVLE/api/consultation.rb +24 -0
  72. data/lib/IVLE/api/delta_datasets.rb +7 -0
  73. data/lib/IVLE/api/forum.rb +47 -0
  74. data/lib/IVLE/api/gradebook.rb +7 -0
  75. data/lib/IVLE/api/ivle_news.rb +7 -0
  76. data/lib/IVLE/api/library_ereserves.rb +11 -0
  77. data/lib/IVLE/api/login.rb +19 -0
  78. data/lib/IVLE/api/module.rb +53 -0
  79. data/lib/IVLE/api/my_organizer.rb +62 -0
  80. data/lib/IVLE/api/open_webcast_lectures.rb +13 -0
  81. data/lib/IVLE/api/poll.rb +19 -0
  82. data/lib/IVLE/api/profile.rb +7 -0
  83. data/lib/IVLE/api/rosters_and_groups.rb +78 -0
  84. data/lib/IVLE/api/student_events.rb +32 -0
  85. data/lib/IVLE/api/timetable.rb +19 -0
  86. data/lib/IVLE/api/webcast.rb +13 -0
  87. data/lib/IVLE/api/workbin.rb +11 -0
  88. data/lib/IVLE/version.rb +3 -0
  89. data/spec/api/api_spec.rb +34 -0
  90. data/spec/fixtures/api/login.html +11 -0
  91. data/spec/fixtures/api/modules.json +201 -0
  92. data/spec/fixtures/ivle.rb +7 -0
  93. data/spec/fixtures/modules.json +201 -0
  94. metadata +216 -0
@@ -0,0 +1,19 @@
1
+ module IVLE
2
+ module Announcement
3
+ def announcements(course_id, duration=0, title_only=false)
4
+ api 'Announcements', courseid: course_id, duration: duration, titleonly: title_only
5
+ end
6
+
7
+ def announcements_unread(title_only=false)
8
+ api 'Announcements_Unread'
9
+ end
10
+
11
+ def announcement_add_log(ann_event_id)
12
+ api_post 'Announcement_AddLog_JSON', anneventid: ann_event_id
13
+ end
14
+
15
+ def announcement_add(course_id, ann_title, ann_message, send_email)
16
+ api_post 'Announcement_Add_JSON', courseid: course_id, anntitle: ann_title, annmessage: ann_message, sendemail: send_email
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,174 @@
1
+ module IVLE
2
+ module Community
3
+ def communities(duration=0)
4
+ api 'Communities', duration: duration
5
+ end
6
+
7
+ def community_search(search_type, keyword, active_only=false, title_only=false)
8
+ api 'Community_Search', searchtype: search_type, keyword: keyword, activeonly: active_only, titleonly: title_only
9
+ end
10
+
11
+ def community_categories(active_only=false)
12
+ # Just look at this snake_CamelCase consistency!
13
+ api 'CommunityCategories', activeonly: active_only
14
+ end
15
+
16
+ def community_tags(active_only=false)
17
+ api 'CommunityTags', activeonly: active_only
18
+ end
19
+
20
+ def community(com_id, duration=0)
21
+ api 'Community', comid: com_id, duration: duration
22
+ end
23
+
24
+ def community_members(com_id)
25
+ api 'CommunityMembers', comid: com_id
26
+ end
27
+
28
+ def community_announcements(com_id, duration=0)
29
+ api 'CommunityAnnouncements', comid: com_id, duration: duration
30
+ end
31
+
32
+ def community_workbin_folders(com_id, including_files=true, duration=0)
33
+ api 'CommunityWorkbinFolders', comid: com_id, includingfiles: including_files, duration: duration
34
+ end
35
+
36
+ def community_workbin_files(folder_id, duration=0)
37
+ api 'CommunityWorkbinFiles', folderid: folder_id, duration: duration
38
+ end
39
+
40
+ def community_forum_headings(com_id, including_posts=true, duration=0)
41
+ api 'CommunityForumHeadings', comid: com_id, includingposts: including_posts, duration: duration
42
+ end
43
+
44
+ def community_forum_posts(heading_id, duration=0)
45
+ api 'CommunityForumPosts', headingid: heading_id, duration: duration
46
+ end
47
+
48
+ def community_forum_add_log_by_post(post_id)
49
+ api_post 'CommunityForum_AddLogByPost_JSON', postid: post_id
50
+ end
51
+
52
+ def community_forum_new_topic(heading_id, title, message)
53
+ api_post 'CommunityForum_NewTopic_JSON', headingid: heading_id, message: message
54
+ end
55
+
56
+ def community_forum_reply_post(post_id, title, message)
57
+ api_post 'CommunityForum_ReplyPost_JSON', postid: post_id, title: title, message: message
58
+ end
59
+
60
+ def community_weblinks(com_id)
61
+ api 'CommunityWeblinks', comid: com_id
62
+ end
63
+
64
+ def community_join(com_id)
65
+ api_post 'Community_Join_JSON', comid: com_id
66
+ end
67
+
68
+ def community_quit(com_id)
69
+ api_post 'Community_Quit_JSON', comid: com_id
70
+ end
71
+
72
+ def community_add_member(com_id, member_id, member_type)
73
+ api_post 'Community_AddMember_JSON', comid: com_id, memberid: member_id, membertype: member_type
74
+ end
75
+
76
+ def community_delete_member(com_id, member_id)
77
+ api_post 'Community_DeleteMember_JSON', comid: com_id, memberid: member_id
78
+ end
79
+ def community_update_member(com_id, member_id, member_type)
80
+ api_post 'Community_UpdateMember_JSON', comid: com_id, memberid: member_id, membertype: member_type
81
+ end
82
+
83
+ def community_create(title, description, access_type, default_forum, default_workbin, category_id, tags)
84
+ api_post 'Community_Create_JSON', {
85
+ title: title,
86
+ accesstype: access_type,
87
+ defaultforum: default_forum,
88
+ defaultworkbin: default_workbin,
89
+ categoryid: category_id,
90
+ tags: tags
91
+ }
92
+ end
93
+
94
+ def community_update(com_id, title, description, access_type, default_forum, default_workbin, category_id, tags, display_members_to, opening_date, expiry_date)
95
+ api_post 'Community_Update_JSON', {
96
+ comid: com_id,
97
+ title: title,
98
+ description: description,
99
+ accesstype: access_type,
100
+ defaultforum: default_forum,
101
+ defaultworkbin: default_workbin,
102
+ categoryid: category_id,
103
+ tags: tags,
104
+ displaymembersto: display_members_to,
105
+ openingdate: opening_date,
106
+ expirydate: expiry_date
107
+ }
108
+ end
109
+
110
+ def download_file(id)
111
+ api 'downloadfile', id: id
112
+ end
113
+
114
+ def community_get_task(task_id)
115
+ api 'Community_GetTask', taskid: task_id
116
+ end
117
+
118
+ def community_get_all_tasks(com_id)
119
+ api 'Community_GetAllTasks', comid: com_id
120
+ end
121
+
122
+ def community_get_sub_task(task_id)
123
+ api 'Community_GetSubTask', taskid: task_id
124
+ end
125
+
126
+ def community_create_task(com_id, task_name, task_description, parent_task_id, task_status, task_priority, task_due_date)
127
+ api_post 'Community_CreateTask_JSON', {
128
+ comid: com_id,
129
+ taskname: task_name,
130
+ taskdescription: task_description,
131
+ parenttaskid: parent_task_id,
132
+ taskstatus: task_status,
133
+ taskpriority: task_priority,
134
+ taskduedate: task_due_date
135
+ }
136
+ end
137
+
138
+ def community_update_task(task_id, task_name, task_description, parent_task_id, task_status, task_priority, task_due_date)
139
+ api_post 'Community_UpdateTask_JSON', {
140
+ taskid: com_id,
141
+ taskname: task_name,
142
+ taskdescription: task_description,
143
+ parenttaskid: parent_task_id,
144
+ taskstatus: task_status,
145
+ taskpriority: task_priority,
146
+ taskduedate: task_due_date
147
+ }
148
+ end
149
+
150
+ def community_delete_task(task_id)
151
+ api_post 'Community_DeleteTask_JSON', taskid: task_id
152
+ end
153
+
154
+ def community_create_comment(task_id, comment)
155
+ api_post 'Community_CreateComment_JSON', taskid: task_id, comment: comment
156
+ end
157
+
158
+ def community_update_comment(comment_id, comment)
159
+ api_post 'Commmunity_UpdateComment_JSON', commentid: comment_id, comment: comment
160
+ end
161
+
162
+ def community_delete_comment(comment_id)
163
+ api_post 'Community_DeleteComment_JSON', commentid: comment_id
164
+ end
165
+
166
+ def community_get_comment(comment_id)
167
+ api 'Community_GetComment', commentid: comment_id
168
+ end
169
+
170
+ def community_get_all_comments(task_id)
171
+ api 'Community_GetAllComments', taskid: task_id
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,24 @@
1
+ module IVLE
2
+ module Consultation
3
+ def consultation_module_facilitators_with_slots(course_id, include_slots, slot_type)
4
+ api 'Consultation_ModuleFacilitatorsWithSlots', courseid: course_id, includeslots: include_slots, slottype: slot_type
5
+ end
6
+
7
+ def consultation_slots(lec_id, slot_type)
8
+ api 'ConsultationSlots', lecid: lec_id, slottype: slot_type
9
+ end
10
+
11
+ def consultation_signed_up_slots
12
+ api 'Consultation_SignedUpSlots'
13
+ end
14
+
15
+ def consultation_sign_up(consultation_id)
16
+ # WTF is this? Gosh, just pass in an additional format parameter!
17
+ api_post 'Consultation_SignUp_JSON', consultationid: consultation_id
18
+ end
19
+
20
+ def consultation_cancel_slot(consultation_id)
21
+ api_post 'Consultation_CancelSlot_JSON', consultationid: consultation_id
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,7 @@
1
+ module IVLE
2
+ module DeltaDatasets
3
+ def delta_module_timetable(last_modified, module_code=nil)
4
+ api 'Delta_ModuleTimeTable', lastmodified: last_modified, modulecode: module_code
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,47 @@
1
+ module IVLE
2
+ module Forum
3
+ def forums(course_id, duration=0, include_threads=true, title_only=false)
4
+ api 'Forums', courseid: course_id, duration: duration, includethreads: include_threads, titleonly: title_only
5
+ end
6
+
7
+ def forum(forum_id, duration=0, include_threads=true)
8
+ api 'Forum', forumid: forum_id, duration: duration, includethreads: include_threads
9
+ end
10
+
11
+ def forum_headings(forum_id, duration=0, include_threads=true)
12
+ api 'Announcement_AddLog', forumid: forum_id, duration: duration, includethreads: include_threads
13
+ end
14
+
15
+ def forum_heading_threads(heading_id, duration=0, get_main_topics_only=false)
16
+ api 'Forum_HeadingThreads', headingid: heading_id, duration: duration, getmaintopicsonly: get_main_topics_only
17
+ end
18
+
19
+ def forum_threads(forum_id, duration=0, get_sub_threads=true)
20
+ api 'Forum_Threads', threadid: thread_id, duration: duration, getsubthreads: get_sub_threads
21
+ end
22
+
23
+ def forum_thread(thread_id)
24
+ api 'Forum_Thread', threadid: thread_id
25
+ end
26
+
27
+ def forum_post_new_thread(heading_id, title, reply)
28
+ api_post 'Forum_PostNewThread_JSON', headingid: heading_id, title: title, reply: reply
29
+ end
30
+
31
+ def forum_reply_thread(thread_id, title, reply)
32
+ api_post 'Forum_ReplyThread_JSON', threadid: thread_id, title: title, reply: reply
33
+ end
34
+
35
+ def forum_thread_add_log(thread_id)
36
+ api_post 'Forum_Thread_AddLog_JSON', threadid: thread_id
37
+ end
38
+
39
+ def forum_sale_of_used_textbooks(duration=0, include_threads=true)
40
+ api 'Forum_SaleOfUsedTextbooks', includethreads: include_threads, duration: duration
41
+ end
42
+
43
+ def forum_student_feedback(duration=0, include_threads=true)
44
+ api 'Forum_StudentFeedback', includethreads: include_threads, duration: duration
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,7 @@
1
+ module IVLE
2
+ module Gradebook
3
+ def workbins(course_id)
4
+ api 'Gradebook_ViewItems', courseid: course_id
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module IVLE
2
+ module IVLENews
3
+ def public_news(title_only=false)
4
+ api 'PublicNews', titleonly: title_only
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ module IVLE
2
+ module LibraryEReserves
3
+ def lib_ereserves(course_id, title_only=false)
4
+ api 'LibEreserves', courseid: course_id, titleonly: title_only
5
+ end
6
+
7
+ def lib_ereserve_files(folder_id)
8
+ api 'LibEreserveFiles', folderid: folder_id
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ module IVLE
2
+ module Login
3
+ def validate(api_key, token)
4
+ api 'Validate', apikey: api_key, token: token
5
+ end
6
+
7
+ def username_get(api_key, token)
8
+ api 'UserName_Get', apikey: api_key, token: token
9
+ end
10
+
11
+ def userid_get(api_key, token)
12
+ api 'UserID_Get', apikey: api_key, token: token
13
+ end
14
+
15
+ def useremail_get(api_key, token)
16
+ api 'UserEmail_Get', apikey: api_key, token: token
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,53 @@
1
+ module IVLE
2
+ module IVLEModule
3
+ def modules(duration=0, include_all_info=true)
4
+ api 'Modules', duration: duration, includeallinfo: include_all_info
5
+ end
6
+
7
+ def modules_staff(duration=0, include_all_info=true)
8
+ api 'Modules_Staff', duration: duration, includeallinfo: include_all_info
9
+ end
10
+
11
+ def modules_student(duration=0, include_all_info=true)
12
+ api 'Modules_Student', duration: duration, includeallinfo: include_all_info
13
+ end
14
+
15
+ def module(course_id, title_only=false, duration=0, include_all_info=true)
16
+ api 'Module', courseid: course_id, titleonly: title_only, duration: duration, includeallinfo: include_all_info
17
+ end
18
+
19
+ def modules_search(search_parameters={}, duration=0, include_all_info=true)
20
+ # Verbatim from API docs: AuthToken, ModuleCode, ModuleTitle, LecturerName, Department, Semester, AcadYear, ModNameExact,
21
+ # LecNameExact, tag are optional fields. But at least one must be supplied.
22
+ api 'Modules_Search', search_parameters.merge({ duration: duration, includeallinfo: include_all_info })
23
+ end
24
+
25
+ def module_lecturers(course_id, duration=0)
26
+ api 'Module_Lecturers', courseid: course_id, duration: duration
27
+ end
28
+
29
+ def module_information(course_id, duration=0)
30
+ api 'Module_Information', courseid: course_id, duration: duration
31
+ end
32
+
33
+ def module_weblinks(course_id)
34
+ api 'Module_Weblinks', courseid: course_id
35
+ end
36
+
37
+ def module_reading_formatted(course_id, duration=0)
38
+ api 'Module_ReadingFormatted', courseid: course_id, duration: duration
39
+ end
40
+
41
+ def module_reading_unformatted(course_id, duration=0)
42
+ api 'Module_ReadingUnformatted', courseid: course_id, duration: duration
43
+ end
44
+
45
+ def module_reading(course_id, duration=0)
46
+ api 'Module_Reading', courseid: course_id, duration: duration
47
+ end
48
+
49
+ def modules_taken(student_id)
50
+ api 'Modules_Taken', studentid: student_id
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,62 @@
1
+ module IVLE
2
+ module MyOrganizer
3
+ def my_organizer_personal(start_date=nil, end_date=nil)
4
+ api 'MyOrganizer_Personal', startdate: start_date, enddate: end_date
5
+ end
6
+
7
+ def my_organizer_ivle(start_date=nil, end_date=nil)
8
+ api 'MyOrganizer_IVLE', startdate: start_date, enddate: end_date
9
+ end
10
+
11
+ def my_organizer_events(start_date=nil, end_date=nil)
12
+ api 'MyOrganizer_Events', startdate: start_date, enddate: end_date
13
+ end
14
+
15
+ def my_organizer_add_personal_event(event_title, venue, event_date_time, description, recur_type, str_days, recur_till_date)
16
+ api_post 'MyOrganizer_AddPersonalEvent_JSON', {
17
+ eventtitle: event_title,
18
+ venue: venue,
19
+ eventdatetime: event_date_time,
20
+ description: description,
21
+ recurtype: recur_type,
22
+ recurtilldate: recur_till_date
23
+ }
24
+ end
25
+
26
+ def my_organizer_update_personal_event(event_id, event_title, venue, event_date_time, description, recur_type, weekly_recur_every, str_days, recur_from_date, recur_till_date, update_recurrence_event)
27
+ api_post 'MyOrganizer_UpdatePersonalEvent_JSON', {
28
+ eventid: event_id,
29
+ eventtitle: event_title,
30
+ venue: venue,
31
+ eventdatetime: event_date_time,
32
+ description: description,
33
+ recurtype: recur_type,
34
+ weeklyrecurevery: weekly_recur_every,
35
+ strdays: str_days,
36
+ recurfromdate: recur_from_date,
37
+ recurtilldate: recur_till_date,
38
+ updaterecurrenceevent: update_recurrence_event
39
+ }
40
+ end
41
+
42
+ def my_organizer_delete_personal_event(event_id, delete_all_recurrence=true)
43
+ api_post 'MyOrganizer_DeletePersonalEvent_JSON', eventid: event_id, deleteallrecurrence: delete_all_recurrence
44
+ end
45
+
46
+ def my_organizer_special_days(start_date=nil, end_date=nil)
47
+ api 'MyOrganizer_SpecialDays', startdate: start_date, enddate: end_date
48
+ end
49
+
50
+ def my_organizer_acad_semester_info(acad_year, semester)
51
+ api 'MyOrganizer_AcadSemesterInfo', acadyear: acad_year, semester: semester
52
+ end
53
+
54
+ def timetable_student(acad_year, semester)
55
+ api 'Timetable_Student', acadyear: acad_year, semester: semester
56
+ end
57
+
58
+ def code_table_week_types
59
+ api 'CodeTable_WeekTypes'
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,13 @@
1
+ module IVLE
2
+ module OpenWebcastLectures
3
+ def open_webcasts(acad_year, semester, title_only=false, media_channel_id=nil)
4
+ params = { acadyear: acad_year, semester: semester, titleonly: title_only }
5
+ params.merge!({ mediachannelid: media_channel_id }) unless media_channel_id.nil?
6
+ api 'OpenWebcasts', params
7
+ end
8
+
9
+ def open_webcast_add_log(media_channel_id, media_channel_item_id)
10
+ api_post 'OpenWebcast_AddLog_JSON', mediachannelid: media_channel_id, mediachannelitemid: media_channel_item_id
11
+ end
12
+ end
13
+ end