lws 0.4.2 → 6.1.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/lws/ticket.rb CHANGED
@@ -20,7 +20,7 @@ module LWS::Ticket
20
20
  end
21
21
  # :nocov:
22
22
 
23
- #@!visibility private
23
+ # @!visibility private
24
24
  def self.api
25
25
  LWS.setup_api(LWS.config.endpoints[:ticket] ||
26
26
  ENDPOINT[LWS.config.environment])
@@ -33,244 +33,297 @@ module LWS::Ticket
33
33
  use_api LWS::Ticket.api
34
34
  end
35
35
 
36
- # (see Generic::Task)
37
- class Task < LWS::Generic::Task
38
- use_api LWS::Ticket.api
39
- end
40
-
41
36
  ### App specific classes
42
37
 
43
- # = The ticket class
44
- class Ticket < LWS::Generic::Model
38
+ # = The ticket message attachment class
39
+ class Attachment < LWS::Generic::Model
45
40
  use_api LWS::Ticket.api
46
41
 
47
- #@!attribute id [r]
48
- # @return [Fixnum] the (unique) ID of the ticket
49
-
50
- #@!attribute account
51
- # @return [LWS::Auth::Account] the account of the user that created the
52
- # ticket
53
- belongs_to :account, class_name: "LWS::Auth::Account"
54
-
55
- #@!attribute account_id
56
- # @return [Fixnum] the ID of the account of the user that created the
57
- # ticket
58
-
59
- #@!attribute assignee
60
- # @return [LWS::Auth::Account] the account of the user that the ticket
61
- # is assigned to
62
- belongs_to :assignee, class_name: "LWS::Auth::Account"
63
-
64
- #@!attribute assignee_id
65
- # @return [Fixnum] the ID of the account of the user that the ticket
66
- # is assigned to
67
-
68
- #@!attribute company
69
- # @return [LWS::Auth::Company] the company of the user that created
70
- # the ticket
71
- belongs_to :company, class_name: "LWS::Auth::Company"
72
-
73
- #@!attribute company_id
74
- # @return [Fixnum] the ID of the company of the user that created the
75
- # ticket
76
-
77
- #@!attribute description
78
- # @return [String] the description (body) of the ticket
42
+ # @!attribute id [r]
43
+ # @return [Fixnum] the (unique) ID of the ticket message attachment
44
+ attribute :id
79
45
 
80
- #@!attribute display_name
81
- # @return [String] the name of the object the ticket is created for
46
+ # @!attribute av_scanned_at
47
+ # @return [String, nil] the timestamp of when an anti-virus scan on the
48
+ # attached file was performed
49
+ attribute :av_scanned_at
82
50
 
83
- #@!attribute due_date
84
- # @return [String] the timestamp of when the ticket is due
85
-
86
- #@!attribute group
87
- # @return [String] the group (e.g. department/ticket type) the ticket
88
- # belongs to
89
- belongs_to :group
51
+ # @!attribute file_object
52
+ # @return [String] the URL of the attachment file object
53
+ attribute :file_object
90
54
 
91
- #@!attribute group_id
92
- # @return [Fixnum] the ID of the group the ticket belongs to
93
-
94
- #@!attribute messages
95
- # @return [Array<Message>] the messages associated with the ticket
96
- has_many :messages
55
+ # @!attribute message
56
+ # @return [Message] the ticket message associated with the attachment
57
+ belongs_to :message
97
58
 
98
- #@!attribute owner
99
- # @return [LWS::Auth::Company] the company that is currently handling
100
- # the ticket
101
- belongs_to :owner, class_name: "LWS::Auth::Company"
59
+ # @!attribute message_id
60
+ # @return [Fixnum] the ID of the ticket message associated with the
61
+ # attachment
62
+ attribute :message_id
63
+
64
+ # @!attribute name
65
+ # @return [String] the name of the attachment
66
+ attribute :name
67
+
68
+ # @!attribute size
69
+ # @return [Fixnum] the size of the attachment (bytes)
70
+ attribute :size
71
+
72
+ # @!attribute url
73
+ # @return [String] the URL to the attachment that can be used to
74
+ # download it
75
+ attribute :url
76
+
77
+ # @!attribute created_at [r]
78
+ # @return [String] the timestamp of when the ticket message attachment
79
+ # was created
80
+ attribute :created_at
81
+
82
+ # @!attribute updated_at [r]
83
+ # @return [String] the timestamp of when the ticket message attachment
84
+ # was last updated
85
+ attribute :updated_at
86
+ end
102
87
 
