Class: DuodealerApp::ScripttagsManager

Inherits:
Object
  • Object
show all
Defined in:
lib/duodealer_app/managers/scripttags_manager.rb

Defined Under Namespace

Classes: CreationFailed

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(scripttags, shop_domain) ⇒ ScripttagsManager

Returns a new instance of ScripttagsManager.



27
28
29
30
# File 'lib/duodealer_app/managers/scripttags_manager.rb', line 27

def initialize(scripttags, shop_domain)
  @required_scripttags = scripttags
  @shop_domain = shop_domain
end

Instance Attribute Details

#required_scripttagsObject (readonly)

Returns the value of attribute required_scripttags.



25
26
27
# File 'lib/duodealer_app/managers/scripttags_manager.rb', line 25

def required_scripttags
  @required_scripttags
end

#shop_domainObject (readonly)

Returns the value of attribute shop_domain.



25
26
27
# File 'lib/duodealer_app/managers/scripttags_manager.rb', line 25

def shop_domain
  @shop_domain
end

Class Method Details

.build_src(scripttags, domain) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/duodealer_app/managers/scripttags_manager.rb', line 16

def self.build_src(scripttags, domain)
  scripttags.map do |tag|
    next tag unless tag[:src].respond_to?(:call)
    tag = tag.dup
    tag[:src] = tag[:src].call(domain)
    tag
  end
end

.queue(shop_domain, shop_token, scripttags) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/duodealer_app/managers/scripttags_manager.rb', line 7

def self.queue(shop_domain, shop_token, scripttags)
  DuodealerApp::ScripttagsManagerJob.perform_later(
    shop_domain: shop_domain,
    shop_token: shop_token,
    # Procs cannot be serialized so we interpolate now, if necessary
    scripttags: build_src(scripttags, shop_domain)
  )
end

Instance Method Details

#create_scripttagsObject



37
38
39
40
41
42
43
# File 'lib/duodealer_app/managers/scripttags_manager.rb', line 37

def create_scripttags
  return if required_scripttags.blank?

  expanded_scripttags.each do |scripttag|
    create_scripttag(scripttag) unless scripttag_exists?(scripttag[:src])
  end
end

#destroy_scripttagsObject



45
46
47
48
49
50
51
52
# File 'lib/duodealer_app/managers/scripttags_manager.rb', line 45

def destroy_scripttags
  scripttags = expanded_scripttags
  DuodealerAPI::ScriptTag.all.each do |tag|
    DuodealerAPI::ScriptTag.delete(tag.id) if is_required_scripttag?(scripttags, tag)
  end

  @current_scripttags = nil
end

#recreate_scripttags!Object



32
33
34
35
# File 'lib/duodealer_app/managers/scripttags_manager.rb', line 32

def recreate_scripttags!
  destroy_scripttags
  create_scripttags
end