use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.
the class Connect method listSubscriptions.
/**
* Lists all subscriptions.
* <p>
* Warning: Please note that this operation is potentially really expensive and hence, use wisely.
* <p>
* It could be slow for large numbers of connected devices.
* <p>
* Example:
*
* <pre>
* {@code
* try {
*
* List<String> subscriptions = connectApi.listSubscriptions();
* for (Subscription subscription : subscriptions) {
* System.out.println("subscription: " + subscription);
* }
* } catch (MbedCloudException e) {
* e.printStackTrace();
* }
* }
* </pre>
*
* @return list of subscriptions
* @throws MbedCloudException
* if a problem occurred during request processing.
*/
@API
@Nullable
public List<Subscription> listSubscriptions() throws MbedCloudException {
logger.logWarn("listSubscriptions() could be slow for large numbers of connected devices.");
final List<Subscription> subscriptions = new LinkedList<>();
// The following is a workaround until there is a Mbed Cloud endpoint providing such an action.
final Paginator<Device> connectedDevices = listAllConnectedDevices(null);
if (connectedDevices != null) {
for (final Device connectedDevice : connectedDevices) {
final List<String> deviceSubscriptions = listDeviceSubscriptions(connectedDevice);
if (deviceSubscriptions != null) {
subscriptions.add(new Subscription(connectedDevice.getId(), deviceSubscriptions));
}
}
}
return subscriptions.isEmpty() ? null : subscriptions;
}
use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.
the class Connect method listMetrics.
/**
* Lists metrics.
* <p>
* Example:
*
* <pre>
* {@code
* try {
* Calendar startDate = GregorianCalendar(2017,10,30,10,20,56);
* Calendar endDate = GregorianCalendar(2017,11,31,10,20,56);
*
* MetricsStartEndListOptions listOptions = new MetricsStartEndListOptions();
* listOptions.setStart(startDate.getTime());
* listOptions.setEnd(endDate.getTime());
* listOptions.setInterval(new TimePeriod(360)); //Once an hour
*
* ListResponse<Metric> metrics = connectApi.listMetrics(listOptions);
* //Iterates over a page
* for (Metric metric : metrics.getData()) {
* System.out.println("Time: " + dateFormat.format(metric.getTimestamp()));
* System.out.println("Successful bootstraps: " + metric.getSuccessfulBootstraps());
* System.out.println("Successful api calls: " + metric.getSuccessfulApiCalls());
* System.out.println("");
* }
* } catch (MbedCloudException e) {
* e.printStackTrace();
* }
* }
* </pre>
*
* @param options
* metrics options.
* @param <T>
* Type of metrics list options
* @return list of metrics for the corresponding options.
* @throws MbedCloudException
* if a problem occurred during request processing.
*/
@API
@Nullable
public <T extends AbstractMetricsListOptions> ListResponse<Metric> listMetrics(@NonNull T options) throws MbedCloudException {
checkNotNull(options, TAG_METRIC_OPTIONS);
final T finalOptions = options;
final Date finalStart = options instanceof MetricsStartEndListOptions ? ((MetricsStartEndListOptions) options).getStart() : null;
final Date finalEnd = options instanceof MetricsStartEndListOptions ? ((MetricsStartEndListOptions) options).getEnd() : null;
final String finalPeriod = options instanceof MetricsPeriodListOptions ? ((MetricsPeriodListOptions) options).getPeriod().toString() : null;
return CloudCaller.call(this, "listMetrics()", MetricAdapter.getListMapper(), new CloudCall<SuccessfulResponse>() {
@Override
public Call<SuccessfulResponse> call() {
return endpoint.getStatistic().v3MetricsGet(MetricAdapter.mapIncludes(finalOptions.getInclude()), finalOptions.getInterval().toString(), TranslationUtils.toLocalDate(finalStart), TranslationUtils.toLocalDate(finalEnd), finalPeriod, finalOptions.getLimit(), finalOptions.getAfter(), finalOptions.getOrder().toString());
}
});
}
use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.
the class Connect method deleteResourceSubscription.
/**
* Deletes a resource's subscription.
* <p>
* Note: this method will deregister all subscription callbacks or observers for this resource if any.
* <p>
*
* Example:
*
* <pre>
* {@code
* try {
* String deviceId = "015f4ac587f500000000000100100249";
* String resourcePath = "/3200/0/5501";
* Resource buttonResource = new Resource(deviceId, resourcePath);
*
* connectApi.deleteResourceSubscription(buttonResource);
* } catch (MbedCloudException e) {
* e.printStackTrace();
* }
* }
* </pre>
*
* @param resource
* resource to subscribe to.
* @throws MbedCloudException
* if a problem occurred during request processing.
*/
@API
public void deleteResourceSubscription(@NonNull Resource resource) throws MbedCloudException {
checkNotNull(resource, TAG_RESOURCE);
checkModelValidity(resource, TAG_RESOURCE);
final Resource finalResource = resource;
CloudCaller.call(this, "deleteResourceSubscription()", null, new CloudCall<Void>() {
@Override
public Call<Void> call() {
return endpoint.getSubscriptions().v2SubscriptionsDeviceIdResourcePathDelete(finalResource.getDeviceId(), ApiUtils.normalisePath(finalResource.getPath()));
}
});
deregisterResourceSubscriptionCallback(finalResource);
removeResourceSubscriptionObserver(finalResource);
}
use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.
the class AccountManagement method addUser.
/**
* Adds a user.
* <p>
* Example:
*
* <pre>
* {@code
* try {
* User user = new User();
* user.setEmail("javaSDK@arm.com");
* user.setUsername("javaSDK");
* user.setFullName("Java SDK");
*
* User newUser = accountManagementApi.addUser(user);
* System.out.println("User ID: " + newUser.getId());
* } catch (MbedCloudException e) {
* e.printStackTrace();
* }
* }
* </pre>
*
* @param user
* User to add.
* @return added user.
* @throws MbedCloudException
* if a problem occurred during request processing.
*/
@API
@NonNull
public User addUser(@NonNull User user) throws MbedCloudException {
checkNotNull(user, TAG_USER);
checkModelValidity(user, TAG_USER);
final User finalUser = user;
return CloudCaller.call(this, "addUser()", UserAdapter.getMapper(), new CloudCall<UserInfoResp>() {
@Override
public Call<UserInfoResp> call() {
return endpoint.getAdmin().createUser(UserAdapter.reverseMapAdd(finalUser), "create");
}
});
}
use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.
the class AccountManagement method listGroupApiKeys.
/**
* Lists API keys of a group.
* <p>
* Example:
*
* <pre>
* {@code
* try {
* String groupId = "015f4ac587f500000000000100109294";
* ListOptions options = new ListOptions();
* options.setLimit(10);
*
* ListResponse<ApiKey> apiKeys = accountManagementApi.listGroupApiKeys(groupId, options);
* for (ApiKey apiKey : apiKeys) {
* System.out.println("ApiKey: " + apiKey.getKey());
* }
* } catch (MbedCloudException e) {
* e.printStackTrace();
* }
* }
* </pre>
*
* @param groupId
* The group ID of the group.
* @param options
* filter options.
* @return The list of API keys corresponding to groupId and filter options (One page).
* @throws MbedCloudException
* if a problem occurred during request processing.
*/
@API
@Nullable
public ListResponse<ApiKey> listGroupApiKeys(@NonNull String groupId, @Nullable ListOptions options) throws MbedCloudException {
checkNotNull(groupId, TAG_GROUP_ID);
final ListOptions finalOptions = (options == null) ? new ListOptions() : options;
final String finalGroupId = groupId;
return CloudCaller.call(this, "listGroupApiKeys()", ApiKeyAdapter.getListMapper(), new CloudCall<ApiKeyInfoRespList>() {
@Override
public Call<ApiKeyInfoRespList> call() {
return endpoint.getDeveloper().getApiKeysOfGroup(finalGroupId, finalOptions.getLimit(), finalOptions.getAfter(), finalOptions.getOrder().toString(), finalOptions.encodeInclude());
}
});
}
Aggregations