103
- #@!attribute owner_id
104
- # @return [Fixnum] the ID of the company that is currently handling
105
- # the ticket
88
+ # = The ticket group class
89
+ class Group < LWS::Generic::Model
90
+ use_api LWS::Ticket.api
106
91
 
107
- #@!attribute priority
108
- # @return [Fixnum] the priority (ID) of the ticket
92
+ # @!attribute id [r]
93
+ # @return [Fixnum] the (unique) ID of the ticket group
94
+ attribute :id
109
95
 
110
- #@!attribute status
111
- # @return [Fixnum] the current ticket status (ID)
112
-
113
- #@!attribute tags
114
- # @return [Array<Tag>] the tags associated with the ticket
115
- has_many :tags
96
+ # @!attribute name
97
+ # @return [String] the name of the ticket group
98
+ attribute :name
116
99
 
117
- #@!attribute target
118
- # The target is a string that consists of three parts joined by a dot.
119
- # It is the name of the app, followed by the model name, followed
120
- # by the model ID. This can be resolved into the object the ticket
121
- # is created for/on.
122
- #
123
- # @return [String] the target of the ticket
100
+ # @!attribute slug [r]
101
+ # @return [String] the slug of the ticket group
102
+ attribute :slug
124
103
 
125
- #@!attribute title
126
- # @return [String] the title (short description) of the ticket
104
+ # @!attribute tickets
105
+ # @return [Array<Ticket>] the tickets that are assigned to the ticket
106
+ # group
107
+ has_many :tickets
127
108
 
128
- #@!attribute created_at
129
- # @return [String] the timestamp of when the ticket was created
109
+ # @!attribute created_at [r]
110
+ # @return [String] the timestamp of when the ticket group was created
111
+ attribute :created_at
130
112
 
131
- #@!attribute updated_at
132
- # @return [String] the timestamp of when the ticket was last updated
113
+ # @!attribute updated_at [r]
114
+ # @return [String] the timestamp of when the ticket group was last updated
115
+ attribute :updated_at
133
116
  end
134
117
 
135
118
  # = The ticket message class
136
119
  class Message < LWS::Generic::Model
137
120
  use_api LWS::Ticket.api
138
121
 
139
- #@!attribute id [r]
140
- # @return [Fixnum] the (unique) ID of the ticket message
122
+ # @!attribute id [r]
123
+ # @return [Fixnum] the (unique) ID of the ticket message
124
+ attribute :id
141
125
 
142
- #@!attribute account
143
- # @return [LWS::Auth::Account] the account of the user that created the
144
- # ticket message
126
+ # @!attribute account
127
+ # @return [LWS::Auth::Account] the account of the user that created the
128
+ # ticket message
145
129
  belongs_to :account, class_name: "LWS::Auth::Account"
146
130
 
147
- #@!attribute account_id
148
- # @return [Fixnum] the ID of the account of the user that created the
149
- # ticket message
131
+ # @!attribute account_id
132
+ # @return [Fixnum] the ID of the account of the user that created the
133
+ # ticket message
134
+ attribute :account_id
150
135
 
151
- #@!attribute attachments
152
- # @return [Array<Attachment>] the attachments associated with the ticket
153
- # message
136
+ # @!attribute attachments
137
+ # @return [Array<Attachment>] the attachments associated with the ticket
138
+ # message
154
139
  has_many :attachments
155
140
 
156
- #@!attribute company
157
- # @return [LWS::Auth::Company] the company of the user that created
158
- # the ticket message
141
+ # @!attribute company
142
+ # @return [LWS::Auth::Company] the company of the user that created
143
+ # the ticket message
159
144
  belongs_to :company, class_name: "LWS::Auth::Company"
160
145
 
161
- #@!attribute company_id
162
- # @return [Fixnum] the ID of the company of the user that created the
163
- # ticket message
146
+ # @!attribute company_id
147
+ # @return [Fixnum] the ID of the company of the user that created the
148
+ # ticket message
149
+ attribute :company_id
150
+
151
+ # @!attribute internal
152
+ # @return [Boolean] whether the message is internal, i.e. not visible
153
+ # for descendant companies
154
+ attribute :internal
164
155
 
