Search in sources :

Example 26 with API

use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.

the class Update method addCampaign.

/**
 * Adds an update campaign.
 * <p>
 * Example:
 *
 * <pre>
 * {@code
 * try {
 *     Campaign campaign = new Campaign();
 *     campaign.setName("QuickstartCampaign");
 *     campaign.setDescription("Quick start campaign");
 *     campaign.setState(CampaignState.DRAFT);
 *
 *     Filters deviceFilter = new Filters();
 *     deviceFilter.add(new Filter("state", FilterOperator.EQUAL, "registered"));
 *     campaign.setDeviceFilter(deviceFilter);
 *
 *     String firmwareManifestId = "015f4ac587f500000000000100100249";
 *     campaign.setManifestId(firmwareManifestId);
 *
 *     Campaign newCampaign = updateApi.addCampaign(campaign);
 *     System.out.println("Campaign state: " + newCampaign.getState());
 *     System.out.println("Campaign ID: " + newCampaign.getId());
 *
 * } catch (MbedCloudException e) {
 *     e.printStackTrace();
 * }
 * }
 * </pre>
 *
 * @param campaign
 *            The campaign to add.
 * @return added update campaign.
 * @throws MbedCloudException
 *             if a problem occurred during request processing.
 */
@API
@Nullable
public Campaign addCampaign(@NonNull Campaign campaign) throws MbedCloudException {
    checkNotNull(campaign, TAG_CAMPAIGN);
    checkModelValidity(campaign, TAG_CAMPAIGN);
    final Campaign finalCampaign = campaign;
    return CloudCaller.call(this, "addCampaign()", CampaignAdapter.getMapper(), new CloudCall<UpdateCampaign>() {

        @Override
        public Call<UpdateCampaign> call() {
            return endpoint.getUpdate().updateCampaignCreate(CampaignAdapter.reverseMapAdd(finalCampaign));
        }
    });
}
Also used : CloudCall(com.arm.mbed.cloud.sdk.common.CloudCaller.CloudCall) Call(retrofit2.Call) Campaign(com.arm.mbed.cloud.sdk.update.model.Campaign) UpdateCampaign(com.arm.mbed.cloud.sdk.internal.updateservice.model.UpdateCampaign) UpdateCampaign(com.arm.mbed.cloud.sdk.internal.updateservice.model.UpdateCampaign) API(com.arm.mbed.cloud.sdk.annotations.API) Nullable(com.arm.mbed.cloud.sdk.annotations.Nullable)

Example 27 with API

use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.

the class Update method listCampaignDeviceStates.

/**
 * Lists campaign devices states.
 * <p>
 * Example:
 *
 * <pre>
 * {@code
 * try {
 *     String campaignId = "015f4ac587f500000000000100109294";
 *     CampaignDevicesStatesListOptions options = new CampaignDevicesStatesListOptions();
 *     options.setLimit(10);
 *
 *     ListResponse<CampaignDeviceState> states = updateApi.listCampaignDeviceStates(campaignId, options);
 *     for (CampaignDeviceState state : states) {
 *         System.out.println("Device ID: " + state.getId());
 *         System.out.println("Currently in state: " + state.getState());
 *     }
 * } catch (MbedCloudException e) {
 *     e.printStackTrace();
 * }
 * }
 * </pre>
 *
 * @param campaignId
 *            The ID of the update campaign.
 * @param options
 *            filter options.
 * @return The list of campaign device states corresponding to filter options (One page).
 * @throws MbedCloudException
 *             if a problem occurred during request processing.
 */
