bright 1.3 → 2.0

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.
@@ -1,10 +1,10 @@
1
- require 'base64'
2
- require 'json'
1
+ require "base64"
2
+ require "json"
3
3
 
4
4
  module Bright
5
5
  module SisApi
6
6
  class TSIS < Base
7
- DATE_FORMAT = '%m/%d/%Y'
7
+ DATE_FORMAT = "%m/%d/%Y"
8
8
 
9
9
  @@description = "Connects to the TIES API for accessing TIES TSIS student information"
10
10
  @@doc_url = "#unkown"
@@ -22,54 +22,54 @@ module Bright
22
22
  end
23
23
 
24
24
  def get_student_by_api_id(api_id, params = {})
25
- self.get_student(params.merge({:sis_student_id => api_id}))
25
+ get_student(params.merge({sis_student_id: api_id}))
26
26
  end
27
27
 
28
28
  def get_student(params = {}, options = {})
29
- params = self.apply_options(params, options.merge({:per_page => 1}))
29
+ params = apply_options(params, options.merge({per_page: 1}))
30
30
 
31
31
  # Students only gets you students that are enrolled in a school for a given school year.
32
- students_response_hash = self.request(:get, 'Students/', self.map_search_params(params))
32
+ students_response_hash = request(:get, "Students/", map_search_params(params))
33
33
  found_student = nil
34
34
  if students_response_hash["Return"] and students_response_hash["Return"].first
35
- found_student = Student.new(convert_to_student_data(students_response_hash["Return"].first))
35
+ found_student = Student.new(convert_to_student_data(students_response_hash["Return"].first))
36
36
  end
37
37
  if found_student.nil?
38
38
  # Students/Family can get you students that are not enrolled in a school for a given school year.
39
- family_response_hash = self.request(:get, 'Students/Family/', self.map_search_params(params))
39
+ family_response_hash = request(:get, "Students/Family/", map_search_params(params))
40
40
  if family_response_hash["Return"] and family_response_hash["Return"].first
41
- found_student = Student.new(convert_to_student_data(family_response_hash["Return"].first))
41
+ found_student = Student.new(convert_to_student_data(family_response_hash["Return"].first))
42
42
  end
43
43
  end
44
44
  found_student
45
45
  end
46
46
 
47
47
  def get_students(params = {}, options = {})
48
- params = self.apply_options(params, options)
48
+ params = apply_options(params, options)
49
49
 
50
- if params[:schoolyear]
50
+ response_hash = if params[:schoolyear]
51
51
  # Students only gets you students that are enrolled in a school for a given school year.
52
- response_hash = self.request(:get, self.apply_page_to_url('Students/', options[:page]), self.map_search_params(params))
52
+ request(:get, apply_page_to_url("Students/", options[:page]), map_search_params(params))
53
53
  else
54
54
  # Students/Family can get you students that are not enrolled in a school for a given school year.
55
- response_hash = self.request(:get, self.apply_page_to_url('Students/Family/', options[:page]), self.map_search_params(params))
55
+ request(:get, apply_page_to_url("Students/Family/", options[:page]), map_search_params(params))
56
56
  end
57
57
 
58
- students = response_hash["Return"].collect{|hsh| Student.new(convert_to_student_data(hsh))}
58
+ students = response_hash["Return"].collect { |hsh| Student.new(convert_to_student_data(hsh)) }
59
59
  total_results = response_hash["TotalCount"].to_i
60
60
 
61
61
  if options[:wrap_in_collection] != false
62
62
  api = self
63
63
  load_more_call = proc { |page|
64
64
  # pages start at one, so add a page here
65
- api.get_students(params, {:wrap_in_collection => false, :page => (page + 1)})
65
+ api.get_students(params, {wrap_in_collection: false, page: (page + 1)})
66
66
  }
67
67
 
68
68
  ResponseCollection.new({
69
- :seed_page => students,
70
- :total => total_results,
71
- :per_page => options[:per_page],
72
- :load_more_call => load_more_call
69
+ seed_page: students,
70
+ total: total_results,
71
+ per_page: options[:per_page],
72
+ load_more_call: load_more_call
73
73
  })
