ngrok-api

This library wraps the ngrok HTTP API to make it easier to consume in Ruby.

Installation

This library is published on Rubygems

gem install ngrok-api

Quickstart

Please consult the documentation for additional examples.

require 'ngrokapi'
client = NgrokAPI::Client.new(api_key: '<API KEY>')

# Get an instance of the api_keys client and list all API keys
keys_client = client.api_keys
keys_client.list

Automatic Paging

The ngrok API pages all list resources but this library abstracts that away from you. All response objects from any list or list! methods return an object that implements an each method which will automatically fetch additional pages for you.

require 'ngrokapi'
client = NgrokAPI::Client.new(api_key: '<API KEY>')

# list all api keys, transparently fetching additional
# pages for you if necessary
keys_client = client.api_keys
keys_client.list.each do |key|
  puts(key)
end

Instance Methods

Instance methods like update and delete can be invoked on an instance of an API object itself as well as directly without needing to first fetch the object.

require 'ngrokapi'
client = NgrokAPI::Client.new(api_key: '<API KEY>')

# update the metadata of a credential
cred = client.credentials.get(id: 'cr_1kYyunEyn6XHHlqyMBLrj5nxkoz')
cred.update(metadata: {server_name: 'giraffe-1'}.to_json)

# or do it in single call
cred = client.credentials.update(id: 'cr_1kYyunEyn6XHHlqyMBLrj5nxkoz', metadata: {server_name: 'giraffe-1'}.to_json)

Bang Methods

Most methods that interact with the API have a ! counterpart. It raises an error when one is returned by the API.

require 'ngrokapi'
client = NgrokAPI::Client.new(api_key: '<API KEY>')

# no error raised, even though it's a bad identifier
# the error is simply returned
cred = client.credentials.get(id: 'invalid')

# this raises an NgrokAPI::Error
cred = client.credentials.get!(id: 'invalid')

Error Handling

The ngrok API returns detailed information when an API call fails. Consult the section on errors for additional details.

require 'ngrokapi'
client = NgrokAPI::Client.new(api_key: '<API KEY>')

begin
    client.ip_policies.get!(id: 'invalid')
rescue NgrokAPI::Error => e
    puts(e)
    puts(e.response.to_s)
end