165
- #@!attribute message
166
- # @return [String] the ticket message body
156
+ # @!attribute message
157
+ # @return [String] the ticket message body
158
+ attribute :message
167
159
 
168
- #@!attribute status
169
- # @return [Fixnum] the new ticket status (ID) set by the message
160
+ # @!attribute status
161
+ # @return [Fixnum] the new ticket status (ID) set by the message
162
+ attribute :status
170
163
 
171
- #@!attribute ticket
172
- # @return [Ticket] the ticket associated with the message
164
+ # @!attribute ticket
165
+ # @return [Ticket] the ticket associated with the message
173
166
  belongs_to :ticket
174
167
 
175
- #@!attribute ticket_id
176
- # @return [Fixnum] the ID of the ticket associated with the message
177
-
178
- #@!attribute created_at
179
- # @return [String] the timestamp of when the ticket message was created
168
+ # @!attribute ticket_id
169
+ # @return [Fixnum] the ID of the ticket associated with the message
170
+ attribute :ticket_id
180
171
 
181
- #@!attribute updated_at
182
- # @return [String] the timestamp of when the ticket message was last
183
- # updated
172
+ # @!attribute created_at [r]
173
+ # @return [String] the timestamp of when the ticket message was created
174
+ attribute :created_at
175
+
176
+ # @!attribute updated_at [r]
177
+ # @return [String] the timestamp of when the ticket message was last
178
+ # updated
179
+ attribute :updated_at
184
180
  end
185
181
 
186
- # = The ticket message attachment class
187
- class Attachment < LWS::Generic::Model
182
+ # = The ticket tag class
183
+ class Tag < LWS::Generic::Model
188
184
  use_api LWS::Ticket.api
189
185
 
190
- #@!attribute id [r]
191
- # @return [Fixnum] the (unique) ID of the ticket message attachment
186
+ # @!attribute id [r]
187
+ # @return [Fixnum] the (unique) ID of the ticket tag
188
+ attribute :id
192
189
 
193
- #@!attribute av_scanned_at
194
- # @return [String] the timestamp of when an anti-virus scan on the attached
195
- # file was performed
190
+ # @!attribute description
191
+ # @return [String, nil] the description of the ticket tag
192
+ attribute :description
196
193
 
197
- #@!attribute message
198
- # @return [Message] the ticket message associated with the attachment
199
- belongs_to :message
194
+ # @!attribute dev_issue_id
195
+ # @return [Fixnum, nil] the ID of the issue in LeftClick's internal bug
196
+ # tracking system
197
+ attribute :dev_issue_id
200
198
 
201
- #@!attribute message_id
202
- # @return [Fixnum] the ID of the ticket message associated with the
203
- # attachment
199
+ # @!attribute name
200
+ # @return [String] the name of the ticket tag
201
+ attribute :name
204
202
 
205
- #@!attribute name
206
- # @return [String] the name of the attachment
203
+ # @!attribute slug [r]
204
+ # @return [String] the slug of the ticket tag
205
+ attribute :slug
207
206
 
208
- #@!attribute size
209
- # @return [Fixnum] the size of the attachment (bytes)
207
+ # @!attribute tickets
208
+ # @return [Array<Ticket>] the ticket associated with the tag
209
+ has_many :tickets
210
210
 
211
- #@!attribute text
212
- # @return [String] the file object attached
213
-
214
- #@!attribute created_at
215
- # @return [String] the timestamp of when the ticket message attachment
216
- # was created
211
+ # @!attribute created_at [r]
212
+ # @return [String] the timestamp of when the ticket tag was created
213
+ attribute :created_at
217
214
 
218
- #@!attribute updated_at
219
- # @return [String] the timestamp of when the ticket message attachment
220
- # was last updated
215
+ # @!attribute updated_at [r]
216
+ # @return [String] the timestamp of when the ticket tag was last updated
217
+ attribute :updated_at
221
218
  end
222
219
 
223
- # = The ticket group class
224
- class Group < LWS::Generic::Model
220
+ # = The ticket class
221
+ class Ticket < LWS::Generic::Model
225
222
  use_api LWS::Ticket.api
226
223
 
227
- #@!attribute id [r]
228
- # @return [Fixnum] the (unique) ID of the ticket group
224
+ # @!attribute id [r]
225
+ # @return [Fixnum] the (unique) ID of the ticket
226
+ attribute :id
229
227
 