74
74
  else
75
75
  students
@@ -85,26 +85,26 @@ module Bright
85
85
  end
86
86
 
87
87
  def get_schools(params = {}, options = {})
88
- params = self.apply_options(params, options)
88
+ params = apply_options(params, options)
89
89
 
90
90
  # schools api end point takes page # in the url itself for some reason
91
- schools_response_hash = self.request(:get, self.apply_page_to_url('Schools/', options[:page]), params)
91
+ schools_response_hash = request(:get, apply_page_to_url("Schools/", options[:page]), params)
92
92
 
93
- schools = schools_response_hash["Return"].collect{|hsh| School.new(convert_to_school_data(hsh))}
93
+ schools = schools_response_hash["Return"].collect { |hsh| School.new(convert_to_school_data(hsh)) }
94
94
  total_results = schools_response_hash["TotalCount"].to_i
95
95
 
96
96
  if options[:wrap_in_collection] != false
97
97
  api = self
98
98
  load_more_call = proc { |page|
99
99
  # pages start at one, so add a page here
100
- api.get_schools(params, {:wrap_in_collection => false, :page => (page + 1)})
100
+ api.get_schools(params, {wrap_in_collection: false, page: (page + 1)})
101
101
  }
102
102
 
103
103
  ResponseCollection.new({
104
- :seed_page => schools,
105
- :total => total_results,
106
- :per_page => options[:per_page],
107
- :load_more_call => load_more_call
104
+ seed_page: schools,
105
+ total: total_results,
106
+ per_page: options[:per_page],
107
+ load_more_call: load_more_call
108
108
  })
109
109
  else
110
110
  schools
@@ -112,9 +112,9 @@ module Bright
112
112
  end
113
113
 
114
114
  def request(method, path, params = {})
115
- uri = "#{self.connection_options[:uri]}/#{path}"
115
+ uri = "#{connection_options[:uri]}/#{path}"
116
116
  body = nil
117
- query = URI.encode(params.map{|k,v| "#{k}=#{v}"}.join("&"))
117
+ query = URI.encode(params.map { |k, v| "#{k}=#{v}" }.join("&"))
118
118
  if method == :get
119
119
  uri += "?#{query}"
120
120
  else
@@ -123,7 +123,7 @@ module Bright
123
123
 
124
124
  response = connection_retry_wrapper {
125
125
  connection = Bright::Connection.new(uri)
126
- headers = self.headers_for_auth
126
+ headers = headers_for_auth
127
127
  connection.request(method, body, headers)
128
128
  }
129
129
 
@@ -142,15 +142,15 @@ module Bright
142
142
  params["studentname"] ||= "#{params.delete(:last_name)}, #{params.delete(:first_name)} #{params.delete(:middle_name)}".strip
143
143
  params["studentids"] = params.delete(:sis_student_id)
144
144
 
145
- params = Hash[params.collect do |k,v|
145
+ params = params.collect do |k, v|
146
146
  if v.is_a?(Array)
147
147
  v = v.join(",")
148
148
  end
149
149
  k = k.to_s.gsub(/[^A-Za-z]/, "").downcase
150
- [k,v]
151
- end]
150
+ [k, v]
151
+ end.to_h
152
152
 
153
- params.reject{|k,v| v.respond_to?(:empty?) ? v.empty? : v.nil?}
153
+ params.reject { |k, v| v.respond_to?(:empty?) ? v.empty? : v.nil? }
154
154
  end
155
155
 
156
156
  def convert_to_student_data(attrs)
@@ -160,23 +160,23 @@ module Bright
160
160
  if split_name[1]
161
161
  split_first_name = split_name[1].to_s.strip.split(" ")
162
162
  if split_first_name.size > 1
163
- catt[:first_name] = split_first_name[0...-1].join(" ").strip
164
- catt[:middle_name] = split_first_name[-1].strip
163
+ catt[:first_name] = split_first_name[0...-1].join(" ").strip
164
+ catt[:middle_name] = split_first_name[-1].strip
165
165
  else
