Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Add the dependency in your `build.gradle` file:

```groovy
dependencies {
implementation 'com.pipedream:pipedream:1.1.10'
implementation 'com.pipedream:pipedream:1.1.11'
}
```

Expand All @@ -40,7 +40,7 @@ Add the dependency in your `pom.xml` file:
<dependency>
<groupId>com.pipedream</groupId>
<artifactId>pipedream</artifactId>
<version>1.1.10</version>
<version>1.1.11</version>
</dependency>
```

Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ java {

group = 'com.pipedream'

version = '1.1.10'
version = '1.1.11'

jar {
dependsOn(":generatePomFileForMavenPublication")
Expand Down Expand Up @@ -80,7 +80,7 @@ publishing {
maven(MavenPublication) {
groupId = 'com.pipedream'
artifactId = 'pipedream'
version = '1.1.10'
version = '1.1.11'
from components.java
pom {
name = 'pipedream'
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/pipedream/api/core/ClientOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ private ClientOptions(
this.headers.putAll(headers);
this.headers.putAll(new HashMap<String, String>() {
{
put("User-Agent", "com.pipedream:pipedream/1.1.10");
put("User-Agent", "com.pipedream:pipedream/1.1.11");
put("X-Fern-Language", "JAVA");
put("X-Fern-SDK-Name", "com.pipedream.fern:api-sdk");
put("X-Fern-SDK-Version", "1.1.10");
put("X-Fern-SDK-Version", "1.1.11");
}
});
this.headerSuppliers = headerSuppliers;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,18 @@
import com.pipedream.api.core.BaseClientHttpResponse;
import com.pipedream.api.core.ClientOptions;
import com.pipedream.api.core.ObjectMappers;
import com.pipedream.api.core.QueryStringMapper;
import com.pipedream.api.core.RequestOptions;
import com.pipedream.api.core.pagination.SyncPagingIterable;
import com.pipedream.api.errors.TooManyRequestsError;
import com.pipedream.api.resources.users.requests.UsersListRequest;
import com.pipedream.api.types.ExternalUser;
import com.pipedream.api.types.GetUsersResponse;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Headers;
Expand Down Expand Up @@ -96,4 +104,111 @@ public void onFailure(@NotNull Call call, @NotNull IOException e) {
});
return future;
}

/**
* Retrieve all external users for the project
*/
public CompletableFuture<BaseClientHttpResponse<SyncPagingIterable<ExternalUser>>> list() {
return list(UsersListRequest.builder().build());
}

/**
* Retrieve all external users for the project
*/
public CompletableFuture<BaseClientHttpResponse<SyncPagingIterable<ExternalUser>>> list(UsersListRequest request) {
return list(request, null);
}

/**
* Retrieve all external users for the project
*/
public CompletableFuture<BaseClientHttpResponse<SyncPagingIterable<ExternalUser>>> list(
UsersListRequest request, RequestOptions requestOptions) {
HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
.newBuilder()
.addPathSegments("v1/connect")
.addPathSegment(clientOptions.projectId())
.addPathSegments("users");
if (request.getAfter().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "after", request.getAfter().get(), false);
}
if (request.getBefore().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "before", request.getBefore().get(), false);
}
if (request.getLimit().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "limit", request.getLimit().get(), false);
}
if (request.getQ().isPresent()) {
QueryStringMapper.addQueryParameter(httpUrl, "q", request.getQ().get(), false);
}
Request.Builder _requestBuilder = new Request.Builder()
.url(httpUrl.build())
.method("GET", null)
.headers(Headers.of(clientOptions.headers(requestOptions)))
.addHeader("Accept", "application/json");
Request okhttpRequest = _requestBuilder.build();
OkHttpClient client = clientOptions.httpClient();
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
client = clientOptions.httpClientWithTimeout(requestOptions);
}
CompletableFuture<BaseClientHttpResponse<SyncPagingIterable<ExternalUser>>> future = new CompletableFuture<>();
client.newCall(okhttpRequest).enqueue(new Callback() {
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
try (ResponseBody responseBody = response.body()) {
if (response.isSuccessful()) {
GetUsersResponse parsedResponse =
ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), GetUsersResponse.class);
Optional<String> startingAfter =
parsedResponse.getPageInfo().getEndCursor();
UsersListRequest nextRequest = UsersListRequest.builder()
.from(request)
.after(startingAfter)
.build();
List<ExternalUser> result = parsedResponse.getData();
future.complete(new BaseClientHttpResponse<>(
new SyncPagingIterable<ExternalUser>(
startingAfter.isPresent(), result, parsedResponse, () -> {
try {
return list(nextRequest, requestOptions)
.get()
.body();
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}),
response));
return;
}
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
try {
if (response.code() == 429) {
future.completeExceptionally(new TooManyRequestsError(
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response));
return;
}
} catch (JsonProcessingException ignored) {
// unable to map error response, throwing generic error
}
future.completeExceptionally(new BaseClientApiException(
"Error with status code " + response.code(),
response.code(),
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
response));
return;
} catch (IOException e) {
future.completeExceptionally(new BaseClientException("Network error executing HTTP request", e));
}
}

@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
future.completeExceptionally(new BaseClientException("Network error executing HTTP request", e));
}
});
return future;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@

import com.pipedream.api.core.ClientOptions;
import com.pipedream.api.core.RequestOptions;
import com.pipedream.api.core.pagination.SyncPagingIterable;
import com.pipedream.api.resources.users.requests.UsersListRequest;
import com.pipedream.api.types.ExternalUser;
import java.util.concurrent.CompletableFuture;

public class AsyncUsersClient {
Expand Down Expand Up @@ -37,4 +40,26 @@ public CompletableFuture<Void> deleteExternalUser(String externalUserId) {
public CompletableFuture<Void> deleteExternalUser(String externalUserId, RequestOptions requestOptions) {
return this.rawClient.deleteExternalUser(externalUserId, requestOptions).thenApply(response -> response.body());
}

/**
* Retrieve all external users for the project
*/
public CompletableFuture<SyncPagingIterable<ExternalUser>> list() {
return this.rawClient.list().thenApply(response -> response.body());
}

/**
* Retrieve all external users for the project
*/
public CompletableFuture<SyncPagingIterable<ExternalUser>> list(UsersListRequest request) {
return this.rawClient.list(request).thenApply(response -> response.body());
}

/**
* Retrieve all external users for the project
*/
public CompletableFuture<SyncPagingIterable<ExternalUser>> list(
UsersListRequest request, RequestOptions requestOptions) {
return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,16 @@
import com.pipedream.api.core.BaseClientHttpResponse;
import com.pipedream.api.core.ClientOptions;
import com.pipedream.api.core.ObjectMappers;
import com.pipedream.api.core.QueryStringMapper;
import com.pipedream.api.core.RequestOptions;
import com.pipedream.api.core.pagination.SyncPagingIterable;
import com.pipedream.api.errors.TooManyRequestsError;
import com.pipedream.api.resources.users.requests.UsersListRequest;
import com.pipedream.api.types.ExternalUser;
import com.pipedream.api.types.GetUsersResponse;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import okhttp3.Headers;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
Expand Down Expand Up @@ -77,4 +84,90 @@ public BaseClientHttpResponse<Void> deleteExternalUser(String externalUserId, Re
throw new BaseClientException("Network error executing HTTP request", e);
}
}

/**
* Retrieve all external users for the project
*/
public BaseClientHttpResponse<SyncPagingIterable<ExternalUser>> list() {
return list(UsersListRequest.builder().build());
}

/**
* Retrieve all external users for the project
*/
public BaseClientHttpResponse<SyncPagingIterable<ExternalUser>> list(UsersListRequest request) {
return list(request, null);
}

/**
* Retrieve all external users for the project
*/
public BaseClientHttpResponse<SyncPagingIterable<ExternalUser>> list(
UsersListRequest request, RequestOptions requestOptions) {
HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
.newBuilder()
.addPathSegments("v1/connect")
.addPathSegment(clientOptions.projectId())
.addPathSegments("users");
if (request.getAfter().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "after", request.getAfter().get(), false);
}
if (request.getBefore().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "before", request.getBefore().get(), false);
}
if (request.getLimit().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "limit", request.getLimit().get(), false);
}
if (request.getQ().isPresent()) {
QueryStringMapper.addQueryParameter(httpUrl, "q", request.getQ().get(), false);
}
Request.Builder _requestBuilder = new Request.Builder()
.url(httpUrl.build())
.method("GET", null)
.headers(Headers.of(clientOptions.headers(requestOptions)))
.addHeader("Accept", "application/json");
Request okhttpRequest = _requestBuilder.build();
OkHttpClient client = clientOptions.httpClient();
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
client = clientOptions.httpClientWithTimeout(requestOptions);
}
try (Response response = client.newCall(okhttpRequest).execute()) {
ResponseBody responseBody = response.body();
if (response.isSuccessful()) {
GetUsersResponse parsedResponse =
ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), GetUsersResponse.class);
Optional<String> startingAfter = parsedResponse.getPageInfo().getEndCursor();
UsersListRequest nextRequest = UsersListRequest.builder()
.from(request)
.after(startingAfter)
.build();
List<ExternalUser> result = parsedResponse.getData();
return new BaseClientHttpResponse<>(
new SyncPagingIterable<ExternalUser>(
startingAfter.isPresent(), result, parsedResponse, () -> list(
nextRequest, requestOptions)
.body()),
response);
}
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
try {
if (response.code() == 429) {
throw new TooManyRequestsError(
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
}
} catch (JsonProcessingException ignored) {
// unable to map error response, throwing generic error
}
throw new BaseClientApiException(
"Error with status code " + response.code(),
response.code(),
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
response);
} catch (IOException e) {
throw new BaseClientException("Network error executing HTTP request", e);
}
}
}
24 changes: 24 additions & 0 deletions src/main/java/com/pipedream/api/resources/users/UsersClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@

import com.pipedream.api.core.ClientOptions;
import com.pipedream.api.core.RequestOptions;
import com.pipedream.api.core.pagination.SyncPagingIterable;
import com.pipedream.api.resources.users.requests.UsersListRequest;
import com.pipedream.api.types.ExternalUser;

public class UsersClient {
protected final ClientOptions clientOptions;
Expand Down Expand Up @@ -36,4 +39,25 @@ public void deleteExternalUser(String externalUserId) {
public void deleteExternalUser(String externalUserId, RequestOptions requestOptions) {
this.rawClient.deleteExternalUser(externalUserId, requestOptions).body();
}

/**
* Retrieve all external users for the project
*/
public SyncPagingIterable<ExternalUser> list() {
return this.rawClient.list().body();
}

/**
* Retrieve all external users for the project
*/
public SyncPagingIterable<ExternalUser> list(UsersListRequest request) {
return this.rawClient.list(request).body();
}

/**
* Retrieve all external users for the project
*/
public SyncPagingIterable<ExternalUser> list(UsersListRequest request, RequestOptions requestOptions) {
return this.rawClient.list(request, requestOptions).body();
}
}
Loading
Loading