// Code generated by go generate; DO NOT EDIT.
// 2021-09-28 12:05:23.599657 +0200 CEST m=+0.000196001

package ooapi

//go:generate go run ./internal/generator -file responses.go

import (
	"context"
	"io"
	"net/http"

	"github.com/ooni/probe-cli/v3/internal/netxlite"
	"github.com/ooni/probe-cli/v3/internal/ooapi/apimodel"
)

func (api *simpleCheckReportIDAPI) newResponse(ctx context.Context, resp *http.Response, err error) (*apimodel.CheckReportIDResponse, error) {
	if err != nil {
		return nil, err
	}
	if resp.StatusCode == 401 {
		return nil, ErrUnauthorized
	}
	if resp.StatusCode != 200 {
		return nil, newHTTPFailure(resp.StatusCode)
	}
	defer resp.Body.Close()
	reader := io.LimitReader(resp.Body, 4<<20)
	data, err := netxlite.ReadAllContext(ctx, reader)
	if err != nil {
		return nil, err
	}
	out := &apimodel.CheckReportIDResponse{}
	if err := api.jsonCodec().Decode(data, out); err != nil {
		return nil, err
	}
	return out, nil
}

func (api *simpleCheckInAPI) newResponse(ctx context.Context, resp *http.Response, err error) (*apimodel.CheckInResponse, error) {
	if err != nil {
		return nil, err
	}
	if resp.StatusCode == 401 {
		return nil, ErrUnauthorized
	}
	if resp.StatusCode != 200 {
		return nil, newHTTPFailure(resp.StatusCode)
	}
	defer resp.Body.Close()
	reader := io.LimitReader(resp.Body, 4<<20)
	data, err := netxlite.ReadAllContext(ctx, reader)
	if err != nil {
		return nil, err
	}
	out := &apimodel.CheckInResponse{}
	if err := api.jsonCodec().Decode(data, out); err != nil {
		return nil, err
	}
	return out, nil
}

func (api *simpleLoginAPI) newResponse(ctx context.Context, resp *http.Response, err error) (*apimodel.LoginResponse, error) {
	if err != nil {
		return nil, err
	}
	if resp.StatusCode == 401 {
		return nil, ErrUnauthorized
	}
	if resp.StatusCode != 200 {
		return nil, newHTTPFailure(resp.StatusCode)
	}
	defer resp.Body.Close()
	reader := io.LimitReader(resp.Body, 4<<20)
	data, err := netxlite.ReadAllContext(ctx, reader)
	if err != nil {
		return nil, err
	}
	out := &apimodel.LoginResponse{}
	if err := api.jsonCodec().Decode(data, out); err != nil {
		return nil, err
	}
	return out, nil
}

func (api *simpleMeasurementMetaAPI) newResponse(ctx context.Context, resp *http.Response, err error) (*apimodel.MeasurementMetaResponse, error) {
	if err != nil {
		return nil, err
	}
	if resp.StatusCode == 401 {
		return nil, ErrUnauthorized
	}
	if resp.StatusCode != 200 {
		return nil, newHTTPFailure(resp.StatusCode)
	}
	defer resp.Body.Close()
	reader := io.LimitReader(resp.Body, 4<<20)
	data, err := netxlite.ReadAllContext(ctx, reader)
	if err != nil {
		return nil, err
	}
	out := &apimodel.MeasurementMetaResponse{}
	if err := api.jsonCodec().Decode(data, out); err != nil {
		return nil, err
	}
	return out, nil
}

func (api *simpleRegisterAPI) newResponse(ctx context.Context, resp *http.Response, err error) (*apimodel.RegisterResponse, error) {
	if err != nil {
		return nil, err
	}
	if resp.StatusCode == 401 {
		return nil, ErrUnauthorized
	}
	if resp.StatusCode != 200 {
		return nil, newHTTPFailure(resp.StatusCode)
	}
	defer resp.Body.Close()
	reader := io.LimitReader(resp.Body, 4<<20)
	data, err := netxlite.ReadAllContext(ctx, reader)
	if err != nil {
		return nil, err
	}
	out := &apimodel.RegisterResponse{}
	if err := api.jsonCodec().Decode(data, out); err != nil {
		return nil, err
	}
	return out, nil
}

