Class: BooticCli::Themes::APITheme
- Inherits:
-
Object
- Object
- BooticCli::Themes::APITheme
show all
- Defined in:
- lib/bootic_cli/themes/api_theme.rb
Defined Under Namespace
Classes: EntityErrors, EntityTooLargeError, InvalidRequest, RequestFailed, UnknownResponse
Instance Method Summary
collapse
Constructor Details
#initialize(theme) ⇒ APITheme
Returns a new instance of APITheme.
49
50
51
52
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 49
def initialize(theme)
@theme = theme
puts "Entity has errors: #{theme.errors.map(&:messages).join(', ')}" if theme.has?(:errors)
end
|
Instance Method Details
#add_asset(file_name, file) ⇒ Object
123
124
125
126
127
128
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 123
def add_asset(file_name, file)
check_errors! theme.create_theme_asset(
file_name: file_name,
data: file
)
end
|
#add_template(file_name, body) ⇒ Object
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 98
def add_template(file_name, body)
params = {
file_name: file_name,
body: body
}
if ts = get_updated_on(file_name)
params.merge!(last_updated_on: ts.to_i)
end
check_errors!(theme.create_template(params)).tap do |entity|
template_updated(file_name, entity)
end
end
|
#assets ⇒ Object
94
95
96
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 94
def assets
@assets ||= theme.assets.map { |t| APIAsset.new(t) }
end
|
#delete! ⇒ Object
70
71
72
73
74
75
76
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 70
def delete!
if theme.can?(:delete_theme)
res = theme.delete_theme
return res.status <= 204
end
false
end
|
#dev? ⇒ Boolean
59
60
61
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 59
def dev?
theme.can?(:publish_theme)
end
|
#path ⇒ Object
78
79
80
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 78
def path
theme.rels[:theme_preview].href
end
|
#public? ⇒ Boolean
this is unique to API themes
55
56
57
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 55
def public?
!dev?
end
|
#publish(opts = {}) ⇒ Object
63
64
65
66
67
68
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 63
def publish(opts = {})
if theme.can?(:publish_theme)
@theme = theme.publish_theme(opts)
reload!(false)
end
end
|
#reload!(refetch = true) ⇒ Object
Implement generic Theme interface
83
84
85
86
87
88
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 83
def reload!(refetch = true)
@templates = nil
@assets = nil
@theme = theme.self if refetch
self
end
|
#remove_asset(file_name) ⇒ Object
130
131
132
133
134
135
136
137
138
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 130
def remove_asset(file_name)
asset = theme.assets.find { |t| t.file_name == file_name }
if asset and asset.can?(:delete_theme_asset)
res = asset.delete_theme_asset
res.status.to_i < 300
else
puts "Cannot delete asset: #{file_name}"
end
end
|
#remove_template(file_name) ⇒ Object
113
114
115
116
117
118
119
120
121
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 113
def remove_template(file_name)
tpl = theme.templates.find { |t| t.file_name == file_name }
if tpl && tpl.can?(:delete_template)
res = tpl.delete_template
res.status.to_i < 300
else
puts "Cannot delete #{file_name}"
end
end
|
#templates ⇒ Object
90
91
92
|
# File 'lib/bootic_cli/themes/api_theme.rb', line 90
def templates
@templates ||= theme.templates.map { |t| ItemWithTime.new(t) }
end
|