alula-ruby 2.8.1 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
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