func (api *simpleTestHelpersAPI) newResponse(ctx context.Context, resp *http.Response, err error) (apimodel.TestHelpersResponse, error) {
	if err != nil {
		return nil, err
	}
	if resp.StatusCode == 401 {
		return nil, ErrUnauthorized
	}
	if resp.StatusCode != 200 {
		return nil, newHTTPFailure(resp.StatusCode)
	}
	defer resp.Body.Close()
	reader := io.LimitReader(resp.Body, 4<<20)
	data, err := netxlite.ReadAllContext(ctx, reader)
	if err != nil {
		return nil, err
	}
	out := apimodel.TestHelpersResponse{}
	if err := api.jsonCodec().Decode(data, &out); err != nil {
		return nil, err
	}
	if out == nil {
		return nil, ErrJSONLiteralNull
	}
	return out, nil
}

func (api *simplePsiphonConfigAPI) newResponse(ctx context.Context, resp *http.Response, err error) (apimodel.PsiphonConfigResponse, error) {
	if err != nil {
		return nil, err
	}
	if resp.StatusCode == 401 {
		return nil, ErrUnauthorized
	}
	if resp.StatusCode != 200 {
		return nil, newHTTPFailure(resp.StatusCode)
	}
	defer resp.Body.Close()
	reader := io.LimitReader(resp.Body, 4<<20)
	data, err := netxlite.ReadAllContext(ctx, reader)
	if err != nil {
		return nil, err
	}
	out := apimodel.PsiphonConfigResponse{}
	if err := api.jsonCodec().Decode(data, &out); err != nil {
		return nil, err
	}
	if out == nil {
		return nil, ErrJSONLiteralNull
	}
	return out, nil
}

func (api *simpleTorTargetsAPI) newResponse(ctx context.Context, resp *http.Response, err error) (apimodel.TorTargetsResponse, error) {
	if err != nil {
		return nil, err
	}
	if resp.StatusCode == 401 {
		return nil, ErrUnauthorized
	}
	if resp.StatusCode != 200 {
		return nil, newHTTPFailure(resp.StatusCode)
	}
	defer resp.Body.Close()
	reader := io.LimitReader(resp.Body, 4<<20)
	data, err := netxlite.ReadAllContext(ctx, reader)
	if err != nil {
		return nil, err
	}
	out := apimodel.TorTargetsResponse{}
	if err := api.jsonCodec().Decode(data, &out); err != nil {
		return nil, err
	}
	if out == nil {
		return nil, ErrJSONLiteralNull
	}
	return out, nil
}

func (api *simpleURLsAPI) newResponse(ctx context.Context, resp *http.Response, err error) (*apimodel.URLsResponse, error) {
	if err != nil {
		return nil, err
	}
	if resp.StatusCode == 401 {
		return nil, ErrUnauthorized
	}
	if resp.StatusCode != 200 {
		return nil, newHTTPFailure(resp.StatusCode)
	}
	defer resp.Body.Close()
	reader := io.LimitReader(resp.Body, 4<<20)
	data, err := netxlite.ReadAllContext(ctx, reader)
	if err != nil {
		return nil, err
	}
	out := &apimodel.URLsResponse{}
	if err := api.jsonCodec().Decode(data, out); err != nil {
		return nil, err
	}
	return out, nil
}

func (api *simpleOpenReportAPI) newResponse(ctx context.Context, resp *http.Response, err error) (*apimodel.OpenReportResponse, error) {
	if err != nil {
		return nil, err
	}
	if resp.StatusCode == 401 {
		return nil, ErrUnauthorized
	}
	if resp.StatusCode != 200 {
		return nil, newHTTPFailure(resp.StatusCode)
	}
	defer resp.Body.Close()
	reader := io.LimitReader(resp.Body, 4<<20)
	data, err := netxlite.ReadAllContext(ctx, reader)
	if err != nil {
		return nil, err
	}
	out := &apimodel.OpenReportResponse{}
	if err := api.jsonCodec().Decode(data, out); err != nil {
		return nil, err
	}
	return out, nil
}

func (api *simpleSubmitMeasurementAPI) newResponse(ctx context.Context, resp *http.Response, err error) (*apimodel.SubmitMeasurementResponse, error) {
	if err != nil {
		return nil, err
	}
	if resp.StatusCode == 401 {
		return nil, ErrUnauthorized
	}
	if resp.StatusCode != 200 {
		return nil, newHTTPFailure(resp.StatusCode)
	}
	defer resp.Body.Close()
	reader := io.LimitReader(resp.Body, 4<<20)
	data, err := netxlite.ReadAllContext(ctx, reader)
	if err != nil {
		return nil, err
	}
	out := &apimodel.SubmitMeasurementResponse{}
	if err := api.jsonCodec().Decode(data, out); err != nil {
		return nil, err
	}
	return out, nil
}
