class Bannerbear::Client

Constants

BB_API_ENDPOINT
BB_API_ENDPOINT_SYNCHRONOUS

Public Class Methods

new(api_key = nil) click to toggle source
# File lib/bannerbear/client.rb, line 5
def initialize(api_key = nil)
  @api_key = api_key || ENV["BANNERBEAR_API_KEY"]
end

Public Instance Methods

account() click to toggle source
# File lib/bannerbear/client.rb, line 9
def account
  get_response "/account"
end
create_animated_gif(uid, payload = {}) click to toggle source
# File lib/bannerbear/client.rb, line 91
def create_animated_gif(uid, payload = {})
  post_response "/animated_gifs", payload.slice(:frames, :input_media_url, :webhook_url, :metadata, :loop, :frame_durations, :fps).merge({:template => uid})
end
create_collection(uid, payload = {}) click to toggle source
# File lib/bannerbear/client.rb, line 63
def create_collection(uid, payload = {})
  post_response "/collections", payload.slice(:modifications, :webhook_url, :transparent, :metadata).merge({:template_set => uid}), payload[:synchronous]
end
create_image(uid, payload = {}) click to toggle source
# File lib/bannerbear/client.rb, line 31
def create_image(uid, payload = {})
    post_response "/images", payload.slice(:modifications, :webhook_url, :transparent, :render_pdf, :metadata).merge({:template => uid}), payload[:synchronous]
end
create_movie(payload = {}) click to toggle source
# File lib/bannerbear/client.rb, line 105
def create_movie(payload = {})
  post_response "/movies", payload.slice(:width, :height, :inputs, :transition, :soundtrack_url, :webhook_url, :metadata)
end
create_screenshot(url, payload = {}) click to toggle source
# File lib/bannerbear/client.rb, line 77
def create_screenshot(url, payload = {})
  post_response "/screenshots", payload.slice(:width, :height, :mobile, :webhook_url).merge({:url => url}), payload[:synchronous]
end
create_video(uid, payload = {}) click to toggle source
# File lib/bannerbear/client.rb, line 45
def create_video(uid, payload = {})
    post_response "/videos", payload.slice(:input_media_url, :modifications, :blur, :trim_to_length_in_seconds, :webhook_url, :metadata, :frames, :frame_durations, :create_gif_preview).merge({:video_template => uid})
end
effects() click to toggle source
# File lib/bannerbear/client.rb, line 17
def effects
  get_response "/effects"
end
fonts() click to toggle source
# File lib/bannerbear/client.rb, line 13
def fonts
  get_response "/fonts"
end
generate_signed_url(base_id, params = {}) click to toggle source

Signed URLS

# File lib/bannerbear/client.rb, line 146
def generate_signed_url(base_id, params = {})
  base = "https://ondemand.bannerbear.com/signedurl/#{base_id}/image.jpg"
  query = "?modifications=" + Base64.urlsafe_encode64(params[:modifications].to_json, :padding => false)
  signature = OpenSSL::HMAC.hexdigest("SHA256", @api_key, base + query)
  return base + query + "&s=" + signature
end
get_animated_gif(uid) click to toggle source

Animated Gifs

# File lib/bannerbear/client.rb, line 83
def get_animated_gif(uid)
  get_response "/animated_gifs/#{uid}"
end
get_collection(uid) click to toggle source

Collections

# File lib/bannerbear/client.rb, line 55
def get_collection(uid)
  get_response "/collections/#{uid}"
end
get_image(uid) click to toggle source

Images

# File lib/bannerbear/client.rb, line 23
def get_image(uid)
    get_response "/images/#{uid}"
end
get_movie(uid) click to toggle source

Movies

# File lib/bannerbear/client.rb, line 97
def get_movie(uid)
  get_response "/movies/#{uid}"
end
get_screenshot(uid) click to toggle source

Screenshots

# File lib/bannerbear/client.rb, line 69
def get_screenshot(uid)
  get_response "/screenshots/#{uid}"
end
get_template(uid) click to toggle source

Templates

# File lib/bannerbear/client.rb, line 112
def get_template(uid)
    get_response "/templates/#{uid}"
end
get_template_set(uid) click to toggle source

Template Sets

# File lib/bannerbear/client.rb, line 126
def get_template_set(uid)
    get_response "/template_sets/#{uid}"
end
get_video(uid) click to toggle source

Videos

# File lib/bannerbear/client.rb, line 37
def get_video(uid)
    get_response "/videos/#{uid}"
end
get_video_template(uid) click to toggle source

Video Templates

# File lib/bannerbear/client.rb, line 136
def get_video_template(uid)
    get_response "/video_templates/#{uid}"
end
list_animated_gifs(params = {}) click to toggle source
# File lib/bannerbear/client.rb, line 87
def list_animated_gifs(params = {})
  get_response "/animated_gifs?#{URI.encode_www_form(params.slice(:page))}"
end
list_collections(params = {}) click to toggle source
# File lib/bannerbear/client.rb, line 59
def list_collections(params = {})
  get_response "/collections?#{URI.encode_www_form(params.slice(:page))}"
end
list_images(params = {}) click to toggle source
# File lib/bannerbear/client.rb, line 27
def list_images(params = {})
    get_response "/images?#{URI.encode_www_form(params.slice(:page, :limit))}"
end
list_movies(params = {}) click to toggle source
# File lib/bannerbear/client.rb, line 101
def list_movies(params = {})
  get_response "/movies?#{URI.encode_www_form(params.slice(:page))}"
end
list_screenshots(params = {}) click to toggle source
# File lib/bannerbear/client.rb, line 73
def list_screenshots(params = {})
  get_response "/screenshots?#{URI.encode_www_form(params.slice(:page))}"
end
list_template_sets(params = {}) click to toggle source
# File lib/bannerbear/client.rb, line 130
def list_template_sets(params = {})
    get_response "/template_sets?#{URI.encode_www_form(params.slice(:page))}"
end
list_templates(params = {}) click to toggle source
# File lib/bannerbear/client.rb, line 120
def list_templates(params = {})
    get_response "/templates?#{URI.encode_www_form(params.slice(:page, :tag, :limit, :name))}"
end
list_video_templates(params = {}) click to toggle source
# File lib/bannerbear/client.rb, line 140
def list_video_templates(params = {})
    get_response "/video_templates?#{URI.encode_www_form(params.slice(:page))}"
end
list_videos(params = {}) click to toggle source
# File lib/bannerbear/client.rb, line 41
def list_videos(params = {})
    get_response "/videos?#{URI.encode_www_form(params.slice(:page))}"
end
update_template(uid, payload = {}) click to toggle source
# File lib/bannerbear/client.rb, line 116
def update_template(uid, payload = {})
    patch_response "/templates/#{uid}", payload.slice(:name, :metadata, :tags)
end
update_video(uid, payload = {}) click to toggle source
# File lib/bannerbear/client.rb, line 49
def update_video(uid, payload = {})
  patch_response "/videos", payload.slice(:transcription, :approved).merge({:uid => uid})
end

Private Instance Methods

get_response(url) click to toggle source
# File lib/bannerbear/client.rb, line 159
def get_response(url)
    response = HTTParty.get("#{BB_API_ENDPOINT}#{url}", timeout: 3, headers: { 'Authorization' => "Bearer #{@api_key}" })
    body = JSON.parse(response.body)
  return {"error" => body['message'], "code" => response.code} if response.code >= 400
  return body
end
patch_response(url, payload) click to toggle source
# File lib/bannerbear/client.rb, line 166
def patch_response(url, payload)
    response = HTTParty.patch("#{BB_API_ENDPOINT}#{url}", 
            body: payload.to_json,
            timeout: 5,
            headers: { 
                    'Authorization' => "Bearer #{@api_key}",
                    'Content-Type' => 'application/json'
            }
    )
    body = JSON.parse(response.body)
  return {"error" => body['message'], "code" => response.code} if response.code >= 400
  return body
end
post_response(url, payload, sync = false) click to toggle source
# File lib/bannerbear/client.rb, line 180
def post_response(url, payload, sync = false)
    endpoint = BB_API_ENDPOINT
    timeout = 5
    if sync == true
            endpoint = BB_API_ENDPOINT_SYNCHRONOUS 
            timeout = 15
    end
    response = HTTParty.post("#{endpoint}#{url}", 
            body: payload.to_json,
            timeout: timeout,
            headers: { 
                    'Authorization' => "Bearer #{@api_key}",
                    'Content-Type' => 'application/json'
            }
    )
    body = JSON.parse(response.body)
    return {"error" => body['message'], "code" => response.code} if response.code >= 400
    return body
end