230
- #@!attribute name
231
- # @return [String] the name of the ticket group
228
+ # @!attribute account
229
+ # @return [LWS::Auth::Account] the account of the user that created the
230
+ # ticket
231
+ belongs_to :account, class_name: "LWS::Auth::Account"
232
232
 
233
- #@!attribute slug
234
- # @return [String] the slug of the ticket group
235
-
236
- #@!attribute created_at
237
- # @return [String] the timestamp of when the ticket group was created
233
+ # @!attribute account_id
234
+ # @return [Fixnum] the ID of the account of the user that created the
235
+ # ticket
236
+ attribute :account_id
237
+
238
+ # @!attribute assignee
239
+ # @return [LWS::Auth::Account, nil] the account of the user that the
240
+ # ticket is assigned to
241
+ belongs_to :assignee, class_name: "LWS::Auth::Account",
242
+ uri: "accounts/:id"
243
+
244
+ # @!attribute assignee_id
245
+ # @return [Fixnum, nil] the ID of the account of the user that the
246
+ # ticket is assigned to
247
+ attribute :assignee_id
248
+
249
+ # @!attribute company
250
+ # @return [LWS::Auth::Company] the company of the user that created
251
+ # the ticket
252
+ belongs_to :company, class_name: "LWS::Auth::Company"
238
253
 
239
- #@!attribute updated_at
240
- # @return [String] the timestamp of when the ticket group was last updated
254
+ # @!attribute company_id
255
+ # @return [Fixnum] the ID of the company of the user that created the
256
+ # ticket
257
+ attribute :company_id
241
258
 
242
- self # To ensure that YARD does not skip the attributes of this class
243
- end
259
+ # @!attribute description
260
+ # @return [String, nil] the description (body) of the ticket
261
+ attribute :description
244
262
 
245
- # = The ticket tag class
246
- class Tag < LWS::Generic::Model
247
- use_api LWS::Ticket.api
263
+ # @!attribute display_name
264
+ # @return [String] the name of the object the ticket is created for
265
+ attribute :display_name
248
266
 
249
- #@!attribute id [r]
250
- # @return [Fixnum] the (unique) ID of the ticket tag
267
+ # @!attribute due_date
268
+ # @return [String, nil] the timestamp of when the ticket is due
269
+ attribute :due_date
251
270
 
252
- #@!attribute description
253
- # @return [String] the description of the ticket tag
271
+ # @!attribute group
272
+ # @return [Group] the group (e.g. department/ticket type) the ticket
273
+ # belongs to
274
+ belongs_to :group
254
275
 
255
- #@!attribute dev_issue_id
256
- # @return [Fixnum] the ID of the issue in LeftClick's internal bug
257
- # tracking system
276
+ # @!attribute group_id
277
+ # @return [Fixnum] the ID of the group the ticket belongs to
278
+ attribute :group_id
258
279
 
259
- #@!attribute name
260
- # @return [String] the name of the ticket tag
280
+ # @!attribute messages
281
+ # @return [Array<Message>] the messages associated with the ticket
282
+ has_many :messages
261
283
 
262
- #@!attribute slug
263
- # @return [String] the slug of the ticket tag
284
+ # @!attribute owner
285
+ # @return [LWS::Auth::Company] the company that is currently handling
286
+ # the ticket
287
+ belongs_to :owner, class_name: "LWS::Auth::Company",
288
+ uri: "companies/:id"
264
289
 
265
- #@!attribute ticket
266
- # @return [Ticket] the ticket associated with the tag
267
- belongs_to :ticket
268
-
269
- #@!attribute created_at
270
- # @return [String] the timestamp of when the ticket tag was created
290
+ # @!attribute owner_id
291
+ # @return [Fixnum] the ID of the company that is currently handling
292
+ # the ticket
293
+ attribute :owner_id
294
+
295
+ # @!attribute priority
296
+ # @return [Fixnum] the priority (ID) of the ticket
297
+ attribute :priority
298
+
299
+ # @!attribute status
300
+ # @return [Fixnum] the current ticket status (ID)
301
+ attribute :status
302
+
303
+ # @!attribute tags
304
+ # @return [Array<Tag>] the tags associated with the ticket
305
+ has_many :tags
306
+
307
+ # @!attribute target
308
+ # The target is a string that consists of three parts joined by a dot.
309
+ # It is the name of the app, followed by the model name, followed
310
+ # by the model ID. This can be resolved into the object the ticket
311
+ # is created for/on.
312
+ #
313
+ # @return [String] the target of the ticket
314
+ attribute :target
315
+
316
+ # @!attribute title
317
+ # @return [String] the title (short description) of the ticket
318
+ attribute :title
319
+
320
+ # @!attribute created_at [r]
321
+ # @return [String] the timestamp of when the ticket was created
322
+ attribute :created_at
271
323
 
