// Code generated by go-swagger; DO NOT EDIT.

// All Code Copyright(c) 2018-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed

package strains

// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command

import (
	"fmt"
	"io"

	"github.com/go-openapi/runtime"
	"github.com/go-openapi/strfmt"

	"github.com/taxnexus/go/lib/api/metrc-gw/metrc_gw_models"
)

// PostStrainsReader is a Reader for the PostStrains structure.
type PostStrainsReader struct {
	formats strfmt.Registry
}

// ReadResponse reads a server response into the received o.
func (o *PostStrainsReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) {
	switch response.Code() {
	case 200:
		result := NewPostStrainsOK()
		if err := result.readResponse(response, consumer, o.formats); err != nil {
			return nil, err
		}
		return result, nil
	case 401:
		result := NewPostStrainsUnauthorized()
		if err := result.readResponse(response, consumer, o.formats); err != nil {
			return nil, err
		}
		return nil, result
	case 403:
		result := NewPostStrainsForbidden()
		if err := result.readResponse(response, consumer, o.formats); err != nil {
			return nil, err
		}
		return nil, result
	case 404:
		result := NewPostStrainsNotFound()
		if err := result.readResponse(response, consumer, o.formats); err != nil {
			return nil, err
		}
		return nil, result
	case 500:
		result := NewPostStrainsInternalServerError()
		if err := result.readResponse(response, consumer, o.formats); err != nil {
			return nil, err
		}
		return nil, result

	default:
		return nil, runtime.NewAPIError("unknown error", response, response.Code())
	}
}

// NewPostStrainsOK creates a PostStrainsOK with default headers values
func NewPostStrainsOK() *PostStrainsOK {
	return &PostStrainsOK{}
}

/*PostStrainsOK handles this case with default header values.

An array of Strain records with the new IDs
*/
type PostStrainsOK struct {
	Payload *metrc_gw_models.StrainResponse
}

func (o *PostStrainsOK) Error() string {
	return fmt.Sprintf("[POST /strains][%d] postStrainsOK  %+v", 200, o.Payload)
}

func (o *PostStrainsOK) GetPayload() *metrc_gw_models.StrainResponse {
	return o.Payload
}

func (o *PostStrainsOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {

	o.Payload = new(metrc_gw_models.StrainResponse)

	// response payload
	if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
		return err
	}

	return nil
}

// NewPostStrainsUnauthorized creates a PostStrainsUnauthorized with default headers values
func NewPostStrainsUnauthorized() *PostStrainsUnauthorized {
	return &PostStrainsUnauthorized{}
}

/*PostStrainsUnauthorized handles this case with default header values.

Access unauthorized, invalid API-KEY was used
*/
type PostStrainsUnauthorized struct {
	Payload *metrc_gw_models.Error
}

func (o *PostStrainsUnauthorized) Error() string {
	return fmt.Sprintf("[POST /strains][%d] postStrainsUnauthorized  %+v", 401, o.Payload)
}

func (o *PostStrainsUnauthorized) GetPayload() *metrc_gw_models.Error {
	return o.Payload
}

func (o *PostStrainsUnauthorized) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {

	o.Payload = new(metrc_gw_models.Error)

	// response payload
	if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
		return err
	}

	return nil
}

// NewPostStrainsForbidden creates a PostStrainsForbidden with default headers values
func NewPostStrainsForbidden() *PostStrainsForbidden {
	return &PostStrainsForbidden{}
}

/*PostStrainsForbidden handles this case with default header values.

Access forbidden, account lacks access
*/
type PostStrainsForbidden struct {
	Payload *metrc_gw_models.Error
}

func (o *PostStrainsForbidden) Error() string {
	return fmt.Sprintf("[POST /strains][%d] postStrainsForbidden  %+v", 403, o.Payload)
}

func (o *PostStrainsForbidden) GetPayload() *metrc_gw_models.Error {
	return o.Payload
}

func (o *PostStrainsForbidden) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {

	o.Payload = new(metrc_gw_models.Error)

	// response payload
	if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
		return err
	}

	return nil
}

// NewPostStrainsNotFound creates a PostStrainsNotFound with default headers values
func NewPostStrainsNotFound() *PostStrainsNotFound {
	return &PostStrainsNotFound{}
}

/*PostStrainsNotFound handles this case with default header values.

Resource was not found
*/
type PostStrainsNotFound struct {
	Payload *metrc_gw_models.Error
}

func (o *PostStrainsNotFound) Error() string {
	return fmt.Sprintf("[POST /strains][%d] postStrainsNotFound  %+v", 404, o.Payload)
}

func (o *PostStrainsNotFound) GetPayload() *metrc_gw_models.Error {
	return o.Payload
}

func (o *PostStrainsNotFound) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {

	o.Payload = new(metrc_gw_models.Error)

	// response payload
	if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
		return err
	}

	return nil
}

// NewPostStrainsInternalServerError creates a PostStrainsInternalServerError with default headers values
func NewPostStrainsInternalServerError() *PostStrainsInternalServerError {
	return &PostStrainsInternalServerError{}
}

/*PostStrainsInternalServerError handles this case with default header values.

Server Internal Error
*/
type PostStrainsInternalServerError struct {
	Payload *metrc_gw_models.Error
}

func (o *PostStrainsInternalServerError) Error() string {
	return fmt.Sprintf("[POST /strains][%d] postStrainsInternalServerError  %+v", 500, o.Payload)
}

func (o *PostStrainsInternalServerError) GetPayload() *metrc_gw_models.Error {
	return o.Payload
}

func (o *PostStrainsInternalServerError) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {

	o.Payload = new(metrc_gw_models.Error)

	// response payload
	if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
		return err
	}

	return nil
}
