lib/chronicle/zulip/proxy.rb in chronicle-zulip-0.1.1 vs lib/chronicle/zulip/proxy.rb in chronicle-zulip-0.1.2
- old
+ new
@@ -7,31 +7,37 @@
@username = username
@access_token = access_token
@realm = realm
end
- def all_private_messages(anchor: 'oldest')
+ def all_private_messages(anchor: 'newest', since: nil, limit: nil)
narrow = '[{"negated":false,"operator":"is","operand":"private"}]'
has_more = true
+ count = 0
while has_more
response = load_messages(anchor: anchor, narrow: narrow)
- messages = response[:messages] || []
+ messages = response[:messages].reverse || []
+ messages = messages.first(limit - count) if limit
+ messages = messages.filter { |message| Time.at(message[:timestamp]) > since } if since
+ break unless messages.any?
+
messages.each do |message|
+ count += 1
yield message
end
- has_more = !response[:found_newest]
- anchor = messages.map { |message| message[:id] }.max
+ has_more = !response[:found_oldest]
+ anchor = messages.map { |message| message[:id] }.min - 1
end
end
def load_messages(anchor:, narrow:)
params = {
narrow: narrow,
- num_after: '50',
- num_before: '0',
+ num_after: '0',
+ num_before: '100',
anchor: anchor,
apply_markdown: 'false'
}
make_request(endpoint: 'messages', params: params)