@API
@Nullable
public ListResponse<CampaignDeviceState> listCampaignDeviceStates(@NonNull String campaignId, @Nullable CampaignDevicesStatesListOptions options) throws MbedCloudException {
    checkNotNull(campaignId, TAG_CAMPAIGN_ID);
    final String finalId = campaignId;
    final CampaignDevicesStatesListOptions finalOptions = (options == null) ? new CampaignDevicesStatesListOptions() : options;
    return CloudCaller.call(this, "listCampaignDeviceStates()", CampaignDeviceStateAdapter.getListMapper(), new CloudCall<CampaignDeviceMetadataPage>() {

        @Override
        public Call<CampaignDeviceMetadataPage> call() {
            return endpoint.getUpdate().updateCampaignMetadataList(finalId, finalOptions.getLimit(), finalOptions.getOrder().toString(), finalOptions.getAfter(), finalOptions.encodeInclude());
        }
    });
}
Also used : CloudCall(com.arm.mbed.cloud.sdk.common.CloudCaller.CloudCall) Call(retrofit2.Call) CampaignDevicesStatesListOptions(com.arm.mbed.cloud.sdk.update.model.CampaignDevicesStatesListOptions) CampaignDeviceMetadataPage(com.arm.mbed.cloud.sdk.internal.updateservice.model.CampaignDeviceMetadataPage) API(com.arm.mbed.cloud.sdk.annotations.API) Nullable(com.arm.mbed.cloud.sdk.annotations.Nullable)

Example 28 with API

use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.

the class Connect method listObservableResources.

/**
 * Lists device's observable resources.
 *
 * @see Resource#isObservable()
 *      <p>
 *      Example:
 *
 *      <pre>
 * {@code
 * try {
 *     Device device = new Device();
 *     device.setId("015f4ac587f500000000000100100249");
 *
 *     List<Resource> resources = connectApi.listObservableResources(device);
 *     for (Resource resource : resources) {
 *         System.out.println("Resource path: " + resource.getPath());
 *     }
 * } catch (MbedCloudException e) {
 *     e.printStackTrace();
 * }
 * }
 *      </pre>
 *
 * @param device
 *            Device.
 * @return list of observable resources present on a device.
 * @throws MbedCloudException
 *             if a problem occurred during request processing.
 */
@API
@Nullable
public List<Resource> listObservableResources(@NonNull Device device) throws MbedCloudException {
    final List<Resource> resources = listResources(device);
    if (resources == null || resources.isEmpty()) {
        return null;
    }
    final List<Resource> observableResources = new LinkedList<>();
    for (final Resource resource : resources) {
        if (resource.isObservable()) {
            observableResources.add(resource);
        }
    }
    return observableResources.isEmpty() ? null : observableResources;
}
Also used : Resource(com.arm.mbed.cloud.sdk.connect.model.Resource) LinkedList(java.util.LinkedList) API(com.arm.mbed.cloud.sdk.annotations.API) Nullable(com.arm.mbed.cloud.sdk.annotations.Nullable)

Example 29 with API

use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.

the class Connect method notify.

/**
 * Allows a notification to be injected into the notifications system.
 * <p>
 * Example:
 *
 * <pre>
 * {@code
 * try {
 *       String deviceId = "015f4ac587f500000000000100100249";
 *       String resourcePath = "/3200/0/5501";
 *       String payload ="Q2hhbmdlIG1lIQ==";
 *       JSONSerialiser jsonSerialiser = new JSONSerialiser();
 *       String notifications = "{\"async-responses\":[{\"payload\":\"MQ\u003d\u003d\",\"id\":\"sfjasldfjl\"}],\"notifications\""
 *       +":[{\"path\":\"/3200/0/5501\",\"payload\":\"MQ\u003d\u003d\",\"ep\":\"015f4ac587f500000000000100100249\"}]}";
 *
 *       Resource resource = new Resource(deviceId, resourcePath);
 *       api.createResourceSubscriptionObserver(resource, BackpressureStrategy.BUFFER)
 *               .subscribe(new Consumer<Object>() {
 *
 *                   &#64;Override
 *                   public void accept(Object t) throws Exception {
 *                       log("Received notification value", t);
 *                   }
 *               });
 *       api.notify(jsonSerialiser, notifications);
 * } catch (MbedCloudException e) {
 *     e.printStackTrace();
 * }
 * }
 * </pre>
 *
 * @param deserialiser
 *            JSON deserialiser to use.
 * @param dataAsJson
 *            The notification data to inject as JSON String.
 */