272
- #@!attribute updated_at
273
- # @return [String] the timestamp of when the ticket tag was last updated
324
+ # @!attribute updated_at [r]
325
+ # @return [String] the timestamp of when the ticket was last updated
326
+ attribute :updated_at
274
327
  end
275
328
 
276
329
  end
data/lib/lws/version.rb CHANGED
@@ -12,7 +12,7 @@
12
12
  module LWS
13
13
 
14
14
  # The LWS library version.
15
- # @note This is not the API version!
16
- VERSION = '0.4.2'
15
+ # @note The major and minor version parts match the LWS API version!
16
+ VERSION = '6.1.0.beta1'
17
17
 
18
18
  end
data/lib/lws.rb CHANGED
@@ -11,8 +11,8 @@
11
11
 
12
12
  require "faraday_middleware"
13
13
  require "hashie"
14
- require "her"
15
14
  require "multi_json"
15
+ require "spyke"
16
16
  require "pp"
17
17
  require "webmock"
18
18
 
@@ -31,23 +31,43 @@ module LWS
31
31
 
32
32
  # The list of supported apps (web service libraries) loaded by
33
33
  # {.setup}.
34
- SUPPORTED_APPS = [:generic, :auth, :corporate_website, :maps, :presence,
35
- :ticket]
34
+ SUPPORTED_APPS = [:generic, :auth, :corporate_website, :digital_signage,
35
+ :maps, :presence, :ticket]
36
+
37
+ # @private
38
+ # @!visibility private
39
+ class JSONParser < Faraday::Response::Middleware
40
+ def parse(body)
41
+ data = MultiJson.load(body, symbolize_keys: true)
42
+ metadata = data.delete(:metadata)
43
+ errors = data.delete(:errors)
44
+
45
+ # If there are errors, discard the data.
46
+ data = nil if errors.present?
47
+
48
+ { data: data,
49
+ metadata: metadata,
50
+ errors: errors }
51
+ end
52
+ end
36
53
 
37
54
  # @private
38
55
  # @!visibility private
39
56
  class HTTPLogger < Faraday::Response::Middleware
40
57
 
41
- def initialize(app, logger)
58
+ def initialize(app, logger, show_headers)
42
59
  raise "cannot log HTTP requests without a logger" if logger.nil?
43
60
  @logger = logger
61
+ @show_headers = show_headers
44
62
  super(app)
45
63
  end
46
64
 
47
65
  def call(env)
48
66
  @logger.debug ">>> #{env[:method].upcase} #{env[:url].to_s}"
49
- env[:request_headers].each do |hdr, val|
50
- @logger.debug " #{hdr}: #{val}"
67
+ if @show_headers
68
+ env[:request_headers].each do |hdr, val|
69
+ @logger.debug " #{hdr}: #{val}"
70
+ end
51
71
  end
52
72
  @logger.debug ">>> #{env[:body] || "nil"}"
53
73
  super
@@ -56,8 +76,10 @@ module LWS
56
76
  def on_complete(env)
57
77
  super
58
78
  @logger.debug "<<< HTTP #{env[:status].to_s}"
59
- env[:response_headers].each do |hdr, val|
60
- @logger.debug " #{hdr}: #{val}"
79
+ if @show_headers
80
+ env[:response_headers].each do |hdr, val|
81
+ @logger.debug " #{hdr}: #{val}"
82
+ end
61
83
  end
62
84
  @logger.debug "<<< #{env[:body] || "nil"}"
63
85
  end
@@ -75,7 +97,7 @@ module LWS
75
97
  end
76
98
 
77
99
  def on_complete(env)
78
- dump = MultiJson.dump(env[:body], pretty: true)
100
+ dump = JSON.pretty_generate(env[:body])
79
101
  dump.split("\n").each { |line| @logger.debug "||| #{line}" }
80
102
  end
