1. Prerequisites

To follow this guide, you will need to:

2. Install and initialize the Dub Ruby SDK

1

Install

To install the Dub Ruby SDK, run the following command:

bash
gem install dub
2

Initialize

Initialize the Dub Ruby SDK by creating a new instance of the Dub struct.

index.rb
require "sinatra"
require "dub"

dub = ::OpenApiSDK::Dub.new
dub.config_security(
  ::OpenApiSDK::Shared::Security.new(
    token: ENV['DUB_API_KEY'],
  )
)

Let’s create a short link using the Dub Ruby SDK.

index.rb
post "/links" do
  req = ::OpenApiSDK::Operations::CreateLinkRequest.new(
    request_body: ::OpenApiSDK::Operations::CreateLinkRequestBody.new(
      url: 'https://google.com'
    )
  )

  res = dub.links.create(req)

  content_type :json
  res.raw_response.body
end

Optionally, you can also pass an externalId field which is a unique identifier for the link in your own database to associate it with the link in Dub’s system.

index.rb
post "/links" do
  req = ::OpenApiSDK::Operations::CreateLinkRequest.new(
    request_body: ::OpenApiSDK::Operations::CreateLinkRequestBody.new(
      url: 'https://google.com',
      external_id: '12345'
    )
  )

  res = dub.links.create(req)

  content_type :json
  res.raw_response.body
end

This will let you easily update the link or retrieve analytics for it later on using the externalId instead of the Dub linkId.

Dub Ruby SDK provides a method to upsert a link – where an existing link is updated if it exists, or a new link is created if it doesn’t. so you don’t have to worry about checking if the link already exists.

index.rb
put "/links" do
  req = ::OpenApiSDK::Operations::UpsertLinkRequest.new(
    request_body: ::OpenApiSDK::Operations::UpsertLinkRequestBody.new(
      url: "https://google.com",
    ),
  )

  res = dub.links.upsert(req)

  content_type :json
  res.raw_response.body
end

This way, you won’t have to worry about checking if the link already exists when you’re creating it.

Let’s update an existing link using the Dub Ruby SDK.

You can do that in two ways:

  • Using the link’s linkId in Dub’s system.
  • Using the link’s externalId in your own database (prefixed with ext_).
index.rb
patch "/links" do
  req = ::OpenApiSDK::Operations::UpdateLinkRequest.new(
    link_id: "clyci5h0w000511sjmu0tyjv9",
    request_body: ::OpenApiSDK::Operations::UpdateLinkRequestBody.new(
      url: 'https://google.uk'
    )
  )

  res = dub.links.update(req)

  content_type :json
  res.raw_response.body
end

Let’s retrieve analytics for a link using the Dub Ruby SDK.

index.rb
get "/analytics" do
  req = ::OpenApiSDK::Operations::RetrieveAnalyticsRequest.new(
    link_id: "clx1gvi9o0005hf5momm6f7hj",
    interval: ::OpenApiSDK::Operations::Interval::SEVEND,
    group_by: ::OpenApiSDK::Operations::GroupBy::TIMESERIES
  )

  res = dub.analytics.retrieve(req)

  content_type :json
  res.raw_response.body
end

7. Examples