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



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/ruby_branch/api/resources/link.rb', line 41

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



20
21
22
23
24
25
26
27
28
29
# File 'lib/ruby_branch/api/resources/link.rb', line 20

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?

  process_error(response)

  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

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



31
32
33
34
35
36
37
38
39
# File 'lib/ruby_branch/api/resources/link.rb', line 31

def update(url:, analytics: {}, data: {}, settings: {})
  request_body = build_request_body(analytics, settings, data)
  response = do_update_request(url, request_body)

  return true if response.success?

  process_error(response)
  false
end

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



14
15
16
17
18
# File 'lib/ruby_branch/api/resources/link.rb', line 14

def update_safely(url:, analytics: {}, data: {}, settings: {})
  build(analytics: analytics, data: data, settings: settings)
rescue Errors::LinkLengthExceedError
  update(url: url, analytics: analytics, data: data, settings: settings)
end