Sha256: f97120ae805d336cc0e9f75852de48e6d54292c1fd0840b0745c0684f69b72ae

Contents?: true

Size: 1.78 KB

Versions: 22

Compression:

Stored size: 1.78 KB

Contents

# frozen_string_literal: true
module PlatformSdk
  module PowerSchool
    # Powerschool::Client
    class Client
      attr_reader :bearer_token, :conn

      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

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

      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

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

      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

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

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

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
strongmind-platform-sdk-3.13.0 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.12.0 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.11.2 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.11.1 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.11.0 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.10.3 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.10.2 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.10.1 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.10.0 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.9.5 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.9.4 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.9.3 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.9.2 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.9.1 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.9.0 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.8.0 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.7.1 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.7.0 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.6.2 lib/platform_sdk/power_school/client.rb
strongmind-platform-sdk-3.6.1 lib/platform_sdk/power_school/client.rb