81
103
 
@@ -135,6 +157,10 @@ module LWS
135
157
  # @return [Boolean] whether to show HTTP debug messages
136
158
  property :http_debug, default: false
137
159
 
160
+ #@!attribute http_debug_headers
161
+ # @return [Boolean] whether to show HTTP headers in the debug messages
162
+ property :http_debug_headers, default: false
163
+
138
164
  #@!attribute json_debug
139
165
  # @return [Boolean] whether to show JSON debug messages
140
166
  property :json_debug, default: false
@@ -161,6 +187,10 @@ module LWS
161
187
  # config.logger = Rails.logger
162
188
  # end
163
189
  #
190
+ # A default value for the API token can be set using the
191
+ # +LC_LWS_API_TOKEN+ environment variable. The default environment can
192
+ # be overriden using the +LC_LWS_ENV+ environment variable.
193
+ #
164
194
  # @yieldparam [Config] config an API configuration object that can be
165
195
  # configured
166
196
  # @raise if API token is not configured
@@ -169,8 +199,10 @@ module LWS
169
199
  @@config = Config.new
170
200
  yield @@config
171
201
 
172
- if config.api_token.blank? and config.api_token_middleware.blank?
173
- raise "API token or API token middleware is required"
202
+ # Override the API token if needed (and no custom API token middleware
203
+ # is used)
204
+ if ENV["LC_LWS_API_TOKEN"].present?
205
+ @@config.api_token = ENV["LC_LWS_API_TOKEN"]
174
206
  end
175
207
 
176
208
  # Override the environment if needed
@@ -178,6 +210,10 @@ module LWS
178
210
  @@config.environment = ENV["LC_LWS_ENV"].to_sym
179
211
  end
180
212
 
213
+ if config.api_token.blank? and config.api_token_middleware.blank?
214
+ raise "API token or API token middleware is required"
215
+ end
216
+
181
217
  load_app_modules
182
218
  load_stubbing
183
219
 
@@ -186,30 +222,43 @@ module LWS
186
222
 
187
223
  # @private
188
224
  # @!visibility private
225
+ #
226
+ # Sets up the Faraday API object with the current LWS configuration for
227
+ # the given API URL.
228
+ #
229
+ # @param api_url The endpoint URL of the API
230
+ # @return [Faraday] A Faraday connection that makes requests to the API
189
231
  def self.setup_api(api_url)
190
- api = Her::API.new
191
- api.setup(url: api_url) do |c|
232
+ api = Faraday.new(url: api_url) do |c|
192
233
  # Request
193
234
  if config.caching_object
194
235
  c.use FaradayMiddleware::Caching, config.caching_object
195
236
  end
196
237
  c.use RequestHeaders, config.api_token
197
238
  c.use config.api_token_middleware if config.api_token_middleware.present?
198
- c.use Faraday::Request::UrlEncoded
239
+ c.request :json
199
240
 
200
241
  # Response
201
242
  c.use JSONLogger, config.logger if config.json_debug
202
- c.use Her::Middleware::DefaultParseJSON
243
+ c.use JSONParser
203
244
  c.use FaradayMiddleware::FollowRedirects, limit: 3
204
- c.use HTTPLogger, config.logger if config.http_debug
245
+ c.use HTTPLogger, config.logger, config.http_debug_headers if config.http_debug
205
246
 
206
247
  # Adapter
207
- c.use Faraday::Adapter::NetHttp
248
+ c.adapter Faraday.default_adapter
208
249
  end
209
250
 
210
251
  return api
211
252
  end
212
253
 
254
+ # Returns the app module for the given app name.
255
+ #
256
+ # @param app_name [String, Symbol] the app name
257
+ # @return [Module] the app module
258
+ def self.app_module(app_name)
259
+ @app_modules[app_name.to_sym]
260
+ end
261
+
213
262
  # (Re)loads the app modules (usually done by {.setup}).
214
263
  #
215
264
  # @return [Array<Symbol>] the apps that were loaded
@@ -235,12 +284,4 @@ module LWS
235
284
  end
236
285
  end
237
286
 
238
- # Returns the app module for the given app name.
239
- #
240
- # @param app_name [String, Symbol] the app name
241
- # @return [Module] the app module
242
- def self.app_module(app_name)
243
- @app_modules[app_name.to_sym]
244
- end
245
-
246
287
  end # module LWS