
org.sourcelab.github.client.request.UserReposRequest Maven / Gradle / Ivy
The newest version!
package org.sourcelab.github.client.request;
import org.sourcelab.github.client.response.UserReposResponse;
import org.sourcelab.github.client.response.parser.ResponseParser;
import org.sourcelab.github.client.response.parser.UserReposResponseParser;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
import java.util.stream.Collectors;
public class UserReposRequest extends GetRequest implements PageableRequest {
private final UserReposFilterCriteria options;
private PageOptions pageOptions;
/**
* Constructor.@param options
*/
public UserReposRequest(final UserReposFilterCriteria options) {
Objects.requireNonNull(options);
this.pageOptions = options.getPageOptions() == null ? new PageOptions() : options.getPageOptions();
this.options = Objects.requireNonNull(options);
}
@Override
public String getPath() {
return "/user/repos";
}
/**
* KeyValue pairs of Request Parameters.
* @return RequestParameters associated with request.
*/
@Override
public RequestParameters getRequestParameters() {
final RequestParametersBuilder builder = RequestParameters.newBuilder();
if (pageOptions != null) {
builder.withPageOptions(pageOptions);
}
if (options.getVisibility() != null && !options.getVisibility().trim().isEmpty()) {
builder.withParameter("visibility", options.getVisibility());
}
if (!options.getAffiliation().isEmpty()) {
builder.withParameter("affiliation", options.getAffiliation()
.stream()
.map(Enum::name)
.collect(Collectors.joining(","))
);
}
if (!options.getType().isEmpty()) {
builder.withParameter("type", options.getType()
.stream()
.map(Enum::name)
.collect(Collectors.joining(","))
);
}
if (options.getSort() != null) {
builder.withParameter("sort", options.getSort().name());
}
if (options.getSortDirection() != null) {
builder.withParameter("direction", options.getSortDirection().name());
}
if (options.getSince() != null) {
builder.withParameter("since", options.getSince().format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
}
if (options.getBefore() != null) {
builder.withParameter("before", options.getBefore().format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
}
return builder.build();
}
@Override
public ResponseParser getResponseParser() {
return new UserReposResponseParser(this);
}
@Override
public void updatePageOptions(final PageOptions pageOptions) {
this.pageOptions = Objects.requireNonNull(pageOptions);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy