bearcat 0.4 → 0.6
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/bearcat.gemspec +2 -2
- data/lib/bearcat/api_array.rb +18 -8
- data/lib/bearcat/client.rb +4 -2
- data/lib/bearcat/client/conferences.rb +15 -0
- data/lib/bearcat/client/groups.rb +11 -0
- data/lib/bearcat/version.rb +1 -1
- data/spec/bearcat/client/conferences_spec.rb +30 -0
- data/spec/bearcat/client/groups_spec.rb +16 -0
- data/spec/fixtures/course_conferences.json +50 -0
- data/spec/fixtures/course_groups.json +32 -0
- data/spec/fixtures/group_conferences.json +27 -0
- metadata +31 -33
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 577476a0554d30a24e945a9f576a28bdd549dfd9
|
4
|
+
data.tar.gz: 04b4a8ef7a9f2e5eb3f24f6316ff396a1480e7f9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c84fef3789027b04c72179f1b561022d95cf09199f031e57692f8bd9bd93fd9db8ad30bb56d7bb776a548502e074437ce7ef767fd85c2cd60727ce36a46bc297
|
7
|
+
data.tar.gz: 7131a975cf8ec0e5b628adf6f6423adf4520f2093f5aff1ca67f106d7ee0753e5b4f3d034088781e37d37b59d06af2c35d2a737fbabaae9dad6186d01dd57e81
|
data/bearcat.gemspec
CHANGED
@@ -4,8 +4,8 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'bearcat/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
|
-
gem.authors = ["Nathan Mills"]
|
8
|
-
gem.email = ["nathanm@instructure.com"]
|
7
|
+
gem.authors = ["Nathan Mills, Jake Sorce"]
|
8
|
+
gem.email = ["nathanm@instructure.com, jake@instructure.com"]
|
9
9
|
gem.description = %q{Ruby interface for interacting with the canvas API}
|
10
10
|
gem.summary = %q{Canvas API}
|
11
11
|
|
data/lib/bearcat/api_array.rb
CHANGED
@@ -5,25 +5,28 @@ module Bearcat
|
|
5
5
|
attr_reader :status, :headers, :members
|
6
6
|
|
7
7
|
def self.process_response(response, api_client)
|
8
|
-
if response.
|
9
|
-
ApiArray.new
|
8
|
+
if response.is_a?(Array)
|
9
|
+
ApiArray.new(response, api_client)
|
10
|
+
elsif key = array_key(response)
|
11
|
+
ApiArray.new(response, api_client, key)
|
10
12
|
else
|
11
13
|
response.body
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
15
|
-
def initialize(response, api_client)
|
17
|
+
def initialize(response, api_client, array_key = nil)
|
16
18
|
@api_client = api_client
|
17
19
|
case response.status
|
18
20
|
when 200..206
|
19
21
|
if response.body.is_a?(Array)
|
20
22
|
@members = response.body
|
21
|
-
|
22
|
-
@
|
23
|
-
@method = response.env[:method]
|
24
|
-
init_pages(@headers['Link'])
|
23
|
+
elsif response.body.is_a?(Hash) && array_key
|
24
|
+
@members = response.body[array_key]
|
25
25
|
end
|
26
|
-
|
26
|
+
@status = response.status
|
27
|
+
@headers = response.headers
|
28
|
+
@method = response.env[:method]
|
29
|
+
init_pages(@headers['Link'])
|
27
30
|
end
|
28
31
|
end
|
29
32
|
|
@@ -116,5 +119,12 @@ module Bearcat
|
|
116
119
|
end
|
117
120
|
end
|
118
121
|
|
122
|
+
#TODO: This is a quick fix for JSONAPI responses if we need to do this for anything else we need to do this a better way
|
123
|
+
def self.array_key(response)
|
124
|
+
if response.env[:method] == :get && response.env[:url].path.match(/.*\/(courses||groups)\/\d+\/conferences/)
|
125
|
+
'conferences'
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
119
129
|
end
|
120
130
|
end
|
data/lib/bearcat/client.rb
CHANGED
@@ -7,6 +7,8 @@ require 'bearcat/client/outcome_groups'
|
|
7
7
|
require 'bearcat/client/outcomes'
|
8
8
|
require 'bearcat/client/sections'
|
9
9
|
require 'bearcat/client/o_auth2'
|
10
|
+
require 'bearcat/client/groups'
|
11
|
+
require 'bearcat/client/conferences'
|
10
12
|
|
11
13
|
module Bearcat
|
12
14
|
class Client < Footrest::Client
|
@@ -18,14 +20,14 @@ module Bearcat
|
|
18
20
|
include Outcomes
|
19
21
|
include Sections
|
20
22
|
include OAuth2
|
23
|
+
include Groups
|
24
|
+
include Conferences
|
21
25
|
|
22
26
|
|
23
27
|
# Override Footrest request for ApiArray support
|
24
28
|
def request(method, &block)
|
25
29
|
ApiArray::process_response(connection.send(method, &block), self)
|
26
30
|
end
|
27
|
-
|
28
|
-
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Bearcat
|
2
|
+
class Client < Footrest::Client
|
3
|
+
module Conferences
|
4
|
+
|
5
|
+
def course_conferences(course)
|
6
|
+
get("/api/v1/courses/#{course.to_s}/conferences")
|
7
|
+
end
|
8
|
+
|
9
|
+
def group_conferences(section)
|
10
|
+
get("/api/v1/groups/#{section.to_s}/conferences")
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/bearcat/version.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Bearcat::Client::Conferences do
|
4
|
+
before do
|
5
|
+
@client = Bearcat::Client.new(prefix: "http://canvas.instructure.com", token: "test_token")
|
6
|
+
end
|
7
|
+
|
8
|
+
it "lists course conferences" do
|
9
|
+
stub_get(@client, "/api/v1/courses/3/conferences").to_return(json_response("course_conferences.json"))
|
10
|
+
course_conferences = @client.course_conferences(3)
|
11
|
+
course_conferences.count.should == 2
|
12
|
+
first_conference = course_conferences.first
|
13
|
+
last_conference = course_conferences.last
|
14
|
+
first_conference['title'].should == 'Conference 1'
|
15
|
+
last_conference['title'].should == 'Conference 2'
|
16
|
+
first_conference['user_settings']['scheduled_date'].should == '2014-01-18T07:00:00Z'
|
17
|
+
last_conference['id'].should == 17
|
18
|
+
end
|
19
|
+
|
20
|
+
it "lists group conferences" do
|
21
|
+
stub_get(@client, "/api/v1/groups/1/conferences").to_return(json_response("group_conferences.json"))
|
22
|
+
group_conferences = @client.group_conferences(1)
|
23
|
+
group_conferences.count.should == 1
|
24
|
+
conference = group_conferences.first
|
25
|
+
conference['title'].should == 'Conference group 1'
|
26
|
+
conference['user_settings']['scheduled_date'].should == '2014-01-07T07:00:00Z'
|
27
|
+
conference['id'].should == 19
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Bearcat::Client::Groups do
|
4
|
+
before do
|
5
|
+
@client = Bearcat::Client.new(prefix: "http://canvas.instructure.com", token: "test_token")
|
6
|
+
end
|
7
|
+
|
8
|
+
it "returns course groups" do
|
9
|
+
stub_get(@client, "/api/v1/courses/1/groups").to_return(json_response("course_groups.json"))
|
10
|
+
groups = @client.course_groups(1)
|
11
|
+
groups.count.should == 2
|
12
|
+
groups.first['name'].should == 'group 1'
|
13
|
+
groups.last['id'].should == 4
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
{
|
2
|
+
"conferences":[
|
3
|
+
{
|
4
|
+
"conference_type":"CiscoWebex",
|
5
|
+
"description":"test",
|
6
|
+
"duration":60,
|
7
|
+
"ended_at":null,
|
8
|
+
"id":18,
|
9
|
+
"started_at":null,
|
10
|
+
"title":"Conference 1",
|
11
|
+
"has_advanced_settings":false,
|
12
|
+
"long_running":false,
|
13
|
+
"user_settings":{
|
14
|
+
"scheduled_date":"2014-01-18T07:00:00Z",
|
15
|
+
"external_emails":""
|
16
|
+
},
|
17
|
+
"recordings":[
|
18
|
+
|
19
|
+
],
|
20
|
+
"url":null,
|
21
|
+
"join_url":null,
|
22
|
+
"users":[
|
23
|
+
1
|
24
|
+
]
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"conference_type":"CiscoWebex",
|
28
|
+
"description":"test",
|
29
|
+
"duration":60,
|
30
|
+
"ended_at":null,
|
31
|
+
"id":17,
|
32
|
+
"started_at":null,
|
33
|
+
"title":"Conference 2",
|
34
|
+
"has_advanced_settings":false,
|
35
|
+
"long_running":false,
|
36
|
+
"user_settings":{
|
37
|
+
"scheduled_date":"2014-01-07T07:00:00Z",
|
38
|
+
"external_emails":""
|
39
|
+
},
|
40
|
+
"recordings":[
|
41
|
+
|
42
|
+
],
|
43
|
+
"url":null,
|
44
|
+
"join_url":null,
|
45
|
+
"users":[
|
46
|
+
1
|
47
|
+
]
|
48
|
+
}
|
49
|
+
]
|
50
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"description": null,
|
4
|
+
"group_category_id": 2,
|
5
|
+
"id": 3,
|
6
|
+
"is_public": false,
|
7
|
+
"join_level": "invitation_only",
|
8
|
+
"name": "group 1",
|
9
|
+
"members_count": 0,
|
10
|
+
"storage_quota_mb": 50,
|
11
|
+
"context_type": "Course",
|
12
|
+
"course_id": 1,
|
13
|
+
"followed_by_user": false,
|
14
|
+
"avatar_url": null,
|
15
|
+
"role": null
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"description": null,
|
19
|
+
"group_category_id": 2,
|
20
|
+
"id": 4,
|
21
|
+
"is_public": false,
|
22
|
+
"join_level": "invitation_only",
|
23
|
+
"name": "group 2",
|
24
|
+
"members_count": 0,
|
25
|
+
"storage_quota_mb": 50,
|
26
|
+
"context_type": "Course",
|
27
|
+
"course_id": 1,
|
28
|
+
"followed_by_user": false,
|
29
|
+
"avatar_url": null,
|
30
|
+
"role": null
|
31
|
+
}
|
32
|
+
]
|
@@ -0,0 +1,27 @@
|
|
1
|
+
{
|
2
|
+
"conferences": [
|
3
|
+
{
|
4
|
+
"conference_type": "CiscoWebex",
|
5
|
+
"description": "test",
|
6
|
+
"duration": 60,
|
7
|
+
"ended_at": null,
|
8
|
+
"id": 19,
|
9
|
+
"started_at": null,
|
10
|
+
"title": "Conference group 1",
|
11
|
+
"has_advanced_settings": false,
|
12
|
+
"long_running": false,
|
13
|
+
"user_settings": {
|
14
|
+
"scheduled_date": "2014-01-07T07:00:00Z",
|
15
|
+
"external_emails": ""
|
16
|
+
},
|
17
|
+
"recordings": [
|
18
|
+
|
19
|
+
],
|
20
|
+
"url": null,
|
21
|
+
"join_url": null,
|
22
|
+
"users": [
|
23
|
+
1
|
24
|
+
]
|
25
|
+
}
|
26
|
+
]
|
27
|
+
}
|
metadata
CHANGED
@@ -1,52 +1,46 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bearcat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
5
|
-
prerelease:
|
4
|
+
version: '0.6'
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
|
-
- Nathan Mills
|
7
|
+
- Nathan Mills, Jake Sorce
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-01-08 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: bundler
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 1.0.0
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 1.0.0
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,54 +55,48 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: webmock
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: debugger
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: footrest
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: 0.2.2
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: 0.2.2
|
110
97
|
description: Ruby interface for interacting with the canvas API
|
111
98
|
email:
|
112
|
-
- nathanm@instructure.com
|
99
|
+
- nathanm@instructure.com, jake@instructure.com
|
113
100
|
executables: []
|
114
101
|
extensions: []
|
115
102
|
extra_rdoc_files: []
|
@@ -118,8 +105,10 @@ files:
|
|
118
105
|
- bearcat.gemspec
|
119
106
|
- lib/bearcat/api_array.rb
|
120
107
|
- lib/bearcat/client/assignments.rb
|
108
|
+
- lib/bearcat/client/conferences.rb
|
121
109
|
- lib/bearcat/client/courses.rb
|
122
110
|
- lib/bearcat/client/enrollments.rb
|
111
|
+
- lib/bearcat/client/groups.rb
|
123
112
|
- lib/bearcat/client/o_auth2.rb
|
124
113
|
- lib/bearcat/client/outcome_groups.rb
|
125
114
|
- lib/bearcat/client/outcomes.rb
|
@@ -128,8 +117,10 @@ files:
|
|
128
117
|
- lib/bearcat/version.rb
|
129
118
|
- lib/bearcat.rb
|
130
119
|
- spec/bearcat/client/assignments_spec.rb
|
120
|
+
- spec/bearcat/client/conferences_spec.rb
|
131
121
|
- spec/bearcat/client/courses_spec.rb
|
132
122
|
- spec/bearcat/client/enrollments_spec.rb
|
123
|
+
- spec/bearcat/client/groups_spec.rb
|
133
124
|
- spec/bearcat/client/o_auth2_spec.rb
|
134
125
|
- spec/bearcat/client/outcome_groups_spec.rb
|
135
126
|
- spec/bearcat/client/outcomes_spec.rb
|
@@ -140,7 +131,9 @@ files:
|
|
140
131
|
- spec/fixtures/assignments.json
|
141
132
|
- spec/fixtures/conclude_enrollment.json
|
142
133
|
- spec/fixtures/course.json
|
134
|
+
- spec/fixtures/course_conferences.json
|
143
135
|
- spec/fixtures/course_enrollments.json
|
136
|
+
- spec/fixtures/course_groups.json
|
144
137
|
- spec/fixtures/course_sections.json
|
145
138
|
- spec/fixtures/course_students.json
|
146
139
|
- spec/fixtures/create_outcome_in_group.json
|
@@ -149,6 +142,7 @@ files:
|
|
149
142
|
- spec/fixtures/created_course.json
|
150
143
|
- spec/fixtures/delete_section.json
|
151
144
|
- spec/fixtures/enroll_student.json
|
145
|
+
- spec/fixtures/group_conferences.json
|
152
146
|
- spec/fixtures/link_unlink_outcome.json
|
153
147
|
- spec/fixtures/outcome_group_import.json
|
154
148
|
- spec/fixtures/outcome_groups.json
|
@@ -165,32 +159,33 @@ files:
|
|
165
159
|
- spec/helper.rb
|
166
160
|
homepage:
|
167
161
|
licenses: []
|
162
|
+
metadata: {}
|
168
163
|
post_install_message:
|
169
164
|
rdoc_options: []
|
170
165
|
require_paths:
|
171
166
|
- lib
|
172
167
|
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
-
none: false
|
174
168
|
requirements:
|
175
|
-
- -
|
169
|
+
- - '>='
|
176
170
|
- !ruby/object:Gem::Version
|
177
171
|
version: '0'
|
178
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
|
-
none: false
|
180
173
|
requirements:
|
181
|
-
- -
|
174
|
+
- - '>='
|
182
175
|
- !ruby/object:Gem::Version
|
183
176
|
version: '0'
|
184
177
|
requirements: []
|
185
178
|
rubyforge_project:
|
186
|
-
rubygems_version:
|
179
|
+
rubygems_version: 2.0.3
|
187
180
|
signing_key:
|
188
|
-
specification_version:
|
181
|
+
specification_version: 4
|
189
182
|
summary: Canvas API
|
190
183
|
test_files:
|
191
184
|
- spec/bearcat/client/assignments_spec.rb
|
185
|
+
- spec/bearcat/client/conferences_spec.rb
|
192
186
|
- spec/bearcat/client/courses_spec.rb
|
193
187
|
- spec/bearcat/client/enrollments_spec.rb
|
188
|
+
- spec/bearcat/client/groups_spec.rb
|
194
189
|
- spec/bearcat/client/o_auth2_spec.rb
|
195
190
|
- spec/bearcat/client/outcome_groups_spec.rb
|
196
191
|
- spec/bearcat/client/outcomes_spec.rb
|
@@ -201,7 +196,9 @@ test_files:
|
|
201
196
|
- spec/fixtures/assignments.json
|
202
197
|
- spec/fixtures/conclude_enrollment.json
|
203
198
|
- spec/fixtures/course.json
|
199
|
+
- spec/fixtures/course_conferences.json
|
204
200
|
- spec/fixtures/course_enrollments.json
|
201
|
+
- spec/fixtures/course_groups.json
|
205
202
|
- spec/fixtures/course_sections.json
|
206
203
|
- spec/fixtures/course_students.json
|
207
204
|
- spec/fixtures/create_outcome_in_group.json
|
@@ -210,6 +207,7 @@ test_files:
|
|
210
207
|
- spec/fixtures/created_course.json
|
211
208
|
- spec/fixtures/delete_section.json
|
212
209
|
- spec/fixtures/enroll_student.json
|
210
|
+
- spec/fixtures/group_conferences.json
|
213
211
|
- spec/fixtures/link_unlink_outcome.json
|
214
212
|
- spec/fixtures/outcome_group_import.json
|
215
213
|
- spec/fixtures/outcome_groups.json
|