alula-ruby 2.8.1 → 2.9.1

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: 3f58625edf002057a38a8eea65817a4fac7d88742a797278a0003c4fcdd9ec94
4
+ data.tar.gz: c855500fbb17221aadd3a2a4262f8bb4c0ff83c4a6819c4c51acf5cb54b74e90
5
5
  SHA512:
6
- metadata.gz: 8f8bc33907fc1ef0c7f7f0253fb499ebc7cb2bd74f009f71c841237acc212d8a1c5d887c9e2c1bf3b1a98466faa83f97d0e3d31c1d162017a45d4720c74979d3
7
- data.tar.gz: ab6a3c196070fcc7095e51f66078fe7027e238cef8dc95cf4c91a4b21675d64b82c0c655c14c15f5159a6f7e15bcfd076e0192156c234166d83551c44616fe20
6
+ metadata.gz: 96b0dd5660c40bc1a95ec7ed073a9d7bde25d8671d0451c5e7936246121be86cac50b92595fede9e321df2aec603f32ee16f2c94566165acf01d0c4596c68fbf
7
+ data.tar.gz: edd4c64a69ed8a4ff1598cd8cd2a083da1fad007183a6dd5b4d568bd91a4ac7502174d76f3974381c9b7e9a522864ae93f58e465fb952b4b011cb676fa1da67c
data/VERSION.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  | Version | Date | Description |
4
4
  | ------- | ------------| --------------------------------------------------------------------------- |
5
+ | v2.9.1 | 2025-02-25 | Fix Alula::ListObject initialization |
6
+ | v2.9.0 | 2025-02-20 | Add merge! capability for Alula::ListObject |
5
7
  | v2.8.1 | 2025-02-19 | Mark Device ID as filterable/sortable |
6
8
  | v2.8.0 | 2025-02-12 | Add ONVIF Features Selected for device. Add supports_onvif? method |
7
9
  | 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
@@ -8,6 +10,7 @@ module Alula
8
10
  def initialize list_type
9
11
  @type = list_type
10
12
  @items = []
13
+ @meta = Meta.new({})
11
14
  end
12
15
 
13
16
  def length
@@ -30,7 +33,7 @@ module Alula
30
33
  @items.last
31
34
  end
32
35
 
33
- def << item
36
+ def <<(item)
34
37
  @items << item
35
38
  end
36
39
 
@@ -42,18 +45,34 @@ module Alula
42
45
  meta.page
43
46
  end
44
47
 
45
- def self.construct_from_response klass, response, opts
48
+ # Merge another list into this list
49
+ # Use only for lists of the same type and same pagination settings
50
+ # Should be used only when we are limited by URL length and need to fetch more than 20 items in the same page
51
+ def merge!(list)
52
+ @items += list.items
53
+ new_meta = Meta.new(
54
+ 'page' => {
55
+ 'total' => list.meta.page.total,
56
+ 'number' => list.meta.page.number,
57
+ 'size' => list.meta.page.size
58
+ }
59
+ )
60
+ set_meta(new_meta)
61
+ self
62
+ end
63
+
64
+ def self.construct_from_response(klass, response, _opts)
46
65
  list = ListObject.new(klass)
47
66
  response.data['data'].each do |item|
48
67
  list << klass.new(item['id']).construct_from(item)
49
68
  end
50
69
  list.set_meta Meta.new(response.data['meta'])
51
70
  list.rate_limit = response.rate_limit
52
-
71
+
53
72
  list
54
73
  end
55
74
 
56
- def self.construct_from_array klass, collection
75
+ def self.construct_from_array(klass, collection)
57
76
  list = ListObject.new(klass)
58
77
  collection.each do |item|
59
78
  list << klass.new(item['id']).construct_from(item)
@@ -61,4 +80,4 @@ module Alula
61
80
  list
62
81
  end
63
82
  end
64
- end
83
+ 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.1'
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.1
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-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty