alula-ruby 2.8.1 → 2.9.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c2c14c739ee4ac13378ec59803f5430b56e4f04a40a7c74de64979dc068cd338
4
- data.tar.gz: 3cbcb6c3dcf499aeb9d6733d24a00fc7850ef97380ca3d57f0932257edaf059d
3
+ metadata.gz: d1b9979c43f40957a0f94f348ac6156b9e2b211a9bf157a7327c84f2e313f193
4
+ data.tar.gz: 39517538f976d1607f0584e2c1bbdad8cf75d6bf1e3be3bade1069be2dff4deb
5
5
  SHA512:
6
- metadata.gz: 8f8bc33907fc1ef0c7f7f0253fb499ebc7cb2bd74f009f71c841237acc212d8a1c5d887c9e2c1bf3b1a98466faa83f97d0e3d31c1d162017a45d4720c74979d3
7
- data.tar.gz: ab6a3c196070fcc7095e51f66078fe7027e238cef8dc95cf4c91a4b21675d64b82c0c655c14c15f5159a6f7e15bcfd076e0192156c234166d83551c44616fe20
6
+ metadata.gz: 9b7337413934562925d8ac2b8809942c81e5b67ff3edb38838f6f852cb1f03ee304c2666360baf79d2924f219f653ba24a5c1c282ecf748edebafa5942a1fa27
7
+ data.tar.gz: 23f34e9da7a14a690e052340ab0c0d57b5aaec8ffa976b654babd6f59b648c748d2773ddedeaeffc0e0f6e1112153c5edd77cceaa879e4b70094b5df7d42441c
data/VERSION.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  | Version | Date | Description |
4
4
  | ------- | ------------| --------------------------------------------------------------------------- |
5
+ | v2.9.0 | 2025-02-20 | Add merge! capability for Alula::ListObject |
5
6
  | v2.8.1 | 2025-02-19 | Mark Device ID as filterable/sortable |
6
7
  | v2.8.0 | 2025-02-12 | Add ONVIF Features Selected for device. Add supports_onvif? method |
7
8
  | v2.7.0 | 2025-02-05 | Add DCP client |
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Alula
2
4
  class ListObject
3
5
  include Enumerable
@@ -30,7 +32,7 @@ module Alula
30
32
  @items.last
31
33
  end
32
34
 
33
- def << item
35
+ def <<(item)
34
36
  @items << item
35
37
  end
36
38
 
@@ -42,18 +44,34 @@ module Alula
42
44
  meta.page
43
45
  end
44
46
 
45
- def self.construct_from_response klass, response, opts
47
+ # Merge another list into this list
48
+ # Use only for lists of the same type and same pagination settings
49
+ # Should be used only when we are limited by URL length and need to fetch more than 20 items in the same page
50
+ def merge!(list)
51
+ @items += list.items
52
+ new_meta = Meta.new(
53
+ 'page' => {
54
+ 'total' => list.meta.page.total,
55
+ 'number' => list.meta.page.number,
56
+ 'size' => list.meta.page.size
57
+ }
58
+ )
59
+ set_meta(new_meta)
60
+ self
61
+ end
62
+
63
+ def self.construct_from_response(klass, response, _opts)
46
64
  list = ListObject.new(klass)
47
65
  response.data['data'].each do |item|
48
66
  list << klass.new(item['id']).construct_from(item)
49
67
  end
50
68
  list.set_meta Meta.new(response.data['meta'])
51
69
  list.rate_limit = response.rate_limit
52
-
70
+
53
71
  list
54
72
  end
55
73
 
56
- def self.construct_from_array klass, collection
74
+ def self.construct_from_array(klass, collection)
57
75
  list = ListObject.new(klass)
58
76
  collection.each do |item|
59
77
  list << klass.new(item['id']).construct_from(item)
@@ -61,4 +79,4 @@ module Alula
61
79
  list
62
80
  end
63
81
  end
64
- end
82
+ end
data/lib/alula/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alula
4
- VERSION = '2.8.1'
4
+ VERSION = '2.9.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alula-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.1
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Titus Johnson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-02-19 00:00:00.000000000 Z
11
+ date: 2025-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty