Class: RubyBranch::API::Resources::Link

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_branch/api/resources/link.rb

Constant Summary collapse

2000

Instance Method Summary collapse

Instance Method Details

#build(analytics: {}, data: {}, settings: {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/ruby_branch/api/resources/link.rb', line 28

def build(analytics: {}, data: {}, settings: {})
  params = {}
  params.merge!(prepare_analytics(analytics))
  params.merge!(prepare_settings(settings))
  params.merge!(data)

  link = Addressable::URI.new(
    scheme: 'https',
    host: RubyBranch.config.branch_domain,
    path: "/a/#{RubyBranch.config.api_key}",
    query: ToQuery.call(params)
  ).to_s
  check_for_link_length_limit(link)
  link
end

#create(analytics: {}, data: {}, settings: {}) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/ruby_branch/api/resources/link.rb', line 14

def create(analytics: {}, data: {}, settings: {})
  request_body = build_request_body(analytics, settings, data)
  response = do_create_request(request_body)

  return response.json[:url] if response.success?

  error_attrs = { status: response.status, body: response.body }
  if defined?(Bugsnag) && defined?(Rails)
    Bugsnag.notify(Errors::ApiResponseError.new, error_attrs) if Rails.env.production?
  end

  RubyBranch.config.link_to_homepage if RubyBranch.config.link_to_homepage
end

#create_safely(analytics: {}, data: {}, settings: {}) ⇒ Object



8
9
10
11
12
# File 'lib/ruby_branch/api/resources/link.rb', line 8

def create_safely(analytics: {}, data: {}, settings: {})
  build(analytics: analytics, data: data, settings: settings)
rescue Errors::LinkLengthExceedError
  create(analytics: analytics, data: data, settings: settings)
end