lws 6.3.2 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lws/apps/digital_signage.rb +1 -34
- data/lib/lws/apps/generic.rb +3 -15
- data/lib/lws/apps/presence.rb +41 -10
- data/lib/lws/version.rb +1 -1
- data/test/caching_test.rb +3 -3
- data/test/digital_signage_test.rb +2 -2
- data/test/presence_test.rb +3 -0
- metadata +18 -26
- data/.gitignore +0 -16
- data/.yardopts +0 -8
- data/CHANGELOG.md +0 -162
- data/Gemfile +0 -4
- data/README.md +0 -154
- data/Rakefile +0 -75
- data/copyright.txt +0 -9
- data/lws.gemspec +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc635406b8325652b128c7214d332b1686fbd4ba0fee74bc4c8716d75d3a349a
|
4
|
+
data.tar.gz: 93953a65dec58a2a509866b4f0252d2c7e4a68227e09258f3376d946c5503ae6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65fe4cc5990944a1512cbcd73868b76268f5fdc937ae5de344e57a7a4a5f05abe38256bc4d8d057a0e505871caa9f45dceb3fd859e9616a61afed5b3853c29fd
|
7
|
+
data.tar.gz: 60bba2e6c25ad035deb2193dc93cc9f3553364ea9bf7b0997e19f422ce5e8575118c143a7cf7862ce96b4dd47d515b0c46b17d2cb398a5f5d0328f26f119c96e
|
@@ -485,10 +485,6 @@ module LWS::DigitalSignage
|
|
485
485
|
class Layout < LWS::Generic::Model
|
486
486
|
use_api LWS::DigitalSignage.api
|
487
487
|
|
488
|
-
# @!attribute id [r]
|
489
|
-
# @return [Integer] the (unique) ID of the layout
|
490
|
-
attribute :id
|
491
|
-
|
492
488
|
# @!attribute categories
|
493
489
|
# @return [Array<Layout::Category>] the categories associated with
|
494
490
|
# the layout
|
@@ -565,10 +561,6 @@ module LWS::DigitalSignage
|
|
565
561
|
use_api LWS::DigitalSignage.api
|
566
562
|
uri "layout/categories(/:id)"
|
567
563
|
|
568
|
-
# @!attribute id [r]
|
569
|
-
# @return [Integer] the (unique) ID of the layout category
|
570
|
-
attribute :id
|
571
|
-
|
572
564
|
# @!attribute description
|
573
565
|
# @return [String, nil] the description of the layout category
|
574
566
|
attribute :description
|
@@ -592,10 +584,6 @@ module LWS::DigitalSignage
|
|
592
584
|
class Layout::Element < LWS::Generic::Model
|
593
585
|
use_api LWS::DigitalSignage.api
|
594
586
|
|
595
|
-
# @!attribute id [r]
|
596
|
-
# @return [Integer] the (unique) ID of the layout element
|
597
|
-
attribute :id
|
598
|
-
|
599
587
|
# @!attribute asset_storage_ids
|
600
588
|
# @return [Array<String>] the storage IDs of the assets of the layout element
|
601
589
|
attribute :asset_storage_ids
|
@@ -650,11 +638,6 @@ module LWS::DigitalSignage
|
|
650
638
|
class Layout::Element::Customizable < LWS::Generic::Model
|
651
639
|
use_api LWS::DigitalSignage.api
|
652
640
|
|
653
|
-
# @!attribute id [r]
|
654
|
-
# @return [Integer] the (unique) ID of the layout element customizable
|
655
|
-
# property
|
656
|
-
attribute :id
|
657
|
-
|
658
641
|
# @!attribute attr
|
659
642
|
# @return [String] the customizable attribute/property name
|
660
643
|
attribute :attr
|
@@ -691,10 +674,6 @@ module LWS::DigitalSignage
|
|
691
674
|
class Layout::Element::Property < LWS::Generic::Model
|
692
675
|
use_api LWS::DigitalSignage.api
|
693
676
|
|
694
|
-
# @!attribute id [r]
|
695
|
-
# @return [Integer] the (unique) ID of the layout element property
|
696
|
-
attribute :id
|
697
|
-
|
698
677
|
# @!attribute attr
|
699
678
|
# @return [String] the attribute/property name
|
700
679
|
attribute :attr
|
@@ -723,11 +702,7 @@ module LWS::DigitalSignage
|
|
723
702
|
# This class is only used within the context of the {Layout} class.
|
724
703
|
class Layout::Version < LWS::Generic::Model
|
725
704
|
use_api LWS::DigitalSignage.api
|
726
|
-
uri "layout/
|
727
|
-
|
728
|
-
# @!attribute id [r]
|
729
|
-
# @return [Integer] the (unique) ID of the layout version
|
730
|
-
attribute :id
|
705
|
+
uri "layout/:layout_id/versions(/:id)"
|
731
706
|
|
732
707
|
# @!attribute elements
|
733
708
|
# @return [Array<Layout::Element>] the elements contained in the layout
|
@@ -1702,10 +1677,6 @@ module LWS::DigitalSignage
|
|
1702
1677
|
class Slide < LWS::Generic::Model
|
1703
1678
|
use_api LWS::DigitalSignage.api
|
1704
1679
|
|
1705
|
-
# @!attribute id [r]
|
1706
|
-
# @return [Integer] the (unique) ID of the slide
|
1707
|
-
attribute :id
|
1708
|
-
|
1709
1680
|
# @!attribute account
|
1710
1681
|
# @return [LWS::Auth::Account] the account used for creating the slide
|
1711
1682
|
belongs_to :account, class_name: "LWS::Auth::Account"
|
@@ -1748,10 +1719,6 @@ module LWS::DigitalSignage
|
|
1748
1719
|
class Slide::Schedule < LWS::Generic::Model
|
1749
1720
|
use_api LWS::DigitalSignage.api
|
1750
1721
|
|
1751
|
-
# @!attribute id [r]
|
1752
|
-
# @return [Integer] the (unique) ID of the slide schedule
|
1753
|
-
attribute :id
|
1754
|
-
|
1755
1722
|
# @!attribute date_end
|
1756
1723
|
# @return [Date] the date after which the slide schedule becomes inactive
|
1757
1724
|
attribute :date_end
|
data/lib/lws/apps/generic.rb
CHANGED
@@ -92,15 +92,15 @@ module LWS::Generic
|
|
92
92
|
attribute :id
|
93
93
|
|
94
94
|
# @!attribute created_at [r]
|
95
|
-
# @return [String] the timestamp of when the
|
95
|
+
# @return [String] the timestamp of when the model was created
|
96
96
|
attribute :created_at
|
97
97
|
|
98
98
|
# @!attribute updated_at [r]
|
99
|
-
# @return [String] the timestamp of when the
|
99
|
+
# @return [String] the timestamp of when the model was last updated
|
100
100
|
attribute :updated_at
|
101
101
|
|
102
102
|
# @!attribute url [r]
|
103
|
-
# @return [String] the URL of the model
|
103
|
+
# @return [String] the URL of the model on the REST API
|
104
104
|
attribute :url
|
105
105
|
|
106
106
|
# @!attribute url_html [r]
|
@@ -165,10 +165,6 @@ module LWS::Generic
|
|
165
165
|
|
166
166
|
# = The configuration class
|
167
167
|
class Configuration < Model
|
168
|
-
# @!attribute id [r]
|
169
|
-
# @return [Integer] the (unique) ID of the configuration
|
170
|
-
attribute :id
|
171
|
-
|
172
168
|
# @!attribute key
|
173
169
|
# @return [String] the configuration key
|
174
170
|
attribute :key
|
@@ -176,14 +172,6 @@ module LWS::Generic
|
|
176
172
|
# @!attribute value
|
177
173
|
# @return [String] the configuration value
|
178
174
|
attribute :value
|
179
|
-
|
180
|
-
# @!attribute created_at [r]
|
181
|
-
# @return [String] the timestamp of when the configuration was created
|
182
|
-
attribute :created_at
|
183
|
-
|
184
|
-
# @!attribute updated_at [r]
|
185
|
-
# @return [String] the timestamp of when the configuration was last updated
|
186
|
-
attribute :updated_at
|
187
175
|
end
|
188
176
|
|
189
177
|
# = The storage class
|
data/lib/lws/apps/presence.rb
CHANGED
@@ -128,6 +128,11 @@ module LWS::Presence
|
|
128
128
|
# including descendant locations
|
129
129
|
attribute :capacity_used_precentage_tree
|
130
130
|
|
131
|
+
# @!attribute checkin_status
|
132
|
+
# @return ["available", "busy", "away", "disabled", nil]
|
133
|
+
# the presence status to set people to when checking in
|
134
|
+
attribute :checkin_status
|
135
|
+
|
131
136
|
# @!attribute checkout_location
|
132
137
|
# @return [Location, nil] the location to move people to when they
|
133
138
|
# are checked out
|
@@ -157,8 +162,9 @@ module LWS::Presence
|
|
157
162
|
attribute :lat
|
158
163
|
|
159
164
|
# @!attribute logoff_time
|
165
|
+
# The format of the time is +HH:MM+ and should be interpreted in the time zone
|
166
|
+
# of the location (see also {#time_zone}).
|
160
167
|
# @return [String] the time everybody is automatically logged off
|
161
|
-
# (format HH:MM)
|
162
168
|
attribute :logoff_time
|
163
169
|
|
164
170
|
# @!attribute long
|
@@ -215,6 +221,10 @@ module LWS::Presence
|
|
215
221
|
# @return [Array<Reader>] the (RFID/code/ID/...) readers linked to this location
|
216
222
|
has_many :readers
|
217
223
|
|
224
|
+
# @!attribute time_zone
|
225
|
+
# @return [String] the time zone of the location
|
226
|
+
attribute :time_zone
|
227
|
+
|
218
228
|
# @!attribute uuid
|
219
229
|
# @return [String] the UUID of the location
|
220
230
|
attribute :uuid
|
@@ -357,6 +367,13 @@ module LWS::Presence
|
|
357
367
|
# @return [Integer] the ID of the company the person belongs to
|
358
368
|
attribute :company_id
|
359
369
|
|
370
|
+
# @!attribute company_name
|
371
|
+
# @note
|
372
|
+
# This is not the name of the company the person belongs to, but
|
373
|
+
# possibly a guest/visitor working for another company!
|
374
|
+
# @return [String] the name of the company the person works for
|
375
|
+
attribute :company_name
|
376
|
+
|
360
377
|
# @!attribute customer_reference
|
361
378
|
# @return [String, nil] the customer specific reference for the person
|
362
379
|
attribute :customer_reference
|
@@ -392,10 +409,6 @@ module LWS::Presence
|
|
392
409
|
# @return [Float, nil] the exact latitude of the person's location
|
393
410
|
attribute :lat
|
394
411
|
|
395
|
-
# @!attribute long
|
396
|
-
# @return [Float, nil] the exact longitude of the person's location
|
397
|
-
attribute :long
|
398
|
-
|
399
412
|
# @!attribute location
|
400
413
|
# @return [Location] the location the person is located at
|
401
414
|
belongs_to :location
|
@@ -409,21 +422,39 @@ module LWS::Presence
|
|
409
422
|
# @return [Integer] the ID of the location the person is located at
|
410
423
|
attribute :location_id
|
411
424
|
|
425
|
+
# @!attribute long
|
426
|
+
# @return [Float, nil] the exact longitude of the person's location
|
427
|
+
attribute :long
|
428
|
+
|
412
429
|
# @!attribute name
|
413
430
|
# @return [String] the name of the person
|
414
431
|
attribute :name
|
415
432
|
|
433
|
+
# @!attribute people_responsible_for
|
434
|
+
# @return [Array<Person>] the people the person is responsible for
|
435
|
+
has_many :people_responsible_for, class_name: "LWS::Presence::Person"
|
436
|
+
|
437
|
+
# @!attribute person_responsible
|
438
|
+
# @return [Person, nil] the person responsible for this person
|
439
|
+
belongs_to :person_responsible, class_name: "LWS::Presence::Person",
|
440
|
+
foreign_key: "person_responsible_id",
|
441
|
+
uri: "people/:id"
|
442
|
+
|
443
|
+
# @!attribute person_responsible_id
|
444
|
+
# @return [Integer, nil] the ID of the person responsible for this person
|
445
|
+
attribute :person_responsible_id
|
446
|
+
|
447
|
+
# @!attribute phone_extension
|
448
|
+
# @return [String] the fixed phonenumber extension of the person
|
449
|
+
attribute :phone_extension
|
450
|
+
|
416
451
|
# @!attribute phone_fixed
|
417
452
|
# @return [String] the fixed phonenumber of the person
|
418
453
|
attribute :phone_fixed
|
419
454
|
|
420
455
|
# @!attribute phone_mobile
|
421
456
|
# @return [String] the mobile phonenumber of the person
|
422
|
-
attribute :
|
423
|
-
|
424
|
-
# @!attribute phone_extension
|
425
|
-
# @return [String] the fixed phonenumber extension of the person
|
426
|
-
attribute :phone_extension
|
457
|
+
attribute :phone_mobile
|
427
458
|
|
428
459
|
# @!attribute picture_url
|
429
460
|
# @return [String, nil] the URL of the picture of the person
|
data/lib/lws/version.rb
CHANGED
data/test/caching_test.rb
CHANGED
@@ -55,9 +55,9 @@ class TestCaching < MiniTest::Test
|
|
55
55
|
assert_nil(@cache_mock.last_read_key)
|
56
56
|
assert_nil(@cache_mock.last_written_key)
|
57
57
|
assert_nil(@cache_mock.last_written_value)
|
58
|
-
|
59
|
-
|
60
|
-
assert_equal(
|
58
|
+
_configs = LWS::Auth::Configuration.all.to_a
|
59
|
+
refute_nil(@cache_mock.last_read_key)
|
60
|
+
assert_equal(@cache_mock.last_read_key, @cache_mock.last_written_key)
|
61
61
|
refute_nil(@cache_mock.last_written_value)
|
62
62
|
end
|
63
63
|
|
@@ -179,7 +179,7 @@ class TestDigitalSignageDisplay < MiniTest::Test
|
|
179
179
|
include LWS::DigitalSignage
|
180
180
|
|
181
181
|
def setup
|
182
|
-
@display = Display.
|
182
|
+
@display = Display.find(1)
|
183
183
|
end
|
184
184
|
|
185
185
|
def test_valid
|
@@ -201,7 +201,7 @@ class TestDigitalSignageDisplayInput < MiniTest::Test
|
|
201
201
|
include LWS::DigitalSignage
|
202
202
|
|
203
203
|
def setup
|
204
|
-
@display = Display.
|
204
|
+
@display = Display.find(1)
|
205
205
|
# Display inputs only exist as child objects of a display
|
206
206
|
@display_input = @display.inputs.first
|
207
207
|
end
|
data/test/presence_test.rb
CHANGED
@@ -153,6 +153,9 @@ class TestPresencePerson < MiniTest::Test
|
|
153
153
|
assert_instance_of(Appointment, @person.appointments.first)
|
154
154
|
assert_instance_of(LWS::Auth::Company, @person.company)
|
155
155
|
assert_instance_of(Location, @person.location)
|
156
|
+
# FIXME: The list of people responsible for is not included in the serializer.
|
157
|
+
#assert_instance_of(Person, @person.people_responsible_for.first)
|
158
|
+
assert_instance_of(Person, @person.person_responsible)
|
156
159
|
end
|
157
160
|
|
158
161
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- LeftClick B.V.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday_middleware
|
@@ -229,14 +229,7 @@ executables:
|
|
229
229
|
extensions: []
|
230
230
|
extra_rdoc_files: []
|
231
231
|
files:
|
232
|
-
- ".gitignore"
|
233
|
-
- ".yardopts"
|
234
|
-
- CHANGELOG.md
|
235
|
-
- Gemfile
|
236
|
-
- README.md
|
237
|
-
- Rakefile
|
238
232
|
- bin/lwsconsole
|
239
|
-
- copyright.txt
|
240
233
|
- lib/lws.rb
|
241
234
|
- lib/lws/apps/auth.rb
|
242
235
|
- lib/lws/apps/corporate_website.rb
|
@@ -255,7 +248,6 @@ files:
|
|
255
248
|
- lib/lws/middleware/request_headers.rb
|
256
249
|
- lib/lws/stubbing.rb
|
257
250
|
- lib/lws/version.rb
|
258
|
-
- lws.gemspec
|
259
251
|
- test/api_token_middleware_test.rb
|
260
252
|
- test/auth_test.rb
|
261
253
|
- test/caching_test.rb
|
@@ -304,27 +296,27 @@ signing_key:
|
|
304
296
|
specification_version: 4
|
305
297
|
summary: LeftClick web services library for Ruby
|
306
298
|
test_files:
|
299
|
+
- test/support/with_env.rb
|
300
|
+
- test/json_parser_test.rb
|
301
|
+
- test/test_helper.rb
|
302
|
+
- test/setup_test.rb
|
303
|
+
- test/ticket_test.rb
|
307
304
|
- test/api_token_middleware_test.rb
|
305
|
+
- test/stubbing_test.rb
|
306
|
+
- test/presence_test.rb
|
307
|
+
- test/digital_signage_test.rb
|
308
|
+
- test/generic_test.rb
|
309
|
+
- test/logger_test.rb
|
308
310
|
- test/auth_test.rb
|
309
|
-
- test/
|
311
|
+
- test/resource_test.rb
|
312
|
+
- test/maps_test.rb
|
313
|
+
- test/corporate_website_test.rb
|
314
|
+
- test/config/tokens.yml
|
310
315
|
- test/config/empty.yml
|
311
316
|
- test/config/endpoints.yml
|
312
|
-
- test/config/full.yml
|
313
317
|
- test/config/invalid.yml
|
314
318
|
- test/config/switch_env.yml
|
315
|
-
- test/config/
|
316
|
-
- test/
|
317
|
-
- test/digital_signage_test.rb
|
319
|
+
- test/config/full.yml
|
320
|
+
- test/caching_test.rb
|
318
321
|
- test/fixtures/auth.yml
|
319
322
|
- test/fixtures/permissions.yml
|
320
|
-
- test/generic_test.rb
|
321
|
-
- test/json_parser_test.rb
|
322
|
-
- test/logger_test.rb
|
323
|
-
- test/maps_test.rb
|
324
|
-
- test/presence_test.rb
|
325
|
-
- test/resource_test.rb
|
326
|
-
- test/setup_test.rb
|
327
|
-
- test/stubbing_test.rb
|
328
|
-
- test/support/with_env.rb
|
329
|
-
- test/test_helper.rb
|
330
|
-
- test/ticket_test.rb
|
data/.gitignore
DELETED
data/.yardopts
DELETED
data/CHANGELOG.md
DELETED
@@ -1,162 +0,0 @@
|
|
1
|
-
# LeftClick Web Services Changelog
|
2
|
-
|
3
|
-
Up until version 6.1.0, we used the standard Gem version numbering starting at
|
4
|
-
version 0.0.1. From version 6.1.0 on the version will follow the API version
|
5
|
-
of LWS in the major/minor part of te version.
|
6
|
-
|
7
|
-
The changelog follows the [Keep a Changelog] format from version 6.3.0 on.
|
8
|
-
|
9
|
-
## [6.3.2] - 2019-09-26
|
10
|
-
### Added
|
11
|
-
* Expanded the models and attributes in the presence app (#12108)
|
12
|
-
* Added a `#dig` method for the generic/all models
|
13
|
-
|
14
|
-
### Fixed
|
15
|
-
* Fixed the reduced/dropped test coverage (#12107)
|
16
|
-
|
17
|
-
## [6.3.1] - 2019-09-05
|
18
|
-
### Changed
|
19
|
-
* Reworked the JSON parser to handle metadata better
|
20
|
-
* Updated/reworked the Resource app models: added/removed/updated attributes
|
21
|
-
where necessary (#12106)
|
22
|
-
|
23
|
-
### Removed
|
24
|
-
* Removed some attributes that are already part of the generic model from
|
25
|
-
DigitalSignage app models
|
26
|
-
|
27
|
-
## [6.3.0] - 2019-09-05
|
28
|
-
### Added
|
29
|
-
* Added slide, layout and related models to the DigitalSignage app (#12103)
|
30
|
-
* Added the `Storage` class to the DigitalSignage and Resource apps
|
31
|
-
|
32
|
-
### Changed
|
33
|
-
* All non-persisted objects are always saved (even without changes)
|
34
|
-
|
35
|
-
### Fixed
|
36
|
-
* Fixed typos in documentation
|
37
|
-
* Fixed some code style issues
|
38
|
-
* Default to an empty object if the API provides no data
|
39
|
-
|
40
|
-
## v6.2.3
|
41
|
-
|
42
|
-
* Move common attributes to the generic model and add `url`/`url_html` (#12004)
|
43
|
-
* Add password expiration attributes to the `Company` and `User` model of
|
44
|
-
the Auth app (#12012)
|
45
|
-
* Add new attributes to the `Collection` model of the Resource app (#12012)
|
46
|
-
|
47
|
-
## v6.2.2.1
|
48
|
-
|
49
|
-
* Add missing dependency on net-http-persistent in the gemspec file
|
50
|
-
|
51
|
-
## v6.2.2
|
52
|
-
|
53
|
-
* Add some more attributes to the Presence app
|
54
|
-
* Use persistent HTTP connections from now on (#12101)
|
55
|
-
* Add a configuration option for enabling/disabling persistent HTTP
|
56
|
-
connections
|
57
|
-
* Add support for dirtiness checking for all models (#12100)
|
58
|
-
* Only save models using the HTTP if dirty
|
59
|
-
|
60
|
-
## v6.2.1
|
61
|
-
|
62
|
-
* Add new models and attributes to the Presence app (#12098, #12099)
|
63
|
-
* Replace Fixnum by Integer in the documentation (for Ruby ≥ 2.3)
|
64
|
-
|
65
|
-
## v6.2.0
|
66
|
-
|
67
|
-
* Add the Resource app implementation (#12097)
|
68
|
-
* Update the CorporateWebsite app for recent API changes
|
69
|
-
|
70
|
-
## v6.1.5
|
71
|
-
|
72
|
-
* Update the gemspec to relax the dependency on WebMock to support 2.x and 3.x
|
73
|
-
|
74
|
-
## v6.1.4
|
75
|
-
|
76
|
-
* Fix LWS Console environment command-line parameter not overriding the config
|
77
|
-
* Print LWS setup on LWS Console start
|
78
|
-
|
79
|
-
### Apps
|
80
|
-
|
81
|
-
* Add some fields to the DigitalSignage app (closes: #12001)
|
82
|
-
* Fix some relations in the Auth app (closes: #12026)
|
83
|
-
|
84
|
-
## v6.1.3
|
85
|
-
|
86
|
-
* Fix `#find` on has many-associations not working
|
87
|
-
|
88
|
-
### Development
|
89
|
-
|
90
|
-
* Many fixes in the gemspec
|
91
|
-
* Use the SpecReporter for tests
|
92
|
-
|
93
|
-
## v6.1.2
|
94
|
-
|
95
|
-
* Small tweaks to LWS Console
|
96
|
-
* Add LWS Console documentation (in the README)
|
97
|
-
* Documentation improvements
|
98
|
-
|
99
|
-
### Development
|
100
|
-
|
101
|
-
* Fix caching tests not tearing down the specific setup
|
102
|
-
|
103
|
-
## v6.1.1
|
104
|
-
|
105
|
-
* Support a global and user-specific config file for LWS Console
|
106
|
-
* Use a separate history and specific prompt for LWS Console
|
107
|
-
* Small documentation fixes
|
108
|
-
* Speed up the tests
|
109
|
-
|
110
|
-
## v6.1.0
|
111
|
-
|
112
|
-
* Switch to LWS/LeftClick platform release versions
|
113
|
-
* Switch to Spyke as the REST ORM library (closes: #10671)
|
114
|
-
* Add some Her backward compatibility support
|
115
|
-
* Use JSON as the wire format for sending data to LWS
|
116
|
-
* Switch to using our own exceptions (see LWS::Errors)
|
117
|
-
* Add support for setting the LWS API token in the environment
|
118
|
-
* Switch to Pry as the REPL used by the LWS Console
|
119
|
-
* Add commands to the LWS Console to toggle debug options
|
120
|
-
* Add option parsing and app/environment/debug mode selection to LWS Console
|
121
|
-
|
122
|
-
### Apps
|
123
|
-
|
124
|
-
* Add a first implementation of the Digital Signage app (closes: #11110)
|
125
|
-
* Update some fields for the Ticket app (closes: #11997)
|
126
|
-
* Add the Reader model to the Presence app, add fields to the Location model
|
127
|
-
|
128
|
-
### Development
|
129
|
-
|
130
|
-
* Reorganize the file structure of the library
|
131
|
-
* Add and improve tests and documentation
|
132
|
-
* Document and fix model relations throughout all apps
|
133
|
-
* Documentation fixes for switch to Spyke
|
134
|
-
|
135
|
-
## v0.4.2
|
136
|
-
|
137
|
-
* Documentation fixes
|
138
|
-
* Obtain full test coverage by adding some tests
|
139
|
-
|
140
|
-
## v0.4.1
|
141
|
-
|
142
|
-
* Test improvements; use simplecov for coverage metrics.
|
143
|
-
|
144
|
-
## v0.4.0
|
145
|
-
|
146
|
-
* Add support for the ticket and corporate website app/web service
|
147
|
-
* Gem/packaging and documentation fixes
|
148
|
-
|
149
|
-
## v0.3.1
|
150
|
-
|
151
|
-
* Add a release_if_needed task
|
152
|
-
|
153
|
-
…
|
154
|
-
|
155
|
-
## v0.0.1
|
156
|
-
|
157
|
-
Initial release
|
158
|
-
|
159
|
-
[Keep a Changelog]: https://keepachangelog.com/en/1.0.0/
|
160
|
-
[6.3.0]: https://gitlab.leftclick.eu/platform/ruby-lws/compare/v6.2.3...v6.3.0
|
161
|
-
[6.3.1]: https://gitlab.leftclick.eu/platform/ruby-lws/compare/v6.3.0...v6.3.1
|
162
|
-
[6.3.1]: https://gitlab.leftclick.eu/platform/ruby-lws/compare/v6.3.1...v6.3.2
|
data/Gemfile
DELETED
data/README.md
DELETED
@@ -1,154 +0,0 @@
|
|
1
|
-
# LeftClick Web Services
|
2
|
-
|
3
|
-
LWS is a library for Ruby provides access to the LeftClick web
|
4
|
-
services/applications using a model-based structure that abstracts from API
|
5
|
-
calls using the available REST interfaces.
|
6
|
-
|
7
|
-
## Installation
|
8
|
-
|
9
|
-
In your Gemfile, add:
|
10
|
-
|
11
|
-
```
|
12
|
-
gem "lws"
|
13
|
-
```
|
14
|
-
|
15
|
-
or install the `ruby-lws` package.
|
16
|
-
|
17
|
-
|
18
|
-
## Usage
|
19
|
-
|
20
|
-
First, you have to initialize the library. For example, with Rails, you
|
21
|
-
would create a new `config/initializers/lws.rb` file with these lines:
|
22
|
-
|
23
|
-
```ruby
|
24
|
-
# config/initializers/lws.rb
|
25
|
-
LWS.setup do |config|
|
26
|
-
config.api_token = "…" # Get it from someplace
|
27
|
-
end
|
28
|
-
```
|
29
|
-
|
30
|
-
After that, due to the fact that LWS is based on
|
31
|
-
[Spyke](https://github.com/balvig/spyke), you can access the objects in the
|
32
|
-
LeftClick Web Services similary to many ActiveRecord-like ORM's:
|
33
|
-
|
34
|
-
```ruby
|
35
|
-
map = Maps::Map.all.first
|
36
|
-
markers = map.markers
|
37
|
-
|
38
|
-
company = Company.find(6)
|
39
|
-
account = Auth::Account.create(name: "Foo Bar",
|
40
|
-
company: company)
|
41
|
-
|
42
|
-
loc = Presence::Location.where(name: "Test")
|
43
|
-
loc.destroy
|
44
|
-
```
|
45
|
-
|
46
|
-
## Configuration
|
47
|
-
|
48
|
-
The following example uses a much more elaborate setup:
|
49
|
-
|
50
|
-
```ruby
|
51
|
-
LWS.setup do |config|
|
52
|
-
config.api_token_middleware = TokenAuthenticator
|
53
|
-
config.caching_object = MyRedisCache.new
|
54
|
-
config.environment = :development
|
55
|
-
config.endpoints = { maps: "https://maps.leftclick.cloud" }
|
56
|
-
config.http_debug = true
|
57
|
-
config.json_debug = true
|
58
|
-
config.logger = Rails.logger
|
59
|
-
end
|
60
|
-
```
|
61
|
-
|
62
|
-
In this setup, a caching object is used that follows the
|
63
|
-
`FaradayMiddleWare::Caching` API. It uses all development API endpoints,
|
64
|
-
except for maps, which is overriden to use the production endpoint. Also
|
65
|
-
HTTP request and JSON data debug logging is enabled and LWS will use
|
66
|
-
the Rails logger to log the messages.
|
67
|
-
Also a custom API token authenticator class is used that should implement
|
68
|
-
the `Faraday::Middleware` interface and set the `X-Token` header with the
|
69
|
-
runtime determined API token as value, for example:
|
70
|
-
|
71
|
-
```ruby
|
72
|
-
class TokenAuthenticator < Faraday::Middleware
|
73
|
-
|
74
|
-
def call(env)
|
75
|
-
env[:request_headers]["X-Token"] = … # Some calculated token
|
76
|
-
@app.call(env)
|
77
|
-
end
|
78
|
-
|
79
|
-
end
|
80
|
-
```
|
81
|
-
|
82
|
-
The `LC_LWS_ENV` environment variable is supported to override the LWS
|
83
|
-
environment. Allowed values are "production" (default) and "development".
|
84
|
-
The `LC_LWS_API_TOKEN` is supported to set the LWS API token default.
|
85
|
-
This only works if a custom API token middleware is not used.
|
86
|
-
|
87
|
-
## LWS Console
|
88
|
-
|
89
|
-
This library comes with the program `lwsconsole`, which is a command-line
|
90
|
-
tool that can be used to interactively use the library. (This is similar
|
91
|
-
to the Rails console.) See `lwsconsole --help` for the supported
|
92
|
-
command-line arguments.
|
93
|
-
|
94
|
-
LWS Console will perform the setup for you and give you a prompt in the
|
95
|
-
`LWS` module namespace or the module of an app if this is selected via the
|
96
|
-
arguments. It uses the production environment per default using the token
|
97
|
-
provided by a command-line argument. These defaults can be overriden using
|
98
|
-
the configuration. For example, to rename a map:
|
99
|
-
|
100
|
-
```sh
|
101
|
-
$ lwsconsole -t "my_token" -a maps
|
102
|
-
[1] lwsconsole(LWS::Maps)> Map.all.map(&:name)
|
103
|
-
=> ["Gebouw 1",
|
104
|
-
"Gebouw 3"]
|
105
|
-
[2] lwsconsole(LWS::Maps)> map = Map.find(2)
|
106
|
-
=> #<LWS::Maps::Map(maps/(:id)) id: 2 name: "Gebouw 3" ... markers: []>
|
107
|
-
[3] lwsconsole(LWS::Maps)> map.name = "Gebouw 2"
|
108
|
-
"Gebouw 2"
|
109
|
-
[4] lwsconsole(LWS::Maps)> map.save
|
110
|
-
nil
|
111
|
-
```
|
112
|
-
|
113
|
-
Besides the API calls, LWS console supports a few commands to change its
|
114
|
-
behaviour:
|
115
|
-
|
116
|
-
* `http_debug true|false`: Toggles HTTP debugging for API calls
|
117
|
-
* `http_debug_headers true|false`: Toggles logging of HTTP headers in the HTTP debug output
|
118
|
-
* `json_debug true|false`: Toggles JSON debug output for API calls
|
119
|
-
* `reload!`: Reloads all apps
|
120
|
-
|
121
|
-
```
|
122
|
-
[5] lwsconsole(LWS::Maps)> http_debug true
|
123
|
-
true
|
124
|
-
```
|
125
|
-
|
126
|
-
LWS Console keeps a history of all calls and commands, use the command
|
127
|
-
`history --all` to seem them. Use the command `help` to see all other
|
128
|
-
available commands (provided by Pry).
|
129
|
-
|
130
|
-
### Configuration files
|
131
|
-
|
132
|
-
LWS Console will look for the configuration files first in
|
133
|
-
`/etc/LeftClick/lws.yml` and then `~/.config/LeftClick/lws.yml`; they are
|
134
|
-
in the YAML format.
|
135
|
-
|
136
|
-
The configuration file can set defaults per environment. It is possible to
|
137
|
-
set the API key, endpoints and debug modes.
|
138
|
-
|
139
|
-
```yaml
|
140
|
-
development:
|
141
|
-
api_token: "my_token"
|
142
|
-
endpoints:
|
143
|
-
maps: "https://maps.leftclick.cloud
|
144
|
-
http_debug: true
|
145
|
-
http_debug_headers: true
|
146
|
-
json_debug: true
|
147
|
-
```
|
148
|
-
|
149
|
-
To override the default environment, use the default section. For example:
|
150
|
-
|
151
|
-
```yaml
|
152
|
-
default:
|
153
|
-
environment: "development"
|
154
|
-
```
|
data/Rakefile
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
# Rakefile with tasks for the LeftClick web services
|
2
|
-
|
3
|
-
require 'bundler/gem_tasks'
|
4
|
-
require "rake/testtask"
|
5
|
-
require "yard"
|
6
|
-
|
7
|
-
desc "Release if not yet released"
|
8
|
-
task :release_if_needed do
|
9
|
-
gh = Bundler::GemHelper.instance
|
10
|
-
released_gems = Gem::SpecFetcher.fetcher.detect { |gem| gem.name == gh.gemspec.name }
|
11
|
-
released_versions = released_gems.map { |tup, _| tup.version }
|
12
|
-
if released_versions.include? gh.gemspec.version
|
13
|
-
Bundler.ui.confirm "Already released this gem"
|
14
|
-
else
|
15
|
-
Rake::Task["release"].invoke
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
Rake::TestTask.new do |t|
|
20
|
-
t.libs << "test" << "lib"
|
21
|
-
t.pattern = "test/*_test.rb"
|
22
|
-
t.warning = false
|
23
|
-
end
|
24
|
-
|
25
|
-
YARD::Rake::YardocTask.new
|
26
|
-
|
27
|
-
task doc: :yard
|
28
|
-
|
29
|
-
desc "Insert/update copyright headers in all script files"
|
30
|
-
task :copyright do
|
31
|
-
copyright_text = File.read("copyright.txt")
|
32
|
-
|
33
|
-
Dir["**/*.{pl,perl,rb,sh}"].sort.each do |script_file|
|
34
|
-
if File.symlink? script_file
|
35
|
-
puts "I: script file is a symlink: #{script_file}, skipping!"
|
36
|
-
next
|
37
|
-
end
|
38
|
-
|
39
|
-
puts "I: processing script file #{script_file}"
|
40
|
-
lines = File.readlines(script_file)
|
41
|
-
new_script_file = script_file + ".new"
|
42
|
-
new_perm = File.stat(script_file).mode
|
43
|
-
File.open(new_script_file, "w", new_perm) do |new_file|
|
44
|
-
found_copyright = false
|
45
|
-
removing_old_copyright = false
|
46
|
-
lines.each do |line|
|
47
|
-
if found_copyright
|
48
|
-
new_file.print line
|
49
|
-
next
|
50
|
-
end
|
51
|
-
|
52
|
-
if line =~ /^#..+/
|
53
|
-
new_file.print line unless removing_old_copyright
|
54
|
-
next
|
55
|
-
end
|
56
|
-
if line =~ /^([^#]|$)/
|
57
|
-
new_file.print copyright_text
|
58
|
-
new_file.puts unless line.chomp.empty?
|
59
|
-
removing_old_copyright = false
|
60
|
-
found_copyright = true
|
61
|
-
elsif line =~ /^\#$/
|
62
|
-
removing_old_copyright = true
|
63
|
-
next
|
64
|
-
else
|
65
|
-
raise "got unexpected line in header: #{line.chomp}"
|
66
|
-
end
|
67
|
-
|
68
|
-
new_file.print line
|
69
|
-
end
|
70
|
-
end
|
71
|
-
File.rename(new_script_file, script_file)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
task default: :test
|
data/copyright.txt
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright © 2016 LeftClick B.V.
|
3
|
-
#
|
4
|
-
# This software is property of LeftClick B.V. and cannot be redistributed
|
5
|
-
# and/or modified without permission. The software or any of its parts
|
6
|
-
# cannot be used for any other purposes than the LeftClick services and
|
7
|
-
# only during a valid license subscription. For more information, please
|
8
|
-
# contact LeftClick B.V. at: Geldropseweg 8B, 5731 SG Mierlo, The
|
9
|
-
# Netherlands, info@leftclick.eu, +31492-782120.
|
data/lws.gemspec
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require File.expand_path("../lib/lws/version", __FILE__)
|
3
|
-
|
4
|
-
Gem::Specification.new do |s|
|
5
|
-
s.name = "lws"
|
6
|
-
s.version = LWS::VERSION
|
7
|
-
s.authors = ["LeftClick B.V."]
|
8
|
-
s.email = ["gem@leftclick.eu"]
|
9
|
-
s.homepage = "https://leftclick.eu/"
|
10
|
-
s.summary = "LeftClick web services library for Ruby"
|
11
|
-
s.description = %q{This library for Ruby provides access to the LeftClick
|
12
|
-
web services/applications using a model-based structure that abstracts from API calls
|
13
|
-
using the available REST interfaces.}
|
14
|
-
|
15
|
-
s.add_runtime_dependency 'faraday_middleware', '>= 0.10.0', '< 1.0'
|
16
|
-
s.add_runtime_dependency 'hashie', '~> 3.5'
|
17
|
-
s.add_runtime_dependency 'multi_json', '~> 1.12'
|
18
|
-
s.add_runtime_dependency 'net-http-persistent', '~> 2.9'
|
19
|
-
s.add_runtime_dependency 'pry', '~> 0.11'
|
20
|
-
s.add_runtime_dependency 'spyke', '~> 5.3'
|
21
|
-
s.add_runtime_dependency 'webmock', '>= 2', '< 4'
|
22
|
-
|
23
|
-
s.add_development_dependency 'bundler', '~> 1.16'
|
24
|
-
s.add_development_dependency 'minitest', '~> 5.10'
|
25
|
-
s.add_development_dependency 'minitest-reporters', '~> 1.0'
|
26
|
-
s.add_development_dependency 'rake', '~> 12.3'
|
27
|
-
s.add_development_dependency 'simplecov', '~> 0.14'
|
28
|
-
s.add_development_dependency 'simplecov-rcov', '~> 0.2'
|
29
|
-
s.add_development_dependency 'yard', '~> 0.9'
|
30
|
-
|
31
|
-
s.files = `git ls-files`.split("\n")
|
32
|
-
s.test_files = `git ls-files -- test/*`.split("\n")
|
33
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
34
|
-
s.require_paths = ["lib"]
|
35
|
-
end
|