@API
public void notify(@Nullable JsonSerialiser deserialiser, @Nullable String dataAsJson) {
    final JsonSerialiser jsonEngine = (deserialiser == null) ? new JsonSerialiser() : deserialiser;
    notify(jsonEngine.fromJson(dataAsJson, NotificationMessage.class));
}
Also used : JsonSerialiser(com.arm.mbed.cloud.sdk.common.JsonSerialiser) NotificationMessage(com.arm.mbed.cloud.sdk.internal.mds.model.NotificationMessage) API(com.arm.mbed.cloud.sdk.annotations.API)

Example 30 with API

use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.

the class Connect method startNotifications.

/**
 * Starts notification pull.
 * <p>
 * If an external callback is not set up (using `update_webhook`) then calling this function is mandatory to get or
 * set resources. Unless {@link ConnectionOptions#setAutostartDaemon(boolean)} has been set to true or left as
 * default.
 * <p>
 * Example:
 *
 * <pre>
 * {@code
 * connectApi.startNotifications();
 * }
 * </pre>
 *
 * @throws MbedCloudException
 *             if a problem occurred during the process.
 */
@API
@Daemon(task = "Notification pull", start = true)
public void startNotifications() throws MbedCloudException {
    Webhook webhook = null;
    try {
        if (isForceClear()) {
            deleteWebhook();
        }
    } catch (MbedCloudException exception) {
    // Nothing to do
    }
    try {
        webhook = getWebhook();
    } catch (MbedCloudException exception) {
    // Nothing to do
    }
    if (webhook != null) {
        logger.throwSdkException("A webhook is currently set up [" + webhook + "]. Notification pull cannot be used at the same time. Please remove the webhook if you want to use this mechanism instead.");
    }
    handlersStore.startNotificationPull();
}
Also used : MbedCloudException(com.arm.mbed.cloud.sdk.common.MbedCloudException) Webhook(com.arm.mbed.cloud.sdk.connect.model.Webhook) Daemon(com.arm.mbed.cloud.sdk.annotations.Daemon) API(com.arm.mbed.cloud.sdk.annotations.API)

Aggregations

API (com.arm.mbed.cloud.sdk.annotations.API)34 CloudCall (com.arm.mbed.cloud.sdk.common.CloudCaller.CloudCall)26 Call (retrofit2.Call)26 Nullable (com.arm.mbed.cloud.sdk.annotations.Nullable)23 Resource (com.arm.mbed.cloud.sdk.connect.model.Resource)5 Device (com.arm.mbed.cloud.sdk.devicedirectory.model.Device)4 Certificate (com.arm.mbed.cloud.sdk.certificates.model.Certificate)3 TrustedCertificateResp (com.arm.mbed.cloud.sdk.internal.iam.model.TrustedCertificateResp)3 ApiKey (com.arm.mbed.cloud.sdk.accountmanagement.model.ApiKey)2 ApiKeyListOptions (com.arm.mbed.cloud.sdk.accountmanagement.model.ApiKeyListOptions)2 GroupListOptions (com.arm.mbed.cloud.sdk.accountmanagement.model.GroupListOptions)2 User (com.arm.mbed.cloud.sdk.accountmanagement.model.User)2 UserListOptions (com.arm.mbed.cloud.sdk.accountmanagement.model.UserListOptions)2 NonNull (com.arm.mbed.cloud.sdk.annotations.NonNull)2 MbedCloudException (com.arm.mbed.cloud.sdk.common.MbedCloudException)2 ListOptions (com.arm.mbed.cloud.sdk.common.listing.ListOptions)2 Webhook (com.arm.mbed.cloud.sdk.connect.model.Webhook)2 Query (com.arm.mbed.cloud.sdk.devicedirectory.model.Query)2 DeviceData (com.arm.mbed.cloud.sdk.internal.devicedirectory.model.DeviceData)2 DeviceQuery (com.arm.mbed.cloud.sdk.internal.devicedirectory.model.DeviceQuery)2