List Recordings

👍

You're ready for this tutorial if you've got the following:

A FreeClimb account
A registered application
A configured FreeClimb Number
Your tools and language installed


Node.js

Using the FreeClimb SDK, an asynchronous request for all recordings associated with the account can be initiated. Additional filtering criteria such as date and/or call are possible, but not demonstrated in this sample. Successful invocation will return the first page of recordings. This object will allow for sequential iteration through the pages which allows one to retrieve the entire list of recordings using the nextPageUri.

Create your package.json file and save in the root directory of your project:

{
  "name": "node-list-recordings-tutorial",
  "version": "1.0.0",
  "dependencies": {
    "@freeclimb/sdk": "^1.0.0",
    "dotenv": "^8.1.0"
  }
}

Install the package by running the following in the command line/terminal:

yarn install

Example code:

require('dotenv').config()
const freeclimbSDK = require('@freeclimb/sdk')
 
const accountId = process.env.ACCOUNT_ID
const apiKey = process.env.API_KEY
// your FreeClimb API credentials (available in the Dashboard) - be sure to set up environment variables to store these values
const freeclimb = freeclimbSDK(accountId, apiKey)
getRecordings().then(recordings => {
  // Use recordings
}).catch(err => {
  // Catch Errors
})
 
async function getRecordings() {
  // Create array to store all recordings
  const recordings = []
  // Invoke GET method to retrieve initial list of recordings information
  const first = await freeclimb.api.recordings.getList()
  recordings.push(...first.recordings)
  // Get Uri for next page
  let nextPageUri = first.nextPageUri
  // Retrieve entire recordings list
  while (nextPageUri) {
    const nextPage = await freeclimb.api.recordings.getNextPage(nextPageUri)
    recordings.push(...nextPage.recordings)
    nextPageUri = nextPage.nextPageUri
  }
  return recordings
}

Java

To initiate any interaction with FreeClimb a FreeClimbClient object must be created. Using the RecordingsRequester created upon successful creation of the FreeClimbClient a synchronous request for all recordings associated with the account can be initiated. Additional filtering criteria such as date and/or call are possible, but not demonstrated in this sample. Successful invocation of the getMeta method will return the RecordingList object which represents the paginated list of recordings returned by FreeClimb. This object will allow for sequential iteration through the pages and allow one to retrieve the entire list of recordings.

Create your build.gradle file and save it to the root directory in your project:

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This is a general purpose Gradle build.
 * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds
 */

buildscript {
    repositories {
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
  //Add the dependency
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:2.1.6.RELEASE"
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

bootJar {
    baseName = 'gs-spring-boot'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
    maven { url 'https://jitpack.io' }
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile "org.springframework.boot:spring-boot-starter-web"
    testCompile "junit:junit"
    compile 'com.github.FreeClimbAPI:FreeClimb-Java-SDK:3.0.0'
}

sourceSets {
    main {
        java {
            srcDirs = ['src'] // changed line
        }
    }
}

Build the file by running the following in your terminal/command line:

gradle build

Example code:

/*
 * FreeClimb Java packages documentation:
 * https://javadoc.jitpack.io/com/github/freeclimbapi/java-sdk/1.0.0/javadoc/index.html
 */
import com.vailsys.freeclimb.api.FreeClimbClient;
import com.vailsys.freeclimb.api.FreeClimbException;
import com.vailsys.freeclimb.api.recording.Recording;
import com.vailsys.freeclimb.api.recording.RecordingList;
 
import java.util.ArrayList;
public ArrayList listRecordings() {
    FreeClimbClient client;
    RecordingList recordingsList;
 
    try {
        client = new FreeClimbClient(accountId, apiKey); // Create FreeClimbClient object
      // Your account ID & api key can be found under API credentials on the FreeClimb Dashboard
        recordingsList = client.recordings.getMeta(); //Retrieve the paginated list of recordings
 
        //Don't bother trying to grab more pages if there is only one or zero
        //pages of results
        if(recordingsList.getTotalSize() > recordingsList.getPageSize()) {
            //Load in all the recordings returned.
            while(recordingsList.getLocalSize() < recordingsList.getTotalSize()) {
            recordingsList.loadNextPage(); //Load in the next page of recordings.
            }
        }
 
        ArrayList<Recording> allRecordings = recordingsList.export(); //Extract the array from the RecordingList
 
        for(Recording r : allRecordings) {
            // do something with each recording
        }
 
        return allRecordings;
    }
    catch(FreeClimbException pe) {
        System.out.println(pe.getMessage());
    }
 
    return null;
}

C#

To initiate any interaction with FreeClimb a FreeClimbClient object must be created. Using the RecordingsRequester created upon successful creation of the FreeClimbClient a synchronous request for all recordings associated with the account can be initiated. Additional filtering criteria such as date and/or call are possible but not demonstrated in this sample. Successful invocation of the get method will return the RecordingList object which will allow for the sequential iteration through the entire list for recordings.

Example code:

static void Main (string[] args) {
  // Create FreeClimbClient object
  FreeClimbClient client = new FreeClimbClient (getFreeClimbAccountId (), getFreeClimbApiKey ());

  // Invoke get method to retrieve initial list of recording information
  RecordingList recordingList = client.getRecordingsRequester.getMeta ();

  // Check if list is empty by checking total size of the list
  if (recordingList.getTotalSize > 0) {
    // retrieve all recording for server
    while (recordingList.getLocalSize < recordingList.getTotalSize) {
      recordingList.loadNextPage ();
    }

    // Convert current pages recording information to a linked list
    LinkedList<IFreeClimbCommon> commonList = recordingList.export ();

    // Loop through linked list to process recording information
    foreach (IFreeClimbCommon element in commonList) {
      // Cast each element to the Recording element for processing
      Recording recording = element as Recording;

      // Process recording element
      Console.Write (recording.getRecordingId);
    }
  }
}