module AuspostReport
AuspostReport โ IRC card formatting for Australia Post parcel tracking. Public: format_status_card, format_update_card, format_delivered_card, format_list Depends: IrcFormat, IrcReply, AuspostTrack Tests: test/lib/auspost_report_test.rb
Constants
- INTERVAL_MIN
- STYLE_BANNER
- TAG
Public Instance Methods
Source
# File lib/auspost_report.rb, line 47 def format_delivered_card(parcel, event) IrcReply.card( tag: TAG, title: parcel_heading(parcel), body_lines: [AuspostTrack.format_event_line(event)], footer_parts: ["auspost.com.au", "delivered"], heading_style: STYLE_BANNER ) end
Source
# File lib/auspost_report.rb, line 73 def format_info_card(diagnosis) id = diagnosis[:tracking_id].to_s title = IrcFormat.meta_join(id, "parse info") fetch = diagnosis[:fetch] || {} payload = diagnosis[:payload] || {} steps = Array(diagnosis[:steps]) result = diagnosis[:result] || {} body = SearchReport.colon_body_lines([ { label: "Fetch", value: "#{fetch[:channel] || 'unknown'} ยท #{fetch[:outcome] || 'unknown'}" }, { label: "Payload", value: begin keys = Array(payload[:keys]).join(", ") keys = TextUtil.truncate(keys, 80) unless keys.empty? line = payload[:type] || "unknown" keys.empty? ? line : "#{line} ยท #{keys}" end }, { label: "Parse", value: TextUtil.truncate( steps.map { |step| "#{step[:parser]}: #{step[:outcome]} โ #{step[:reason]}" }.join(" ยท "), 200 ) }, { label: "Result", value: result[:error] || result[:status] || "unknown" } ]) IrcReply.card( tag: TAG, title: title, body_lines: body, footer_parts: ["info", "auspost.com.au"], heading_style: STYLE_BANNER ) end
Source
# File lib/auspost_report.rb, line 57 def format_list(parcels, interval_min: INTERVAL_MIN) lines = parcels.each_with_index.map do |parcel, index| "#{index + 1}. #{parcel['id']} โ #{parcel['status']}" end body = lines.empty? ? "No parcels tracked." : lines.join("\n") count_label = parcels.length == 1 ? "1 parcel" : "#{parcels.length} parcels" IrcReply.card( tag: TAG, title: "Tracked parcels", body_lines: [body], footer_parts: ["auspost.com.au", count_label, "#{interval_min} min refresh"], heading_style: STYLE_BANNER ) end
Source
# File lib/auspost_report.rb, line 27 def format_status_card(parcel, event) IrcReply.card( tag: TAG, title: parcel_heading(parcel), body_lines: [AuspostTrack.format_event_line(event)], footer_parts: ["auspost.com.au", "#{INTERVAL_MIN} min refresh"], heading_style: STYLE_BANNER ) end
Source
# File lib/auspost_report.rb, line 37 def format_update_card(parcel, event) IrcReply.card( tag: TAG, title: parcel_heading(parcel), body_lines: [AuspostTrack.format_event_line(event)], footer_parts: ["auspost.com.au", "update"], heading_style: STYLE_BANNER ) end
Source
# File lib/auspost_report.rb, line 21 def parcel_heading(parcel) id = parcel["id"].to_s status = parcel["status"].to_s IrcFormat.meta_join(id, status) end