package com.robotoworks.example.books.net;
import com.robotoworks.mechanoid.net.Parser;
import java.io.IOException;
import com.robotoworks.mechanoid.net.Response;
import com.robotoworks.mechanoid.net.ServiceException;
import java.io.InputStream;
import com.robotoworks.mechanoid.net.ServiceClient;
import com.robotoworks.mechanoid.net.JsonEntityWriterProvider;
import com.robotoworks.mechanoid.net.JsonEntityReaderProvider;
public abstract class AbstractBookServiceClient extends ServiceClient {
private static final String LOG_TAG = "BookServiceClient";
protected static final String DEFAULT_BASE_URL = "http://books.example.com";
private String apiTokenParam;
private boolean apiTokenParamSet;
public void setApiTokenParam(String value) {
this.apiTokenParam = value;
this.apiTokenParamSet = true;
}
@Override
protected String getLogTag() {
return LOG_TAG;
}
@Override
protected JsonEntityWriterProvider createWriterProvider() {
return new DefaultBookServiceClientWriterProvider();
}
@Override
protected JsonEntityReaderProvider createReaderProvider() {
return new DefaultBookServiceClientReaderProvider();
}
public AbstractBookServiceClient(String baseUrl, boolean debug){
super(baseUrl, debug);
}
public Response<GetBooksResult> getBooks()
throws ServiceException {
return getBooks(new GetBooksRequest());
}
public Response<GetBooksResult> getBooks(GetBooksRequest request)
throws ServiceException {
if(this.apiTokenParamSet && !request.isApiTokenParamSet()){
request.setApiTokenParam(this.apiTokenParam);
}
Parser<GetBooksResult> parser = new Parser<GetBooksResult>() {
public GetBooksResult parse(InputStream inStream) throws IOException {
return new GetBooksResult(getReaderProvider(), inStream);
}
};
return get(request, parser);
}
public Response<GetBookResult> getBook(GetBookRequest request)
throws ServiceException {
if(this.apiTokenParamSet && !request.isApiTokenParamSet()){
request.setApiTokenParam(this.apiTokenParam);
}
Parser<GetBookResult> parser = new Parser<GetBookResult>() {
public GetBookResult parse(InputStream inStream) throws IOException {
return new GetBookResult(getReaderProvider(), inStream);
}
};
return get(request, parser);
}
public Response<UpdateBookResult> updateBook(UpdateBookRequest request)
throws ServiceException {
if(this.apiTokenParamSet && !request.isApiTokenParamSet()){
request.setApiTokenParam(this.apiTokenParam);
}
Parser<UpdateBookResult> parser = new Parser<UpdateBookResult>() {
public UpdateBookResult parse(InputStream inStream) throws IOException {
return new UpdateBookResult(getReaderProvider(), inStream);
}
};
return put(request, parser);
}
public Response<CreateBookResult> createBook(CreateBookRequest request)
throws ServiceException {
if(this.apiTokenParamSet && !request.isApiTokenParamSet()){
request.setApiTokenParam(this.apiTokenParam);
}
Parser<CreateBookResult> parser = new Parser<CreateBookResult>() {
public CreateBookResult parse(InputStream inStream) throws IOException {
return new CreateBookResult(getReaderProvider(), inStream);
}
};
return post(request, parser);
}
public Response<DeleteBookResult> deleteBook(DeleteBookRequest request)
throws ServiceException {
if(this.apiTokenParamSet && !request.isApiTokenParamSet()){
request.setApiTokenParam(this.apiTokenParam);
}
Parser<DeleteBookResult> parser = new Parser<DeleteBookResult>() {
public DeleteBookResult parse(InputStream inStream) throws IOException {
return new DeleteBookResult(getReaderProvider(), inStream);
}
};
return delete(request, parser);
}
}