amplify_syndication 0.1.1 → 0.2.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 +4 -4
- data/lib/amplify_syndication/api.rb +88 -1
- data/lib/amplify_syndication/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c904621a09cb44ba73a694784f8f3ca99361b845f4f8f79e9c07d284b32f1f7c
|
|
4
|
+
data.tar.gz: '01094a0769aa29721d17bf14567daa765debbb580a9456913139459ec25d2bb1'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 82ac0a3a1682ed77be6487b41be10b41b1f48efb9fed201ee1c5c9935dbd2d965c5e68a199b4103fb1f2ae5f0b2f3838dcdb34532be28536ff27a5e299100449
|
|
7
|
+
data.tar.gz: 42309083ecdf14c0112dad8d8d36438daf591648ccb3bd374ba5925a8ec8d588a23224fe166b5bd4c59bde993f25eed79b2e033237039f43e3e5c366b7933448
|
|
@@ -9,6 +9,89 @@ module AmplifySyndication
|
|
|
9
9
|
@client.get("$metadata?$format=json")
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
+
# Fetch property fields
|
|
13
|
+
def fetch_property_fields(batch_size: 50, sleep_seconds: 10)
|
|
14
|
+
offset = 0
|
|
15
|
+
fields = []
|
|
16
|
+
|
|
17
|
+
loop do
|
|
18
|
+
query_options = {
|
|
19
|
+
"$filter" => "ResourceName eq 'Property'",
|
|
20
|
+
"$top" => batch_size,
|
|
21
|
+
"$skip" => offset
|
|
22
|
+
}.compact
|
|
23
|
+
response = fetch_with_options("Field", query_options)
|
|
24
|
+
batch = response["value"]
|
|
25
|
+
break if batch.empty?
|
|
26
|
+
|
|
27
|
+
fields.concat(batch)
|
|
28
|
+
|
|
29
|
+
offset += batch_size
|
|
30
|
+
|
|
31
|
+
# Safety sleep between API calls
|
|
32
|
+
sleep(sleep_seconds) if sleep_seconds.positive?
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
fields
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def fetch_all_lookups(batch_size: 50, sleep_seconds: 10, filter: nil)
|
|
39
|
+
offset = 0
|
|
40
|
+
values = []
|
|
41
|
+
|
|
42
|
+
loop do
|
|
43
|
+
query_options = {
|
|
44
|
+
"$top" => batch_size,
|
|
45
|
+
"$skip" => offset
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
# Apply filter only when provided
|
|
49
|
+
if filter.present?
|
|
50
|
+
combined_filter =
|
|
51
|
+
filter.is_a?(Array) ? filter.join(" and ") : filter
|
|
52
|
+
query_options["$filter"] = combined_filter
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
response = fetch_with_options("Lookup", query_options)
|
|
56
|
+
batch = response["value"] || []
|
|
57
|
+
break if batch.empty?
|
|
58
|
+
|
|
59
|
+
values.concat(batch)
|
|
60
|
+
|
|
61
|
+
offset += batch_size
|
|
62
|
+
|
|
63
|
+
# Safety sleep between API calls
|
|
64
|
+
sleep(sleep_seconds) if sleep_seconds.positive?
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
values
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# get lookup name values
|
|
71
|
+
def lookup(lookup_name, batch_size: 50, sleep_seconds: 10)
|
|
72
|
+
offset = 0
|
|
73
|
+
values = []
|
|
74
|
+
|
|
75
|
+
loop do
|
|
76
|
+
query_options = {
|
|
77
|
+
"$filter" => "LookupName eq '#{lookup_name}'",
|
|
78
|
+
"$top" => batch_size,
|
|
79
|
+
"$skip" => offset
|
|
80
|
+
}.compact
|
|
81
|
+
response = fetch_with_options("Lookup", query_options)
|
|
82
|
+
batch = response["value"]
|
|
83
|
+
break if batch.empty?
|
|
84
|
+
|
|
85
|
+
values.concat(batch)
|
|
86
|
+
offset += batch_size
|
|
87
|
+
|
|
88
|
+
# Safety sleep between API calls
|
|
89
|
+
sleep(sleep_seconds) if sleep_seconds.positive?
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
values
|
|
93
|
+
end
|
|
94
|
+
|
|
12
95
|
# Fetch basic property data
|
|
13
96
|
def fetch_property_data(limit = 1)
|
|
14
97
|
@client.get("Property", "$top" => limit)
|
|
@@ -45,7 +128,8 @@ module AmplifySyndication
|
|
|
45
128
|
batch_size: 100,
|
|
46
129
|
fields: ["ModificationTimestamp", "ListingKey"],
|
|
47
130
|
filter: nil,
|
|
48
|
-
|
|
131
|
+
sleep_seconds: 10,
|
|
132
|
+
checkpoint: { last_timestamp: "1970-01-01T00:00:00Z", last_key: 0 },
|
|
49
133
|
)
|
|
50
134
|
puts "Starting initial download..."
|
|
51
135
|
all_records = [] # Array to collect all records
|
|
@@ -86,6 +170,9 @@ module AmplifySyndication
|
|
|
86
170
|
|
|
87
171
|
# Stop if the number of records is less than the batch size
|
|
88
172
|
break if records.size < batch_size
|
|
173
|
+
|
|
174
|
+
# Safety sleep between API calls
|
|
175
|
+
sleep(sleep_seconds) if sleep_seconds.positive?
|
|
89
176
|
end
|
|
90
177
|
|
|
91
178
|
puts "Initial download complete."
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: amplify_syndication
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stephen Higgins
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-11-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: httpclient
|