View Javadoc
1   package org.oxerr.seatgeek.client.rescu;
2   
3   import static jakarta.ws.rs.core.Response.Status.NOT_FOUND;
4   
5   import java.io.IOException;
6   import java.util.Optional;
7   
8   import org.apache.commons.lang3.ArrayUtils;
9   import org.apache.commons.lang3.BooleanUtils;
10  import org.apache.commons.lang3.StringUtils;
11  import org.oxerr.seatgeek.client.ListingService;
12  import org.oxerr.seatgeek.client.model.SeatGeekException;
13  import org.oxerr.seatgeek.client.model.request.CreateListingRequest;
14  import org.oxerr.seatgeek.client.model.request.UpdateListingRequest;
15  import org.oxerr.seatgeek.client.model.response.Listing;
16  import org.oxerr.seatgeek.client.model.response.MultipleListingsResponse;
17  import org.oxerr.seatgeek.client.model.response.Response;
18  
19  import si.mazi.rescu.HttpStatusIOException;
20  
21  public class ListingServiceImpl implements ListingService {
22  
23  	private final ListingResource listingResource;
24  
25  	public ListingServiceImpl(ListingResource listingResource) {
26  		this.listingResource = listingResource;
27  	}
28  
29  	@Override
30  	public void createListing(String ticketId, CreateListingRequest r) throws IOException {
31  		Response response = this.listingResource.createListing(ticketId, r);
32  		if (!response.getOk().booleanValue()) {
33  			throw new SeatGeekException();
34  		}
35  	}
36  
37  	@Override
38  	public UpdateListingRequest updateListing(String ticketId, UpdateListingRequest r) throws IOException {
39  		return this.listingResource.updateListing(ticketId, r);
40  	}
41  
42  	@Override
43  	public Optional<Listing> getListing(String ticketId) throws IOException {
44  		try {
45  			return Optional.ofNullable(this.listingResource.getListing(ticketId).getListing());
46  		} catch (HttpStatusIOException e) {
47  			if (e.getHttpStatusCode() == NOT_FOUND.getStatusCode()) {
48  				return Optional.empty();
49  			} else {
50  				throw e;
51  			}
52  		}
53  	}
54  
55  	@Override
56  	public MultipleListingsResponse getListings(
57  		Integer page,
58  		Integer perPage,
59  		Boolean onlyBarcode,
60  		String... listingIds
61  	) throws IOException {
62  		String commaSeperatedListingIds = ArrayUtils.getLength(listingIds) == 0 ? null : StringUtils.join(listingIds, ',');
63  		return this.listingResource.getListings(
64  			commaSeperatedListingIds,
65  			BooleanUtils.toIntegerObject(onlyBarcode),
66  			page,
67  			perPage
68  		);
69  	}
70  
71  	@Override
72  	public void deleteListing(String ticketId) throws IOException {
73  		try {
74  			this.listingResource.deleteListing(ticketId);
75  		} catch (HttpStatusIOException e) {
76  			if (e.getHttpStatusCode() != NOT_FOUND.getStatusCode()) {
77  				throw e;
78  			}
79  		}
80  	}
81  
82  }