Sample code for 30+ languages & platforms
Lua

SCIS Search

See more SCiS Schools Catalogue Examples

Demonstrates the SCIS (Schools Catalogue Information Service) search API call.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- This example assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.

local http = chilkat.Http.new()

-- Implements the following CURL command:

-- curl -i -X GET --url 'https://api.scisdata.com/catalogue/api/search?query=titleSearch%3Adogs%20AND%20publicationYear%3A2015&from=0&size=20&sort=author&order=asc' -H 'Authorization: Basic ****'

-- Use the following online tool to generate HTTP code from a CURL command
-- Convert a cURL Command to HTTP Source Code

-- This causes the "Authorization: Basic ****" to be added to each request.
http.login = "myLogin"
http.password = "myPassword"
http.basic_auth = true

local sbQuery = chilkat.StringBuilder.new()
sbQuery:append("titleSearch:dogs AND publicationYear:2015")

local sbUrl = chilkat.StringBuilder.new()
sbUrl:append("https://api.scisdata.com/catalogue/api/search?query=")
-- If non-usascii chars are included in the search, we don't know if utf-8 or windows-1252 is desired by the server.  You'll need to find out..
sbUrl:append(sbQuery:get_encoded("url", "utf-8"))
sbUrl:append("&from=0&size=20&sort=author&order=asc")

local sbResponseBody = chilkat.StringBuilder.new()
local success = http:quick_get_sb(sbUrl:get_as_string(), sbResponseBody)
if not success then
    print(http.last_error_text)
    return
end

local jResp = chilkat.JsonObject.new()
jResp:load_sb(sbResponseBody)
jResp.emit_compact = false

print("Response Body:")
print(jResp:emit())

local respStatusCode = http.last_status
print("Response Status Code = " .. respStatusCode)
if respStatusCode >= 400 then
    print("Response Header:")
    print(http.last_header)
    print("Failed.")
    return
end

-- Sample JSON response:
-- (Sample code for parsing the JSON response is shown below)

-- {
--   "data": {
--     "hits": {
--       "hits": [
--         {
--           "_index": "scisdata2",
--           "_type": "bibdatatype",
--           "_source": {
--             "isbn": [
--               "9781517638160"
--             ],
--             "languageTermCode": [
--               "eng"
--             ],
--             "mainAuthor": {
--               "namePersonalPrimary": [
--                 "Abbott, Eleanor Hallowell."
--               ]
--             },
--             "title": {
--               "titlePrimary": [
--                 "Peace on Earth, good-will to dogs"
--               ],
--               "noteStmOfResponsibility": [
--                 "by Eleanor Hallowell Abbott."
--               ]
--             },
--             "scisType": [
--               "Book"
--             ],
--             "dateIssuedMarc": 2015,
--             "languageTermValue": [
--               "English"
--             ],
--             "contributor": {},
--             "isbn13": "9781517638160",
--             "imageFileName": "9781517638160.jpg",
--             "publicationDetails": "United States, Create Space Independent Publishing Platform, 2015",
--             "isbn10": "151763816X",
--             "id": "1867852"
--           },
--           "_id": "1867852",
--           "sort": [
--             "abbott, eleanor hallowell."
--           ],
--           "_score": null
--         },
--         {
--           "_index": "scisdata2",
--           "_type": "bibdatatype",
--           "_source": {
--             "isbn": [
--               "9781780747910"
--             ],
--             "languageTermCode": [
--               "eng"
--             ],
--             "mainAuthor": {
--               "namePersonalPrimary": [
--                 "Adams, Richard."
--               ]
--             },
--             "title": {
--               "titlePrimary": [
--                 "The plague dogs"
--               ],
--               "noteStmOfResponsibility": [
--                 "Richard Adams."
--               ]
--             },
--             "scisType": [
--               "Book"
--             ],
--             "dateIssuedMarc": 2015,
--             "languageTermValue": [
--               "English"
--             ],
--             "contributor": {},
--             "isbn13": "9781780747910",
--             "imageFileName": "9781780747910.jpg",
--             "publicationDetails": "New York, Rock the Boat, 2015",
--             "isbn10": "1780747918",
--             "id": "1749228"
--           },
--           "_id": "1749228",
--           "sort": [
--             "adams, richard."
--           ],
--           "_score": null
--         },
--          ...
--       ],
--       "total": 84,
--       "max_score": null
--     },
--     "took": 585,
--     "timed_out": false
--   },
--   "subscriptionStatus": {}
-- }