166
166
  catt[:first_name] = split_first_name.first.strip
167
167
  end
168
168
  end
169
- catt[:last_name] = split_name[0].to_s.strip
169
+ catt[:last_name] = split_name[0].to_s.strip
170
170
  else
171
- catt[:first_name] = attrs["FirstName"].strip
172
- catt[:middle_name] = attrs["MiddleName"].strip
173
- catt[:last_name] = (attrs["LastName"] || attrs["SurName"]).strip
171
+ catt[:first_name] = attrs["FirstName"].strip
172
+ catt[:middle_name] = attrs["MiddleName"].strip
173
+ catt[:last_name] = (attrs["LastName"] || attrs["SurName"]).strip
174
174
  end
175
175
 
176
176
  catt[:state_student_id] = (attrs["StateId"] || attrs["StudentStateId"]).to_s
177
- catt[:sis_student_id] = attrs["StudentId"].to_s
178
- catt[:api_id] = attrs["StudentId"].to_s
179
- catt[:homeless_code] = attrs["HomelessCode"]
177
+ catt[:sis_student_id] = attrs["StudentId"].to_s
178
+ catt[:api_id] = attrs["StudentId"].to_s
179
+ catt[:homeless_code] = attrs["HomelessCode"]
180
180
 
181
181
  # "Economic\":{\"Description\":\"\",\"EconomicIndicatorId\":\"0\"}
182
182
 
@@ -189,9 +189,9 @@ module Bright
189
189
  end
190
190
  end
191
191
 
192
- catt[:addresses] = [self.convert_to_address_data(attrs["Address"])] if attrs["Address"]
192
+ catt[:addresses] = [convert_to_address_data(attrs["Address"])] if attrs["Address"]
193
193
 
194
- catt.reject{|k,v| v.respond_to?(:empty?) ? v.empty? : v.nil?}
194
+ catt.reject { |k, v| v.respond_to?(:empty?) ? v.empty? : v.nil? }
195
195
  end
196
196
 
197
197
  def convert_to_address_data(attrs)
@@ -207,7 +207,7 @@ module Bright
207
207
  cattrs[:postal_code] = attrs["Zip"]
208
208
  cattrs[:type] = attrs["Type"].to_s.downcase
209
209
 
210
- cattrs.reject{|k,v| v.respond_to?(:empty?) ? v.empty? : v.nil?}
210
+ cattrs.reject { |k, v| v.respond_to?(:empty?) ? v.empty? : v.nil? }
211
211
  end
212
212
 
213
213
  def convert_to_school_data(attrs)
@@ -217,7 +217,7 @@ module Bright
217
217
  cattrs[:api_id] = cattrs[:number] = attrs["SchoolId"]
218
218
  cattrs[:address] = convert_to_address_data(attrs)
219
219
 
220
- cattrs.reject{|k,v| v.respond_to?(:empty?) ? v.empty? : v.nil?}
220
+ cattrs.reject { |k, v| v.respond_to?(:empty?) ? v.empty? : v.nil? }
221
221
  end
222
222
 
223
223
  def apply_options(params, options)
@@ -228,21 +228,21 @@ module Bright
228
228
  end
229
229
 
230
230
  def apply_page_to_url(url, page)
231
- "#{url}#{url[-1] == "/" ? "" : "/"}#{page}"
231
+ "#{url}#{(url[-1] == "/") ? "" : "/"}#{page}"
232
232
  end
233
233
 
234
234
  def headers_for_auth(uri)
235
235
  t = Time.now.utc.httpdate
236
236
  string_to_sign = "GET\n#{t}\n#{uri}"
237
237
 
238
- signature = Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha1'), self.connection_options[:secret], string_to_sign)).strip
239
- authorization = "TIES" + " " + self.connection_options[:key] + ":" + signature
238
+ signature = Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new("sha1"), connection_options[:secret], string_to_sign)).strip
239
+ authorization = "TIES" + " " + connection_options[:key] + ":" + signature
240
240
 
