Class: PlatformSdk::PowerSchool::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/platform_sdk/power_school/client.rb

Overview

Powerschool::Client

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_url:, bearer_token: nil, expansions: nil) ⇒ Client

Returns a new instance of Client.



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/platform_sdk/power_school/client.rb', line 8

def initialize(base_url:, bearer_token: nil, expansions: nil)
  @bearer_token = bearer_token
  @bearer_token ||= PlatformSdk::PowerSchool.bearer_token
  @expansions = expansions || self.class.expansions

  @conn = Faraday.new(base_url, headers:) do |conn|
    conn.response :raise_error
    conn.request :json
    conn.response :json
    conn.adapter :net_http
  end
end

Instance Attribute Details

#bearer_tokenObject (readonly)

Returns the value of attribute bearer_token.



6
7
8
# File 'lib/platform_sdk/power_school/client.rb', line 6

def bearer_token
  @bearer_token
end

#connObject (readonly)

Returns the value of attribute conn.



6
7
8
# File 'lib/platform_sdk/power_school/client.rb', line 6

def conn
  @conn
end

Class Method Details

.expansionsObject



53
54
55
56
57
58
59
60
# File 'lib/platform_sdk/power_school/client.rb', line 53

def self.expansions
  {
    STUDENTS: %w[demographics addresses alerts phones school_enrollment ethnicity_race contact contact_info
                 initial_enrollment schedule_setup fees lunch],
    SECTIONS: %w[term],
    TEACHERS: %w[addresses emails phones school_affiliations]
  }
end

Instance Method Details

#get(path, params = nil, expansions = nil) ⇒ Object



34
35
36
37
38
# File 'lib/platform_sdk/power_school/client.rb', line 34

def get(path, params = nil, expansions = nil)
  params ||= {} if expansions
  params[:expansions] = expansions.join(",") if expansions
  @conn.get(path, params).body
end

#headersObject



21
22
23
24
25
26
27
# File 'lib/platform_sdk/power_school/client.rb', line 21

def headers
  {
    "Authorization" => "Bearer #{@bearer_token}",
    "Content-Type" => "application/json",
    "Accept" => "application/json"
  }
end

#post(path, params = nil) ⇒ Object



40
41
42
# File 'lib/platform_sdk/power_school/client.rb', line 40

def post(path, params = nil)
  @conn.post(path, params).body
end

#power_query(query_name, page_size: 0, params: nil) ⇒ Object



29
30
31
32
# File 'lib/platform_sdk/power_school/client.rb', line 29

def power_query(query_name, page_size: 0, params: nil)
  scrub_query(query_name)
  @conn.post("/ws/schema/query/com.strongmind.#{query_name}?pagesize=#{page_size}", params).body["record"]
end

#put(path, params = nil) ⇒ Object



44
45
46
# File 'lib/platform_sdk/power_school/client.rb', line 44

def put(path, params = nil)
  @conn.put(path, params).body
end

#scrub_query(query_name) ⇒ Object

Raises:



66
67
68
# File 'lib/platform_sdk/power_school/client.rb', line 66

def scrub_query(query_name)
  raise PowerQueryNotValid unless valid_power_query_names.include?(query_name)
end

#special_programsObject



48
49
50
51
# File 'lib/platform_sdk/power_school/client.rb', line 48

def special_programs
  records_as_json = power_query("specialprograms")
  records_as_json.map { |record| SpecialProgram.new(record) }
end

#valid_power_query_namesObject



62
63
64
# File 'lib/platform_sdk/power_school/client.rb', line 62

def valid_power_query_names
  %w[attendance_daily_total specialprograms edkey.attendance_get_daily_total_minutes pitcrew.edkey.attendance_get_bulk]
end