-- Sample code for parsing the JSON response...
-- Use the following online tool to generate parsing code from sample JSON:
-- Generate Parsing Code from JSON

local v_index = ""
local v_type = ""
local v_sourceDateIssuedMarc = 0
local v_sourceIsbn13 = ""
local v_sourceImageFileName = ""
local v_sourcePublicationDetails = ""
local v_sourceIsbn10 = ""
local v_sourceId = ""
local v_id = ""
local v_score = ""
local j = 0
local count_j = 0
local strVal = ""

local dataHitsTotal = jResp:int_of("data.hits.total")
local dataHitsMax_score = jResp:string_of("data.hits.max_score")
local dataTook = jResp:int_of("data.took")
local dataTimed_out = jResp:bool_of("data.timed_out")
local i = 0
local count_i = jResp:size_of_array("data.hits.hits")
while i < count_i do
    jResp.i = i
    v_index = jResp:string_of("data.hits.hits[i]._index")
    v_type = jResp:string_of("data.hits.hits[i]._type")
    v_sourceDateIssuedMarc = jResp:int_of("data.hits.hits[i]._source.dateIssuedMarc")
    v_sourceIsbn13 = jResp:string_of("data.hits.hits[i]._source.isbn13")
    v_sourceImageFileName = jResp:string_of("data.hits.hits[i]._source.imageFileName")
    v_sourcePublicationDetails = jResp:string_of("data.hits.hits[i]._source.publicationDetails")
    v_sourceIsbn10 = jResp:string_of("data.hits.hits[i]._source.isbn10")
    v_sourceId = jResp:string_of("data.hits.hits[i]._source.id")
    v_id = jResp:string_of("data.hits.hits[i]._id")
    v_score = jResp:string_of("data.hits.hits[i]._score")
    j = 0
    count_j = jResp:size_of_array("data.hits.hits[i]._source.isbn")
    while j < count_j do
        jResp.j = j
        strVal = jResp:string_of("data.hits.hits[i]._source.isbn[j]")
        j = j + 1
    end

    j = 0
    count_j = jResp:size_of_array("data.hits.hits[i]._source.languageTermCode")
    while j < count_j do
        jResp.j = j
        strVal = jResp:string_of("data.hits.hits[i]._source.languageTermCode[j]")
        j = j + 1
    end

    j = 0
    count_j = jResp:size_of_array("data.hits.hits[i]._source.mainAuthor.namePersonalPrimary")
    while j < count_j do
        jResp.j = j
        strVal = jResp:string_of("data.hits.hits[i]._source.mainAuthor.namePersonalPrimary[j]")
        j = j + 1
    end

    j = 0
    count_j = jResp:size_of_array("data.hits.hits[i]._source.title.titlePrimary")
    while j < count_j do
        jResp.j = j
        strVal = jResp:string_of("data.hits.hits[i]._source.title.titlePrimary[j]")
        j = j + 1
    end

    j = 0
    count_j = jResp:size_of_array("data.hits.hits[i]._source.title.noteStmOfResponsibility")
    while j < count_j do
        jResp.j = j
        strVal = jResp:string_of("data.hits.hits[i]._source.title.noteStmOfResponsibility[j]")
        j = j + 1
    end

    j = 0
    count_j = jResp:size_of_array("data.hits.hits[i]._source.scisType")
    while j < count_j do
        jResp.j = j
        strVal = jResp:string_of("data.hits.hits[i]._source.scisType[j]")
        j = j + 1
    end

    j = 0
    count_j = jResp:size_of_array("data.hits.hits[i]._source.languageTermValue")
    while j < count_j do
        jResp.j = j
        strVal = jResp:string_of("data.hits.hits[i]._source.languageTermValue[j]")
        j = j + 1
    end

    j = 0
    count_j = jResp:size_of_array("data.hits.hits[i].sort")
    while j < count_j do
        jResp.j = j
        strVal = jResp:string_of("data.hits.hits[i].sort[j]")
        j = j + 1
    end

    j = 0
    count_j = jResp:size_of_array("data.hits.hits[i]._source.contributor.namePersonalOther")
    while j < count_j do
        jResp.j = j
        strVal = jResp:string_of("data.hits.hits[i]._source.contributor.namePersonalOther[j]")
        j = j + 1
    end

    j = 0
    count_j = jResp:size_of_array("data.hits.hits[i]._source.contributor.nameCorporateOther")
    while j < count_j do
        jResp.j = j
        strVal = jResp:string_of("data.hits.hits[i]._source.contributor.nameCorporateOther[j]")
        j = j + 1
    end

    i = i + 1
end