241
241
  {
242
- 'Authorization' => authorization,
243
- 'DistrictNumber' => self.connection_options[:district_id],
244
- 'ties-date' => t,
245
- 'Content-Type' => "application/json"
242
+ "Authorization" => authorization,
243
+ "DistrictNumber" => connection_options[:district_id],
244
+ "ties-date" => t,
245
+ "Content-Type" => "application/json"
246
246
  }
247
247
  end
248
248
  end
@@ -1,13 +1,13 @@
1
- require 'securerandom'
1
+ require "securerandom"
2
2
 
3
3
  module Bright
4
4
  class Student < Model
5
5
  @attribute_names = [:client_id, :api_id, :first_name, :middle_name, :last_name, :nick_name,
6
- :birth_date, :grade, :grade_school_year, :projected_graduation_year, :sex,
7
- :hispanic_ethnicity, :race, :image, :primary_language, :secondary_language,
8
- :homeless_code, :frl_status, :sis_student_id,
9
- :state_student_id, :last_modified]
10
- attr_accessor *@attribute_names
6
+ :birth_date, :grade, :grade_school_year, :projected_graduation_year, :sex,
7
+ :hispanic_ethnicity, :race, :image, :primary_language, :secondary_language,
8
+ :homeless_code, :frl_status, :sis_student_id,
9
+ :state_student_id, :last_modified]
10
+ attr_accessor(*@attribute_names)
11
11
 
12
12
  def self.attribute_names
13
13
  @attribute_names
@@ -19,27 +19,26 @@ module Bright
19
19
  def initialize(*args)
20
20
  super
21
21
  self.client_id ||= SecureRandom.uuid
22
- self
23
22
  end
24
23
 
25
24
  def name
26
- "#{self.first_name} #{self.middle_name} #{self.last_name}".gsub(/\s+/, " ").strip
25
+ "#{first_name} #{middle_name} #{last_name}".gsub(/\s+/, " ").strip
27
26
  end
28
27
 
29
28
  def <=>(other)
30
- (self.sis_student_id and self.sis_student_id == other.sis_student_id) or
31
- (self.state_student_id and self.state_student_id == other.state_student_id) or
32
- (self.first_name == other.first_name and self.middle_name == other.middle_name and self.last_name == other.last_name and self.birth_date == other.birth_date)
29
+ (sis_student_id && sis_student_id == other.sis_student_id) ||
30
+ (state_student_id && state_student_id == other.state_student_id) ||
31
+ (first_name == other.first_name && middle_name == other.middle_name && last_name == other.last_name && birth_date == other.birth_date)
33
32
  end
34
33
 
35
- alias id client_id
34
+ alias_method :id, :client_id
36
35
 
37
36
  def addresses=(array)
38
37
  if array.size <= 0 or array.first.is_a?(Address)
39
38
  @addresses = array
40
- @addresses.each{|a| a.student = self}
39
+ @addresses.each { |a| a.student = self }
41
40
  elsif array.first.is_a?(Hash)
42
- @addresses = array.collect{|a| Address.new(a)}
41
+ @addresses = array.collect { |a| Address.new(a) }
43
42
  end
44
43
  @addresses ||= []
45
44
  end
@@ -52,7 +51,7 @@ module Bright
52
51
  if array.size <= 0 or array.first.is_a?(PhoneNumber)
53
52
  @phone_numbers = array
54
53
  elsif array.first.is_a?(Hash)
55
- @phone_numbers = array.collect{|a| PhoneNumber.new(a)}
54
+ @phone_numbers = array.collect { |a| PhoneNumber.new(a) }
56
55
  end
57
56
  @phone_numbers ||= []
58
57
  end
@@ -67,7 +66,6 @@ module Bright
67
66
  elsif email.is_a?(Hash)
68
67
  @email_address = EmailAddress.new(email)
69
68
  end
70
- @email_address
71
69
  end
72
70
 
73
71
  def school=(school_val)
@@ -76,14 +74,13 @@ module Bright
76
74
  elsif school_val.is_a?(Hash)
77
75
  @school = School.new(school_val)
78
76
  end
79
- @school
80
77
  end
81
78
 
82
79
  def contacts=(array)
