R/Products.r

# Altana Atlas API
#
# Altana Atlas for Regulatory Risk and Trade Compliance
#
# OpenAPI spec version: {{ version or \"v0.0.1\" }}
# Contact: engineering@altanatech.com
# Generated by: https://github.com/swagger-api/swagger-codegen.git

#' Products Class
#'
#' @field num_results 
#' @field page_size 
#' @field page_num 
#' @field products 
#'
#' @importFrom R6 R6Class
#' @importFrom jsonlite fromJSON toJSON
#' @export
Products <- R6::R6Class(
  'Products',
  public = list(
    `num_results` = NULL,
    `page_size` = NULL,
    `page_num` = NULL,
    `products` = NULL,
    initialize = function(`num_results`, `page_size`, `page_num`, `products`){
      if (!missing(`num_results`)) {
        stopifnot(is.numeric(`num_results`), length(`num_results`) == 1)
        self$`num_results` <- `num_results`
      }
      if (!missing(`page_size`)) {
        stopifnot(is.numeric(`page_size`), length(`page_size`) == 1)
        self$`page_size` <- `page_size`
      }
      if (!missing(`page_num`)) {
        stopifnot(is.numeric(`page_num`), length(`page_num`) == 1)
        self$`page_num` <- `page_num`
      }
      if (!missing(`products`)) {
        stopifnot(is.list(`products`), length(`products`) != 0)
        lapply(`products`, function(x) stopifnot(R6::is.R6(x)))
        self$`products` <- `products`
      }
    },
    toJSON = function() {
      ProductsObject <- list()
      if (!is.null(self$`num_results`)) {
        ProductsObject[['num_results']] <- self$`num_results`
      }
      if (!is.null(self$`page_size`)) {
        ProductsObject[['page_size']] <- self$`page_size`
      }
      if (!is.null(self$`page_num`)) {
        ProductsObject[['page_num']] <- self$`page_num`
      }
      if (!is.null(self$`products`)) {
        ProductsObject[['products']] <- lapply(self$`products`, function(x) x$toJSON())
      }

      ProductsObject
    },
    fromJSON = function(ProductsJson) {
      ProductsObject <- jsonlite::fromJSON(ProductsJson)
      if (!is.null(ProductsObject$`num_results`)) {
        self$`num_results` <- ProductsObject$`num_results`
      }
      if (!is.null(ProductsObject$`page_size`)) {
        self$`page_size` <- ProductsObject$`page_size`
      }
      if (!is.null(ProductsObject$`page_num`)) {
        self$`page_num` <- ProductsObject$`page_num`
      }
      if (!is.null(ProductsObject$`products`)) {
        self$`products` <- lapply(ProductsObject$`products`, function(x) {
          productsObject <- Product$new()
          productsObject$fromJSON(jsonlite::toJSON(x, auto_unbox = TRUE))
          productsObject
        })
      }
    },
    toJSONString = function() {
       sprintf(
        '{
           "num_results": %d,
           "page_size": %d,
           "page_num": %d,
           "products": [%s]
        }',
        self$`num_results`,
        self$`page_size`,
        self$`page_num`,
        lapply(self$`products`, function(x) paste(x$toJSON(), sep=","))
      )
    },
    fromJSONString = function(ProductsJson) {
      ProductsObject <- jsonlite::fromJSON(ProductsJson)
      self$`num_results` <- ProductsObject$`num_results`
      self$`page_size` <- ProductsObject$`page_size`
      self$`page_num` <- ProductsObject$`page_num`
      self$`products` <- lapply(ProductsObject$`products`, function(x) Product$new()$fromJSON(jsonlite::toJSON(x, auto_unbox = TRUE)))
    }
  )
)
altana-tech/atlas-api-r-sdk documentation built on Dec. 19, 2021, 1:36 a.m.