bridge_blueprint 0.0.05 → 0.0.06
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 +4 -4
- data/.gitignore +1 -1
- data/Gemfile +3 -1
- data/Gemfile.lock +8 -8
- data/bridge_blueprint.gemspec +19 -17
- data/lib/bridge_blueprint/constants.rb +2 -0
- data/lib/bridge_blueprint/data_dump.rb +7 -9
- data/lib/bridge_blueprint/remote_data.rb +25 -13
- data/lib/bridge_blueprint/version.rb +3 -1
- data/lib/bridge_blueprint.rb +2 -0
- data/spec/bridge_blueprint/data_dump_spec.rb +8 -7
- data/spec/bridge_blueprint/remote_data_spec.rb +31 -10
- data/spec/fixtures/data_dumps_pending.json +9 -0
- data/spec/support/fake_bridge.rb +27 -8
- data/spec/test_helper.rb +4 -3
- metadata +38 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8a68f02757c7f40a292efbc3881a81da73d0700
|
4
|
+
data.tar.gz: 7ac7101287000b7426ea73bb80ddc2a4c069db33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c4496431f46b3182cbe48da9531f5a95645ae692a54fc22b3fbdea074cebafba82562ab0f00dc2f1c92a360f487fd68d1885215652e85261f970065811d9d93
|
7
|
+
data.tar.gz: 203ea3230d0dd1a513afca9624caa8fa94e26035356645439b57209a610b1b7b6d332ec3833917e0d0e136e2ca74fe75b52fbf9febb919d7b5d39ec698df7eff
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
bridge_blueprint (0.0.
|
4
|
+
bridge_blueprint (0.0.06)
|
5
5
|
bridge_api (~> 0.1.16)
|
6
6
|
open_uri_redirections (~> 0.2.1)
|
7
7
|
rubyzip (~> 1.2.1)
|
@@ -9,14 +9,14 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
activesupport (5.
|
12
|
+
activesupport (5.2.0)
|
13
13
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
14
|
-
i18n (
|
14
|
+
i18n (>= 0.7, < 2)
|
15
15
|
minitest (~> 5.1)
|
16
16
|
tzinfo (~> 1.1)
|
17
17
|
addressable (2.5.1)
|
18
18
|
public_suffix (~> 2.0, >= 2.0.2)
|
19
|
-
bridge_api (0.1.
|
19
|
+
bridge_api (0.1.19)
|
20
20
|
faraday (~> 0.9.0)
|
21
21
|
faraday_middleware (~> 0.9.0)
|
22
22
|
footrest (>= 0.5.1)
|
@@ -35,11 +35,11 @@ GEM
|
|
35
35
|
faraday (~> 0.9.0)
|
36
36
|
link_header (>= 0.0.7)
|
37
37
|
hashdiff (0.3.4)
|
38
|
-
i18n (0.
|
38
|
+
i18n (1.0.0)
|
39
39
|
concurrent-ruby (~> 1.0)
|
40
40
|
link_header (0.0.8)
|
41
41
|
method_source (0.8.2)
|
42
|
-
minitest (5.11.
|
42
|
+
minitest (5.11.3)
|
43
43
|
multipart-post (2.0.0)
|
44
44
|
open_uri_redirections (0.2.1)
|
45
45
|
pry (0.10.4)
|
@@ -68,7 +68,7 @@ GEM
|
|
68
68
|
slop (3.6.0)
|
69
69
|
thread_safe (0.3.6)
|
70
70
|
tilt (1.4.1)
|
71
|
-
tzinfo (1.2.
|
71
|
+
tzinfo (1.2.5)
|
72
72
|
thread_safe (~> 0.1)
|
73
73
|
webmock (2.3.2)
|
74
74
|
addressable (>= 2.3.6)
|
@@ -90,4 +90,4 @@ DEPENDENCIES
|
|
90
90
|
webmock (~> 2.3.1)
|
91
91
|
|
92
92
|
BUNDLED WITH
|
93
|
-
1.
|
93
|
+
1.16.1
|
data/bridge_blueprint.gemspec
CHANGED
@@ -1,33 +1,35 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
$LOAD_PATH.push File.expand_path('lib', __dir__)
|
3
5
|
require 'bridge_blueprint/version'
|
4
6
|
|
5
7
|
Gem::Specification.new do |gem|
|
6
|
-
gem.authors = [
|
7
|
-
gem.email = [
|
8
|
-
gem.description =
|
9
|
-
gem.summary =
|
10
|
-
gem.homepage =
|
8
|
+
gem.authors = ['Jay Shaffer']
|
9
|
+
gem.email = ['jshaffer@instructure.com']
|
10
|
+
gem.description = 'Tools for consuming bridge data dumps'
|
11
|
+
gem.summary = 'Bridge Blueprint'
|
12
|
+
gem.homepage = 'https://getbridge.com'
|
11
13
|
gem.license = 'MIT'
|
12
14
|
|
13
15
|
gem.files = `git ls-files`.split("\n")
|
14
|
-
gem.files += Dir.glob(
|
15
|
-
gem.files += Dir.glob(
|
16
|
-
gem.test_files = Dir.glob(
|
17
|
-
gem.name =
|
18
|
-
gem.require_paths = [
|
16
|
+
gem.files += Dir.glob('lib/**/*.rb')
|
17
|
+
gem.files += Dir.glob('spec/**/*')
|
18
|
+
gem.test_files = Dir.glob('spec/**/*')
|
19
|
+
gem.name = 'bridge_blueprint'
|
20
|
+
gem.require_paths = ['lib']
|
19
21
|
gem.version = BridgeBlueprint::VERSION
|
20
22
|
|
21
23
|
gem.add_runtime_dependency 'bridge_api', '~> 0.1.16'
|
22
24
|
gem.add_runtime_dependency 'open_uri_redirections', '~> 0.2.1'
|
23
25
|
gem.add_runtime_dependency 'rubyzip', '~> 1.2.1'
|
24
26
|
|
25
|
-
gem.add_development_dependency 'rake', '~> 0'
|
26
27
|
gem.add_development_dependency 'bundler', '~> 1.0', '>= 1.0.0'
|
27
|
-
gem.add_development_dependency '
|
28
|
-
gem.add_development_dependency 'webmock', '~>2.3.1'
|
28
|
+
gem.add_development_dependency 'byebug', '~> 8.2.2'
|
29
29
|
gem.add_development_dependency 'pry', '~> 0'
|
30
|
-
gem.add_development_dependency '
|
30
|
+
gem.add_development_dependency 'rake', '~> 0'
|
31
|
+
gem.add_development_dependency 'rspec', '~> 2.6'
|
31
32
|
gem.add_development_dependency 'sinatra', '~> 1.0'
|
32
|
-
gem.add_development_dependency '
|
33
|
+
gem.add_development_dependency 'tilt', '>= 1.3.4', '~> 1.3'
|
34
|
+
gem.add_development_dependency 'webmock', '~>2.3.1'
|
33
35
|
end
|
@@ -1,16 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'csv'
|
2
4
|
require 'zip'
|
3
5
|
|
4
6
|
module BridgeBlueprint
|
5
7
|
class DataDump
|
6
|
-
|
7
8
|
@path = nil
|
8
9
|
|
9
10
|
def initialize(path)
|
10
11
|
@path = path
|
11
|
-
unless File.
|
12
|
-
raise "File not found #{path}"
|
13
|
-
end
|
12
|
+
raise "File not found #{path}" unless File.exist?(path)
|
14
13
|
end
|
15
14
|
|
16
15
|
def each_row(name)
|
@@ -29,11 +28,10 @@ module BridgeBlueprint
|
|
29
28
|
file = nil
|
30
29
|
Zip::File.open(@path) do |zip_file|
|
31
30
|
zip_file.each do |entry|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
end
|
31
|
+
next unless name.to_s == entry.name
|
32
|
+
path = "#{dir}/#{entry.name}"
|
33
|
+
file = entry.extract(path)
|
34
|
+
break
|
37
35
|
end
|
38
36
|
end
|
39
37
|
if file
|
@@ -1,18 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'open-uri'
|
2
4
|
require 'open_uri_redirections'
|
3
5
|
require 'net/http'
|
4
6
|
require 'uri'
|
5
7
|
require 'base64'
|
6
|
-
require
|
8
|
+
require 'bridge_api'
|
7
9
|
|
8
10
|
module BridgeBlueprint
|
9
|
-
|
10
11
|
class RemoteData
|
11
|
-
|
12
12
|
USERS_CSV_NAME = 'users.csv'
|
13
13
|
CUSTOM_FIELD_CSV_NAME = 'custom_fields.csv'
|
14
14
|
GRANTS_CSV_NAME = 'grants.csv'
|
15
15
|
|
16
|
+
attr_accessor :client
|
17
|
+
|
16
18
|
@base_url = nil
|
17
19
|
@auth_header = nil
|
18
20
|
@file_url = nil
|
@@ -22,17 +24,28 @@ module BridgeBlueprint
|
|
22
24
|
|
23
25
|
def initialize(base_url, key, secret)
|
24
26
|
@base_url = base_url
|
25
|
-
@auth_header = 'Basic ' +
|
27
|
+
@auth_header = 'Basic ' + Base64.strict_encode64("#{key}:#{secret}")
|
26
28
|
@client = BridgeAPI::Client.new(prefix: base_url, api_key: key, api_secret: secret)
|
27
29
|
end
|
28
30
|
|
29
31
|
def start_data_report
|
30
|
-
|
32
|
+
raw_dumps = get_dumps
|
33
|
+
dumps = raw_dumps.members
|
34
|
+
unless dumps.empty?
|
35
|
+
dump = dumps.first
|
36
|
+
case dump['status']
|
37
|
+
when 'pending'
|
38
|
+
return
|
39
|
+
when 'complete'
|
40
|
+
return if Time.parse(dump['date']) > Time.now - 300
|
41
|
+
end
|
42
|
+
end
|
43
|
+
@client.create_data_dump
|
31
44
|
end
|
32
45
|
|
33
46
|
def status
|
34
47
|
dumps = get_dumps
|
35
|
-
if dumps.members.
|
48
|
+
if !dumps.members.empty?
|
36
49
|
return get_dumps.first['status']
|
37
50
|
else
|
38
51
|
return BridgeBlueprint::Constants::STATUS_NOT_FOUND
|
@@ -44,12 +57,12 @@ module BridgeBlueprint
|
|
44
57
|
uri = URI.parse(@base_url)
|
45
58
|
http = Net::HTTP.new(uri.host, uri.port)
|
46
59
|
http.read_timeout = 300
|
47
|
-
http.use_ssl = (uri.scheme ==
|
60
|
+
http.use_ssl = (uri.scheme == 'https')
|
48
61
|
req = Net::HTTP::Get.new("#{@base_url}/api/admin/data_dumps/download")
|
49
|
-
req.add_field(
|
62
|
+
req.add_field('Authorization', @auth_header)
|
50
63
|
res = http.request(req)
|
51
64
|
redirect_url = res['location']
|
52
|
-
File.open(@file_path, 'w') do |
|
65
|
+
File.open(@file_path, 'w') do |_file|
|
53
66
|
IO.copy_stream(open(redirect_url), @file_path)
|
54
67
|
end
|
55
68
|
end
|
@@ -62,11 +75,10 @@ module BridgeBlueprint
|
|
62
75
|
|
63
76
|
def get_headers
|
64
77
|
{
|
65
|
-
|
66
|
-
|
67
|
-
|
78
|
+
'Authorization' => @auth_header,
|
79
|
+
'Content-Type' => 'application/json',
|
80
|
+
'Accept' => 'application/json'
|
68
81
|
}
|
69
82
|
end
|
70
83
|
end
|
71
|
-
|
72
84
|
end
|
data/lib/bridge_blueprint.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
2
4
|
require 'zip'
|
3
5
|
|
4
6
|
describe BridgeBlueprint::DataDump do
|
5
|
-
|
6
7
|
before(:each) do
|
7
8
|
dir = Dir.mktmpdir
|
8
9
|
zip_folder_path = "#{File.dirname(__FILE__)}/../fixtures/bridge_zip"
|
9
10
|
input_filenames = [
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
'users.csv',
|
12
|
+
'custom_fields.csv'
|
13
|
+
]
|
13
14
|
|
14
15
|
@zipfile_name = "#{dir}/dump.zip"
|
15
16
|
|
@@ -24,11 +25,11 @@ describe BridgeBlueprint::DataDump do
|
|
24
25
|
it 'should parse a bridge data dump file' do
|
25
26
|
file = BridgeBlueprint::DataDump.new(@zipfile_name)
|
26
27
|
user_count = 0
|
27
|
-
file.each_row('users') do |
|
28
|
+
file.each_row('users') do |_user|
|
28
29
|
user_count += 1
|
29
30
|
end
|
30
31
|
custom_field_count = 0
|
31
|
-
file.each_row('custom_fields') do |
|
32
|
+
file.each_row('custom_fields') do |_custom_field|
|
32
33
|
custom_field_count += 1
|
33
34
|
end
|
34
35
|
expect(user_count).to(eq(2))
|
@@ -1,15 +1,16 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
2
4
|
require 'zip'
|
3
5
|
|
4
6
|
describe BridgeBlueprint::RemoteData do
|
5
|
-
|
6
7
|
before(:each) do
|
7
8
|
@dir = Dir.mktmpdir
|
8
9
|
zip_folder_path = "#{File.dirname(__FILE__)}/../fixtures/bridge_zip"
|
9
10
|
input_filenames = [
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
'users.csv',
|
12
|
+
'custom_fields.csv'
|
13
|
+
]
|
13
14
|
|
14
15
|
@zipfile_name = "#{@dir}/dump.zip"
|
15
16
|
|
@@ -19,14 +20,35 @@ describe BridgeBlueprint::RemoteData do
|
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
22
|
-
stub_request(:get,
|
23
|
-
|
24
|
-
|
23
|
+
stub_request(:get, 'https://example.com/fake-file-url')
|
24
|
+
.with(headers: { 'Accept' => '*/*', 'User-Agent' => 'Ruby' })
|
25
|
+
.to_return(status: 200, body: ->(_request) { File.open(@zipfile_name) }, headers: {})
|
25
26
|
end
|
26
27
|
|
27
28
|
describe 'completed' do
|
28
29
|
it 'should start a data dump' do
|
29
30
|
data = BridgeBlueprint::RemoteData.new('https://example.com', 'key', 'secret')
|
31
|
+
expect(data.client).to receive(:create_data_dump)
|
32
|
+
data.start_data_report
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe 'completed' do
|
37
|
+
it 'should not start a data dump if already pending' do
|
38
|
+
data = BridgeBlueprint::RemoteData.new('https://pending.com', 'key', 'secret')
|
39
|
+
expect(data.client).not_to receive(:create_data_dump)
|
40
|
+
data.start_data_report
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should not start a data dump if one has already completed in the past 5 minutes' do
|
44
|
+
data = BridgeBlueprint::RemoteData.new('https://recent.com', 'key', 'secret')
|
45
|
+
expect(data.client).not_to receive(:create_data_dump)
|
46
|
+
data.start_data_report
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should start a data dump if one hasnt already completed in the past 5 minutes' do
|
50
|
+
data = BridgeBlueprint::RemoteData.new('https://notrecent.com', 'key', 'secret')
|
51
|
+
expect(data.client).to receive(:create_data_dump)
|
30
52
|
data.start_data_report
|
31
53
|
end
|
32
54
|
end
|
@@ -43,8 +65,7 @@ describe BridgeBlueprint::RemoteData do
|
|
43
65
|
data = BridgeBlueprint::RemoteData.new('https://example.com', 'key', 'secret')
|
44
66
|
dir = Dir.mktmpdir
|
45
67
|
data.store_file("#{@dir}/data_dump.csv")
|
46
|
-
expect(File.
|
68
|
+
expect(File.exist?("#{@dir}/data_dump.csv")).to(eq(true))
|
47
69
|
end
|
48
70
|
end
|
49
|
-
|
50
71
|
end
|
data/spec/support/fake_bridge.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'sinatra/base'
|
2
4
|
require 'tilt'
|
3
5
|
|
4
6
|
class FakeBridge < Sinatra::Base
|
5
|
-
|
6
7
|
## Course Templates
|
7
8
|
|
8
9
|
get %r{/api/author/course_templates$} do
|
@@ -84,7 +85,7 @@ class FakeBridge < Sinatra::Base
|
|
84
85
|
get_json_data 200, 'enrollment.json'
|
85
86
|
end
|
86
87
|
|
87
|
-
#Custom Fields
|
88
|
+
# Custom Fields
|
88
89
|
|
89
90
|
get %r{/api/author/custom_fields} do
|
90
91
|
get_json_data 200, 'custom_fields.json'
|
@@ -109,7 +110,20 @@ class FakeBridge < Sinatra::Base
|
|
109
110
|
# Data Dumps
|
110
111
|
|
111
112
|
get %r{/api/admin/data_dumps$} do
|
112
|
-
|
113
|
+
host = URI.parse(url).host
|
114
|
+
if host == 'pending.com'
|
115
|
+
get_json_data 200, 'data_dumps_pending.json'
|
116
|
+
elsif host == 'notrecent.com'
|
117
|
+
data = JSON.parse(fixture('data_dumps.json').read)
|
118
|
+
data['data_dumps'][0]['date'] = (Time.now - 310).to_s
|
119
|
+
custom_response(data.to_json)
|
120
|
+
elsif host == 'recent.com'
|
121
|
+
data = JSON.parse(fixture('data_dumps.json').read)
|
122
|
+
data['data_dumps'][0]['date'] = (Time.now - 290).to_s
|
123
|
+
custom_response(data.to_json)
|
124
|
+
else
|
125
|
+
get_json_data 200, 'data_dumps.json'
|
126
|
+
end
|
113
127
|
end
|
114
128
|
|
115
129
|
post %r{/api/admin/data_dumps$} do
|
@@ -119,19 +133,24 @@ class FakeBridge < Sinatra::Base
|
|
119
133
|
get %r{/api/admin/data_dumps/download.*} do
|
120
134
|
content_type :json
|
121
135
|
status 200
|
122
|
-
headers[:location] =
|
136
|
+
headers[:location] = 'https://example.com/fake-file-url'
|
123
137
|
end
|
124
138
|
|
125
139
|
private
|
126
140
|
|
141
|
+
def custom_response(data)
|
142
|
+
content_type :json
|
143
|
+
status 200
|
144
|
+
data
|
145
|
+
end
|
146
|
+
|
127
147
|
def get_json_data(response_code, file_name)
|
128
148
|
content_type :json
|
129
149
|
status response_code
|
130
|
-
|
131
|
-
File.open(File.dirname(__FILE__) + '/../fixtures/' + file_name).read
|
132
|
-
else
|
150
|
+
if file_name.nil?
|
133
151
|
{}
|
152
|
+
else
|
153
|
+
File.open(File.dirname(__FILE__) + '/../fixtures/' + file_name).read
|
134
154
|
end
|
135
155
|
end
|
136
|
-
|
137
156
|
end
|
data/spec/test_helper.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'bridge_blueprint'
|
2
4
|
require 'rspec'
|
3
5
|
require 'webmock/rspec'
|
@@ -5,7 +7,7 @@ require 'json'
|
|
5
7
|
require 'pry'
|
6
8
|
|
7
9
|
RSpec.configure do |config|
|
8
|
-
Dir[
|
10
|
+
Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
|
9
11
|
|
10
12
|
config.before(:each) do
|
11
13
|
WebMock.disable_net_connect!
|
@@ -13,7 +15,6 @@ RSpec.configure do |config|
|
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
16
|
-
|
17
18
|
def fixture(*file)
|
18
|
-
File.new(File.join(File.expand_path(
|
19
|
+
File.new(File.join(File.expand_path('fixtures', __dir__), *file))
|
19
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bridge_blueprint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.06
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jay Shaffer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bridge_api
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.2.1
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: bundler
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,35 +73,35 @@ dependencies:
|
|
87
73
|
- !ruby/object:Gem::Version
|
88
74
|
version: 1.0.0
|
89
75
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
76
|
+
name: byebug
|
91
77
|
requirement: !ruby/object:Gem::Requirement
|
92
78
|
requirements:
|
93
79
|
- - "~>"
|
94
80
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
81
|
+
version: 8.2.2
|
96
82
|
type: :development
|
97
83
|
prerelease: false
|
98
84
|
version_requirements: !ruby/object:Gem::Requirement
|
99
85
|
requirements:
|
100
86
|
- - "~>"
|
101
87
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
88
|
+
version: 8.2.2
|
103
89
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
90
|
+
name: pry
|
105
91
|
requirement: !ruby/object:Gem::Requirement
|
106
92
|
requirements:
|
107
93
|
- - "~>"
|
108
94
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
95
|
+
version: '0'
|
110
96
|
type: :development
|
111
97
|
prerelease: false
|
112
98
|
version_requirements: !ruby/object:Gem::Requirement
|
113
99
|
requirements:
|
114
100
|
- - "~>"
|
115
101
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
102
|
+
version: '0'
|
117
103
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
104
|
+
name: rake
|
119
105
|
requirement: !ruby/object:Gem::Requirement
|
120
106
|
requirements:
|
121
107
|
- - "~>"
|
@@ -129,25 +115,19 @@ dependencies:
|
|
129
115
|
- !ruby/object:Gem::Version
|
130
116
|
version: '0'
|
131
117
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
118
|
+
name: rspec
|
133
119
|
requirement: !ruby/object:Gem::Requirement
|
134
120
|
requirements:
|
135
|
-
- - ">="
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: 1.3.4
|
138
121
|
- - "~>"
|
139
122
|
- !ruby/object:Gem::Version
|
140
|
-
version: '
|
123
|
+
version: '2.6'
|
141
124
|
type: :development
|
142
125
|
prerelease: false
|
143
126
|
version_requirements: !ruby/object:Gem::Requirement
|
144
127
|
requirements:
|
145
|
-
- - ">="
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
version: 1.3.4
|
148
128
|
- - "~>"
|
149
129
|
- !ruby/object:Gem::Version
|
150
|
-
version: '
|
130
|
+
version: '2.6'
|
151
131
|
- !ruby/object:Gem::Dependency
|
152
132
|
name: sinatra
|
153
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,19 +143,39 @@ dependencies:
|
|
163
143
|
- !ruby/object:Gem::Version
|
164
144
|
version: '1.0'
|
165
145
|
- !ruby/object:Gem::Dependency
|
166
|
-
name:
|
146
|
+
name: tilt
|
167
147
|
requirement: !ruby/object:Gem::Requirement
|
168
148
|
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: 1.3.4
|
169
152
|
- - "~>"
|
170
153
|
- !ruby/object:Gem::Version
|
171
|
-
version:
|
154
|
+
version: '1.3'
|
172
155
|
type: :development
|
173
156
|
prerelease: false
|
174
157
|
version_requirements: !ruby/object:Gem::Requirement
|
175
158
|
requirements:
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: 1.3.4
|
176
162
|
- - "~>"
|
177
163
|
- !ruby/object:Gem::Version
|
178
|
-
version:
|
164
|
+
version: '1.3'
|
165
|
+
- !ruby/object:Gem::Dependency
|
166
|
+
name: webmock
|
167
|
+
requirement: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - "~>"
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: 2.3.1
|
172
|
+
type: :development
|
173
|
+
prerelease: false
|
174
|
+
version_requirements: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - "~>"
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: 2.3.1
|
179
179
|
description: Tools for consuming bridge data dumps
|
180
180
|
email:
|
181
181
|
- jshaffer@instructure.com
|
@@ -199,6 +199,7 @@ files:
|
|
199
199
|
- spec/fixtures/bridge_zip/custom_fields.csv
|
200
200
|
- spec/fixtures/bridge_zip/users.csv
|
201
201
|
- spec/fixtures/data_dumps.json
|
202
|
+
- spec/fixtures/data_dumps_pending.json
|
202
203
|
- spec/support/fake_bridge.rb
|
203
204
|
- spec/test_helper.rb
|
204
205
|
homepage: https://getbridge.com
|
@@ -221,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
221
222
|
version: '0'
|
222
223
|
requirements: []
|
223
224
|
rubyforge_project:
|
224
|
-
rubygems_version: 2.
|
225
|
+
rubygems_version: 2.6.14
|
225
226
|
signing_key:
|
226
227
|
specification_version: 4
|
227
228
|
summary: Bridge Blueprint
|
@@ -231,6 +232,6 @@ test_files:
|
|
231
232
|
- spec/fixtures/bridge_zip/custom_fields.csv
|
232
233
|
- spec/fixtures/bridge_zip/users.csv
|
233
234
|
- spec/fixtures/data_dumps.json
|
235
|
+
- spec/fixtures/data_dumps_pending.json
|
234
236
|
- spec/support/fake_bridge.rb
|
235
237
|
- spec/test_helper.rb
|
236
|
-
has_rdoc:
|