# ngrok-api This library wraps the [ngrok HTTP API](https://ngrok.com/docs/api) to make it easier to consume in Ruby. ## Installation This library is published on [Rubygems](https://rubygems.org/gems/ngrok-api) ```ruby gem install ngrok-api ``` ## Quickstart Please consult the [documentation](https://ruby-api.docs.ngrok.com) for additional examples. ```ruby require 'ngrokapi' client = NgrokAPI::Client.new(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. ```ruby require 'ngrokapi' client = NgrokAPI::Client.new(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. ```ruby require 'ngrokapi' client = NgrokAPI::Client.new(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. ```ruby require 'ngrokapi' client = NgrokAPI::Client.new(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. ```ruby require 'ngrokapi' client = NgrokAPI::Client.new(api_key: '') begin client.ip_policies.get!(id: 'invalid') rescue NgrokAPI::Error => e puts(e) puts(e.response.to_s) end ```