/*
 * OPEN OUTCRY API
 *
 * # Introduction This API is documented in **OpenAPI 3.0 format**.  This API the following operations: * Retrieve a list of available instruments * Retrieve a list of executed trades  # Basics * API calls have to be secured with HTTPS. * All data has to be submitted UTF-8 encoded. * The reply is sent JSON encoded.
 *
 * API version: 1.0.0
 * Generated by: OpenAPI Generator (https://openapi-generator.tech)
 */

package api

import (
	"context"
	"errors"
	"net/http"
)

// PublicAPIService is a service that implements the logic for the PublicAPIServicer
// This service should implement the business logic for every endpoint for the PublicAPI API.
// Include any external packages or services that will be required by this service.
type PublicAPIService struct {
}

// NewPublicAPIService creates a default api service
func NewPublicAPIService() PublicAPIServicer {
	return &PublicAPIService{}
}

// GetCurrencies - Currencies list
func (s *PublicAPIService) GetCurrencies(ctx context.Context) (ImplResponse, error) {
	// TODO - update GetCurrencies with the required logic for this service method.
	// Add api_public_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, CurrencyList{}) or use other options such as http.Ok ...
	// return Response(200, CurrencyList{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("GetCurrencies method not implemented")
}

// GetFxInstruments - Fx instrument list
func (s *PublicAPIService) GetFxInstruments(ctx context.Context) (ImplResponse, error) {
	// TODO - update GetFxInstruments with the required logic for this service method.
	// Add api_public_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, []FxInstrument{}) or use other options such as http.Ok ...
	// return Response(200, []FxInstrument{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("GetFxInstruments method not implemented")
}

// GetInstruments - Instrument list
func (s *PublicAPIService) GetInstruments(ctx context.Context) (ImplResponse, error) {
	// TODO - update GetInstruments with the required logic for this service method.
	// Add api_public_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, []Instrument{}) or use other options such as http.Ok ...
	// return Response(200, []Instrument{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("GetInstruments method not implemented")
}

// GetOrderBook - Get order book
func (s *PublicAPIService) GetOrderBook(ctx context.Context, instrumentName string) (ImplResponse, error) {
	// TODO - update GetOrderBook with the required logic for this service method.
	// Add api_public_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.

	// TODO: Uncomment the next line to return response Response(200, OrderBook{}) or use other options such as http.Ok ...
	// return Response(200, OrderBook{}), nil

	// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
	// return Response(404, nil),nil

	return Response(http.StatusNotImplemented, nil), errors.New("GetOrderBook method not implemented")
}
