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.
@@ -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
@@ -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
 
@@ -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.body.is_a? Array
9
- ApiArray.new response, api_client
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
- @status = response.status
22
- @headers = response.headers
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
- else
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
@@ -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
@@ -0,0 +1,11 @@
1
+ module Bearcat
2
+ class Client < Footrest::Client
3
+ module Groups
4
+
5
+ def course_groups(course)
6
+ get("/api/v1/courses/#{course.to_s}/groups")
7
+ end
8
+
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Bearcat
2
- VERSION = '0.4' unless defined?(Bearcat::VERSION)
2
+ VERSION = '0.6' unless defined?(Bearcat::VERSION)
3
3
  end
@@ -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.4'
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: 2013-12-02 00:00:00.000000000 Z
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: 1.8.23
179
+ rubygems_version: 2.0.3
187
180
  signing_key:
188
- specification_version: 3
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