83
80
  if array.size <= 0 or array.first.is_a?(Contact)
84
81
  @contacts = array
85
82
  elsif array.first.is_a?(Hash)
86
- @contacts = array.collect{|a| Contact.new(a)}
83
+ @contacts = array.collect { |a| Contact.new(a) }
87
84
  end
88
85
  @contacts ||= []
89
86
  end
@@ -91,6 +88,5 @@ module Bright
91
88
  def contacts
92
89
  @contacts ||= []
93
90
  end
94
-
95
91
  end
96
92
  end
@@ -1,3 +1,3 @@
1
1
  module Bright
2
- VERSION = "1.3"
2
+ VERSION = "2.0"
3
3
  end
data/lib/bright.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  require_relative "bright/version"
2
2
  require_relative "bright/errors"
3
3
 
4
- require_relative "bright/helpers/blank_helper.rb"
5
- require_relative "bright/helpers/boolean_parser_helper.rb"
4
+ require_relative "bright/helpers/blank_helper"
5
+ require_relative "bright/helpers/boolean_parser_helper"
6
6
 
7
7
  require_relative "bright/model"
8
8
  require_relative "bright/student"
@@ -13,20 +13,22 @@ require_relative "bright/enrollment"
13
13
  require_relative "bright/school"
14
14
  require_relative "bright/contact"
15
15
 
16
-
17
16
  require_relative "bright/connection"
18
17
  require_relative "bright/response_collection"
19
18
  require_relative "bright/cursor_response_collection"
20
19
 
21
- require_relative "bright/sis_apis/base.rb"
22
- require_relative "bright/sis_apis/tsis.rb"
23
- require_relative "bright/sis_apis/power_school.rb"
24
- require_relative "bright/sis_apis/aeries.rb"
25
- require_relative "bright/sis_apis/infinite_campus.rb"
26
- require_relative "bright/sis_apis/skyward.rb"
27
- require_relative "bright/sis_apis/bright_sis.rb"
28
- require_relative "bright/sis_apis/synergy.rb"
29
- require_relative "bright/sis_apis/focus.rb"
20
+ require_relative "bright/sis_apis/base"
21
+ require_relative "bright/sis_apis/tsis"
22
+ require_relative "bright/sis_apis/power_school"
23
+ require_relative "bright/sis_apis/aeries"
24
+
25
+ require_relative "bright/sis_apis/bright_sis"
26
+ require_relative "bright/sis_apis/synergy"
27
+ require_relative "bright/sis_apis/focus"
28
+
29
+ require_relative "bright/sis_apis/one_roster"
30
+ require_relative "bright/sis_apis/one_roster/infinite_campus"
31
+ require_relative "bright/sis_apis/one_roster/skyward"
30
32
 
31
33
  module Bright
32
34
  class << self
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bright
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.3'
4
+ version: '2.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arux Software
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-13 00:00:00.000000000 Z
11
+ date: 2024-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpi
@@ -129,9 +129,10 @@ files:
129
129
  - lib/bright/sis_apis/base.rb
130
130
  - lib/bright/sis_apis/bright_sis.rb
131
131
  - lib/bright/sis_apis/focus.rb
132
- - lib/bright/sis_apis/infinite_campus.rb
132
+ - lib/bright/sis_apis/one_roster.rb
133
+ - lib/bright/sis_apis/one_roster/infinite_campus.rb
134
+ - lib/bright/sis_apis/one_roster/skyward.rb
133
135
  - lib/bright/sis_apis/power_school.rb
134
- - lib/bright/sis_apis/skyward.rb
135
136
  - lib/bright/sis_apis/synergy.rb
136
137
  - lib/bright/sis_apis/tsis.rb
137
138
  - lib/bright/student.rb
@@ -155,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
156
  - !ruby/object:Gem::Version
156
157
  version: '0'
157
158
  requirements: []
158
- rubygems_version: 3.2.3
159
+ rubygems_version: 3.5.16
159
160
  signing_key:
160
161
  specification_version: 4
161
162
  summary: Framework and tools for dealing with Student Information Systems