bearcat 0.4 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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