Class: PowerAPI::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/powerapi/parser.rb

Class Method Summary collapse

Class Method Details

.assignment_categories(raw_assignment_categories) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/powerapi/parser.rb', line 21

def self.assignment_categories(raw_assignment_categories)
  assignment_categories = {}

  raw_assignment_categories.each do |assignment_category|
    assignment_categories[assignment_category["id"]] = assignment_category
  end

  assignment_categories
end

.assignment_scores(raw_assignment_scores) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/powerapi/parser.rb', line 31

def self.assignment_scores(raw_assignment_scores)
  assignment_scores = {}

  raw_assignment_scores.each do |assignment_score|
    assignment_scores[assignment_score["assignmentId"]] = assignment_score
  end

  assignment_scores
end

.assignments(raw_assignments, assignment_categories, assignment_scores) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/powerapi/parser.rb', line 3

def self.assignments(raw_assignments, assignment_categories, assignment_scores)
  assignments = {}

  raw_assignments.each do |assignment|
    if assignments[assignment["sectionid"]] == nil
      assignments[assignment["sectionid"]] = []
    end

    assignments[assignment["sectionid"]] << PowerAPI::Data::Assignment.new({
      :assignment => assignment,
      :category => assignment_categories[assignment["categoryId"]],
      :score => assignment_scores[assignment["id"]],
    })
  end

  assignments
end

.final_grades(raw_final_grades) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/powerapi/parser.rb', line 41

def self.final_grades(raw_final_grades)
  final_grades = {}

  raw_final_grades.each do |final_grade|
    if final_grades[final_grade["sectionid"]] == nil
      final_grades[final_grade["sectionid"]] = []
    end

    final_grades[final_grade["sectionid"]] << final_grade
  end

  final_grades
end

.reporting_terms(raw_reporting_terms) ⇒ Object



55
56
57
58
59
60
61
62
63
# File 'lib/powerapi/parser.rb', line 55

def self.reporting_terms(raw_reporting_terms)
  reporting_terms = {}

  raw_reporting_terms.each do |reporting_term|
    reporting_terms[reporting_term["id"]] = reporting_term["abbreviation"]
  end

  reporting_terms
end

.sections(raw_sections, assignments, final_grades, reporting_terms, teachers) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/powerapi/parser.rb', line 65

def self.sections(raw_sections, assignments, final_grades, reporting_terms, teachers)
  sections = []

  raw_sections.each do |section|
    # PowerSchool will return sections that have not started yet.
    # These are stripped since none of the official channels display them.
    if DateTime.parse(section["enrollments"]["startDate"]).strftime("%s").to_i > DateTime.now.strftime("%s").to_i
      next
    end

    sections << PowerAPI::Data::Section.new({
      :assignments => assignments[section["id"]],
      :final_grades => final_grades[section["id"]],
      :reporting_terms => reporting_terms,
      :section => section,
      :teacher => teachers[section["teacherID"]]
    })
  end

  sections = sections.sort_by{|section| [section.expression, section.name]}

  sections
end

.teachers(raw_teachers) ⇒ Object



89
90
91
92
93
94
95
96
97
# File 'lib/powerapi/parser.rb', line 89

def self.teachers(raw_teachers)
  teachers = {}

  raw_teachers.each do |teacher|
    teachers[teacher["id"]] = teacher
  end

  teachers
end