atomiyama/studyplus_for_school_sync_go

View on GitHub
fssync/partner.go

Summary

Maintainability
A
1 hr
Test Coverage
package fssync

import "encoding/json"

type Partner struct {
    PublicId       string `json:"public_id,omitempty"`
    CustomerUid    string `json:"customer_uid,omitempty"`
    SchoolName     string `json:"school_name"`
    Name           string `json:"name,omitempty"`
    TimeZone       string `json:"time_zone,omitempty"`
    ServerResponse `json:"-"`
}

type PartnerService struct {
    s       *Service
    Student *StudentService
}

type PartnerCreateCall struct {
    s       *Service
    partner *Partner
}

func NewPartnerService(s *Service) *PartnerService {
    p := &PartnerService{s: s}
    p.Student = NewStudentService(s)
    return p
}

func (r *PartnerService) Create(partner *Partner) *PartnerCreateCall {
    c := &PartnerCreateCall{s: r.s}
    c.partner = partner
    return c
}

func (c *PartnerCreateCall) Do() (*Partner, error) {
    body, err := encodeJson(c.partner)
    if err != nil {
        return nil, err
    }
    res, err := request(c.s, "POST", "partners", body)
    if err != nil {
        return nil, err
    }
    defer res.Body.Close()
    if err := checkResponse(res); err != nil {
        return nil, err
    }
    json.NewDecoder(res.Body).Decode(c.partner)
    c.partner.ServerResponse = ServerResponse{HTTPStatusCode: res.StatusCode}
    return c.partner, nil
}