Class: NzPostApi::Resources::ParcelTrack

Inherits:
Object
  • Object
show all
Defined in:
lib/nz_post_api/resources/parcel_track.rb

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ ParcelTrack

Returns a new instance of ParcelTrack.



10
11
12
# File 'lib/nz_post_api/resources/parcel_track.rb', line 10

def initialize(client)
  @client = client
end

Instance Method Details

#base_url ⇒ Object



6
7
8
# File 'lib/nz_post_api/resources/parcel_track.rb', line 6

def base_url
  "#{@client.base_url}/parceltrack/3.0/parcels"
end

#subscribe(tracking_reference:, notification_endpoint:) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/nz_post_api/resources/parcel_track.rb', line 28

def subscribe(tracking_reference:, notification_endpoint:)
  payload = {
    tracking_reference: tracking_reference,
    notification_endpoint: notification_endpoint
  }
  response = @client.connection.post("#{base_url.sub('parcels', 'subscription/webhook/')}", payload)

  if response.success?
    Objects::ParcelTrackSubscription.new(response.body)
  else
    raise NzPostApi::Error.new(
      "Failed to subscribe to parcel: #{response.status} - #{response.body}",
      response_http_code: response.status,
      response_body: response.body
    )
  end
end

#track(tracking_reference) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/nz_post_api/resources/parcel_track.rb', line 14

def track(tracking_reference)
  response = @client.connection.get("#{base_url}/#{tracking_reference}")

  if response.success?
    Objects::ParcelTrack.new(response.body["results"])
  else
    raise NzPostApi::Error.new(
      "Failed to track parcel: #{response.status} - #{response.body}",
      response_http_code: response.status,
      response_body: response.body
    )
  end
end

#unsubscribe(subscription_guid:) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/nz_post_api/resources/parcel_track.rb', line 46

def unsubscribe(subscription_guid:)
  response = @client.connection.delete("#{base_url.sub('parcels', 'subscription/webhook')}/#{subscription_guid}")

  if response.success?
    true
  else
    raise NzPostApi::Error.new(
      "Failed to unsubscribe from parcel: #{response.status} - #{response.body}",
      response_http_code: response.status,
      response_body: response.body
    )
  end
end