Display the TV show details using the API

/**

 * @NApiVersion 2.1

 * @NScriptType Suitelet

 */

define([‘N/search’, ‘N/ui/serverWidget’, ‘N/https’],

    /**

 * @param{search} search

 * @param{serverWidget} serverWidget

 * @param{https} https

 */

    (search, serverWidget, https) => {

        /**

         * Defines the Suitelet script trigger point.

         * @param {Object} scriptContext

         * @param {ServerRequest} scriptContext.request – Incoming request

         * @param {ServerResponse} scriptContext.response – Suitelet response

         * @since 2015.2

         */

        const onRequest = (context) => {

            try {

                if (context.request.method === ‘GET’) {

                    let form = serverWidget.createForm({

                        title: ‘TV show details’

                    });

                    // Add fields to the form

                    form.addField({

                        id: ‘showname’,

                        type: serverWidget.FieldType.TEXT,

                        label: ‘Show Name’

                    });

                    form.addSubmitButton({

                        label: ‘search shows’

                    });

                    context.response.writePage(form);

                } else {

                    let showNameKeyword = context.request.parameters.showname;

                    log.debug(“showNameKeyword”, showNameKeyword);

                    let urlValue = ‘https://api.tvmaze.com/search/shows?q=’ + showNameKeyword || “”;

                    let response = https.get({

                        url: urlValue

                    });

                    //log.debug(“response”, response);

                    let body = response.body;

                    //log.debug(“body”, body);

                    let results = JSON.parse(body);

                    log.debug(“results”, results);

                    let form = serverWidget.createForm({

                        title: ‘TV Show Results’

                    });

                    let sublist = form.addSublist({

                        id: ‘custpage_sublist’,

                        type: serverWidget.SublistType.LIST,

                        label: ‘TV Show Results’

                    });

                    sublist.addField({

                        id: ‘custpage_name’,

                        type: serverWidget.FieldType.TEXT,

                        label: ‘Name’

                    });

                    sublist.addField({

                        id: ‘custpage_type’,

                        type: serverWidget.FieldType.TEXT,

                        label: ‘Type’

                    });

                    sublist.addField({

                        id: ‘custpage_language’,

                        type: serverWidget.FieldType.TEXT,

                        label: ‘Language’

                    });

                    sublist.addField({

                        id: ‘custpage_url’,

                        type: serverWidget.FieldType.TEXT,

                        label: ‘URL’

                    });

                    for (let i = 0; i < results.length; i++) {

                        sublist.setSublistValue({

                            id: ‘custpage_name’,

                            line: i,

                            value: results[i].show.name || “”

                        });

                        sublist.setSublistValue({

                            id: ‘custpage_type’,

                            line: i,

                            value: results[i].show.type || “”

                        });

                        sublist.setSublistValue({

                            id: ‘custpage_language’,

                            line: i,

                            value: results[i].show.language || “”

                        });

                        sublist.setSublistValue({

                            id: ‘custpage_url’,

                            line: i,

                            value: results[i].show.url || “”

                        });

                    }

                    context.response.writePage(form);

                }

            } catch (e) {

                log.debug(“error @onRequest”, e);

            }

        }

        return { onRequest }

    });

Leave a comment

Your email address will not be published. Required fields are marked *