forked from community/device-mgt-plugins
parent
03a21752e2
commit
fd1d62454a
@ -0,0 +1,451 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.mdm.services.android.services;
|
||||
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import io.swagger.annotations.ApiResponse;
|
||||
import io.swagger.annotations.ApiResponses;
|
||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.*;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
@Path("/devices")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public interface DeviceManagementAdminService {
|
||||
|
||||
@POST
|
||||
@Path("/lock-devices")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Adding a Device Lock on Android Devices",
|
||||
notes = "Using this API you have the option of hard locking an Android device, where the Administrator " +
|
||||
"permanently locks the device or screen locking an Android device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Lock operation has successfully been scheduled"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response configureDeviceLock(
|
||||
@ApiParam(name = "cameraBeanWrapper",
|
||||
value = "Device lock configurations with device IDs") DeviceLockBeanWrapper deviceLockBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/unlock-devices")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Adding a Device Unlock on Android Devices",
|
||||
responseContainer = "List",
|
||||
notes = "Using this API you have the option of unlocking an Android device, where the Administrator " +
|
||||
"unlocks the device",
|
||||
response = String.class)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response configureDeviceUnlock(
|
||||
@ApiParam(name = "deviceIDs", value = "DeviceIds to be enable device unlock operation")
|
||||
List<String> deviceIDs);
|
||||
|
||||
|
||||
@POST
|
||||
@Path("/get-location")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Requesting Location Coordinates of Android Devices",
|
||||
responseContainer = "List",
|
||||
notes = "Request location coordinates of Android devices",
|
||||
response = String.class)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Requested Device Coordinates"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")})
|
||||
Response getDeviceLocation(
|
||||
@ApiParam(name = "deviceIDs", value = "DeviceIDs to be requested to get device location")
|
||||
List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("/clear-password")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Clearing the Password on Android Devices",
|
||||
notes = "Clear the password on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response removePassword(
|
||||
@ApiParam(name = "deviceIDs",
|
||||
value = "DeviceIds to be requested to remove password") List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("/control-camera")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Enabling or Disabling the Camera on Android Devices",
|
||||
notes = "Enable or disable the camera on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in creating a new camera instance")
|
||||
})
|
||||
Response configureCamera(
|
||||
@ApiParam(name = "cameraBeanWrapper", value = "Camera enable/disable configurations with device IDs")
|
||||
CameraBeanWrapper cameraBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/get-device-info")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Requesting Information from Android Devices",
|
||||
notes = "Using this REST API you are able to request for Android device details. Once this REST API is" +
|
||||
" executed it will be in the Android operation queue until the device calls the server to retrieve " +
|
||||
"the list of operations that needs to be executed on the device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Device Information"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response getDeviceInformation(
|
||||
@ApiParam(name = "deviceIds", value = "Device IDs to be requested to get device information")
|
||||
List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("/enterprise-wipe")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Enterprise Wiping Android Devices",
|
||||
notes = "Enterprise wipe is the process of deleting enterprise related data on a device while keeping the " +
|
||||
"personal data intact. You are able to enterprise wipe Android devices using this REST API"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance"
|
||||
)})
|
||||
Response wipeDevice(@ApiParam(name = "deviceIDs", value = "Device IDs to be requested to done enterprise-wipe")
|
||||
List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("/wipe-devices")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Factory Resetting an Android Device",
|
||||
notes = "Factory rest or erases all the data stored in the Android devices " +
|
||||
"to restore them back to the original system"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")})
|
||||
Response wipeData(
|
||||
@ApiParam(name = "wipeDataBeanWrapper", value = "Configurations and DeviceIds to be need to done wipe-data")
|
||||
WipeDataBeanWrapper wipeDataBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/get-applications")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Requesting the List of Installed Applications on Android Devices",
|
||||
notes = "Using this REST API the server requests for the list of applications that are installed on" +
|
||||
" the Android devices. Once this REST API is executed it will be in the Android operation queue " +
|
||||
"until the device calls the server to retrieve the list of operations that needs to be executed " +
|
||||
"on the device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "List of applications for specific deviceIdentifier"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response getApplications(
|
||||
@ApiParam(name = "deviceIDs", value = "Device Ids to be need to get applications which already installed")
|
||||
List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("/ring-devices")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Ringing Android Devices",
|
||||
notes = "Ring Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response ringDevice(
|
||||
@ApiParam(name = "deviceIDs", value = "Device Ids needs to be ring") List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("/reboot-devices")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Rebooting Android Devices",
|
||||
notes = "Reboot Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response rebootDevice(
|
||||
@ApiParam(name = "deviceIDs", value = "Device Ids needs to be rebooted") List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Muting Android Devices",
|
||||
notes = "Mute Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
@Path("/mute-devices")
|
||||
Response muteDevice(
|
||||
@ApiParam(name = "deviceIDs", value = "DeviceIDs need to be muted") List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("/install-application")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Installing an Application on Android Devices",
|
||||
notes = "Install an application on an Android device. If the device you are installing the application" +
|
||||
" on has the WSO2 system service installed, the application installation will happen in silent " +
|
||||
"mode, else the device user's consent will be required"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response installApplication(
|
||||
@ApiParam(name = "applicationInstallationBeanWrapper", value = "Properties of installed apps and device IDs")
|
||||
ApplicationInstallationBeanWrapper applicationInstallationBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/update-application")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Updating an Application on Android Devices",
|
||||
notes = "Update an application on an Android device. If the device you are updating the application" +
|
||||
" has the WSO2 system service installed, the application update will happen in silent " +
|
||||
"mode, else the device user's consent will be required"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response updateApplication(
|
||||
@ApiParam(name = "applicationUpdateBeanWrapper", value = "Properties of updated apps and device IDs")
|
||||
ApplicationUpdateBeanWrapper applicationUpdateBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/uninstall-application")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Uninstalling an Application from Android Devices",
|
||||
notes = "Uninstall an application from Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response uninstallApplication(
|
||||
@ApiParam(name = "applicationUninstallationBeanWrapper",
|
||||
value = "applicationUninstallationConfigs and Device Ids")
|
||||
ApplicationUninstallationBeanWrapper applicationUninstallationBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/blacklist-applications")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Get BlackListed Applications",
|
||||
notes = "Getting BlackListed Applications"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response blacklistApplications(
|
||||
@ApiParam(name = "blacklistApplicationsBeanWrapper", value = "BlacklistApplications Configuration and DeviceIds")
|
||||
BlacklistApplicationsBeanWrapper blacklistApplicationsBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/upgrade-firmware")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Upgrading device firmware",
|
||||
notes = "Device firmware upgrade"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response upgradeFirmware(
|
||||
@ApiParam(name = "upgradeFirmwareBeanWrapper",
|
||||
value = "Firmware upgrade configuration and DeviceIds")
|
||||
UpgradeFirmwareBeanWrapper upgradeFirmwareBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/configure-vpn")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Configuring VPN on Android devices",
|
||||
notes = "Configure VPN on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response configureVPN(
|
||||
@ApiParam(name = "vpnBeanWrapper",
|
||||
value = "VPN configuration and DeviceIds")
|
||||
VpnBeanWrapper vpnBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/send-notification")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Sending a Notification to Android Devices",
|
||||
notes = "Send a notification to Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response sendNotification(
|
||||
@ApiParam(name = "notificationBeanWrapper",
|
||||
value = "Notification Configurations and device Ids")
|
||||
NotificationBeanWrapper notificationBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/configure-wifi")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Configuring Wi-Fi on Android Devices",
|
||||
notes = "Configure Wi-Fi on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response configureWifi(
|
||||
@ApiParam(name = "wifiBeanWrapper",
|
||||
value = "WifiConfigurations and Device Ids") WifiBeanWrapper wifiBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/encrypt-storage")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Encrypting Storage on Android Devices",
|
||||
notes = "Encrypt the data stored on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response encryptStorage(
|
||||
@ApiParam(name = "encryptionBeanWrapper",
|
||||
value = "Configurations and deviceIds need to be done data encryption")
|
||||
EncryptionBeanWrapper encryptionBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/change-lock-code")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Changing the Lock Code on Android Devices",
|
||||
notes = "Change the lock code on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response changeLockCode(
|
||||
@ApiParam(name = "lockCodeBeanWrapper",
|
||||
value = "Configurations and device Ids need to be done change lock code")
|
||||
LockCodeBeanWrapper lockCodeBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("/set-password-policy")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Setting a Passcode Policy on Android Devices",
|
||||
notes = "Set a password policy on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response setPasswordPolicy(
|
||||
@ApiParam(name = "passwordPolicyBeanWrapper",
|
||||
value = "Password Policy Configurations and Device Ids")
|
||||
PasswordPolicyBeanWrapper passwordPolicyBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("set-webclip")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Setting a Web Clip on Android Devices",
|
||||
notes = "Set a web clip on Android devices. A web clip is used to add a bookmark to a web application"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 202, message = "Accepted"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response setWebClip(
|
||||
@ApiParam(name = "webClipBeanWrapper",
|
||||
value = "Configurations to need set web clip on device and device Ids")
|
||||
WebClipBeanWrapper webClipBeanWrapper);
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,131 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.mdm.services.android.services;
|
||||
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import io.swagger.annotations.ApiResponse;
|
||||
import io.swagger.annotations.ApiResponses;
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
@Path("/devices")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public interface DeviceManagementService {
|
||||
|
||||
@PUT
|
||||
@Path("/{id}/applications")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "PUT",
|
||||
value = "Updating an ApplicationList",
|
||||
notes = "Update application list in server side."
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 202, message = "Device information has modified successfully"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while modifying the application list")
|
||||
})
|
||||
Response updateApplicationList(@ApiParam(name = "id", value = "deviceIdentifier") @PathParam("id") String id,
|
||||
@ApiParam(name = "applications", value = "updatable applications")
|
||||
List<Application> applications);
|
||||
|
||||
@GET
|
||||
@Path("/{id}/pending-operations")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "PUT",
|
||||
value = "Getting Pending Android Device Operations",
|
||||
responseContainer = "List",
|
||||
notes = "The Android agent communicates with the server to get the operations that are queued up " +
|
||||
"at the server end for a given device using this REST API",
|
||||
response = Operation.class)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "List of pending operations"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving operation management service instance")
|
||||
})
|
||||
Response getPendingOperations(
|
||||
@ApiParam(name = "id", value = "DeviceIdentifier") @PathParam("id") String id,
|
||||
@ApiParam(name = "resultOperations", value = "Device Operation Status")
|
||||
List<? extends Operation> resultOperations);
|
||||
|
||||
@POST
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Registering an Android Device",
|
||||
notes = "When carrying out device registration via an Android device, you need to initially install" +
|
||||
" an Android Agent on the device, before being able to register the device with WSO2 EMM. Instead," +
|
||||
" you can use this REST API to register an Android device with WSO2 EMM, without having to install" +
|
||||
" an Android Agent on the respective device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Device enrollment succeeded"),
|
||||
@ApiResponse(code = 500, message = "Device enrollment failed"),
|
||||
})
|
||||
Response enrollDevice(@ApiParam(name = "device", value = "Device Information to be enroll") Device device);
|
||||
|
||||
@GET
|
||||
@Path("/{id}/status")
|
||||
@ApiOperation(
|
||||
httpMethod = "GET",
|
||||
value = "Getting the Registration Status of an Android Device",
|
||||
notes = "Use this REST API to retrieve the registration status of an Android device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Device has already enrolled"),
|
||||
@ApiResponse(code = 404, message = "Device not found")
|
||||
})
|
||||
Response isEnrolled(@ApiParam(name = "id", value = "DeviceIdentifier") @PathParam("id") String id);
|
||||
|
||||
@PUT
|
||||
@Path("/{id}")
|
||||
@ApiOperation(
|
||||
httpMethod = "PUT",
|
||||
value = "Updating the Registration Details of an Android Device",
|
||||
notes = "Use this REST API to update the registration details of an Android device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Device enrollment has updated successfully"),
|
||||
@ApiResponse(code = 404, message = "Device not found for enrollment")
|
||||
})
|
||||
Response modifyEnrollment(@ApiParam(name = "id", value = "DeviceIdentifier") @PathParam("id") String id,
|
||||
@ApiParam(name = "device", value = "Device information to be modify") Device device);
|
||||
|
||||
@DELETE
|
||||
@Path("/{id}")
|
||||
@ApiOperation(
|
||||
httpMethod = "DELETE",
|
||||
value = "Un-registering an Android Device",
|
||||
notes = "Use this REST API to unregister a specific Android device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Device has removed successfully"),
|
||||
@ApiResponse(code = 404, message = "Device not found")
|
||||
})
|
||||
Response disEnrollDevice(@ApiParam(name = "id", value = "DeviceIdentifier") @PathParam("id") String id);
|
||||
|
||||
}
|
57
components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/configuration/ConfigurationMgtService.java → components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/DeviceTypeConfigurationService.java
57
components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/configuration/ConfigurationMgtService.java → components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/DeviceTypeConfigurationService.java
@ -0,0 +1,115 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.mdm.services.android.services;
|
||||
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import io.swagger.annotations.ApiResponse;
|
||||
import io.swagger.annotations.ApiResponses;
|
||||
import org.wso2.carbon.mdm.services.android.bean.DeviceState;
|
||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.EventBeanWrapper;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
@Path("/events")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public interface EventReceiverService {
|
||||
|
||||
@POST
|
||||
@Path("/publish-event")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Event Publishing via REST API.",
|
||||
notes = "Publish events received by the WSO2 EMM Android client to WSO2 DAS using this API."
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Event is published successfully."),
|
||||
@ApiResponse(code = 500, message = "Error occurred while publishing the events from Android agent.")
|
||||
})
|
||||
Response publishEvents(
|
||||
@ApiParam(name = "eventBeanWrapper",
|
||||
value = "Information of the agent event to be published on DAS.")
|
||||
EventBeanWrapper eventBeanWrapper);
|
||||
|
||||
@GET
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting Event Details of a Device.",
|
||||
notes = "Get the event details received by an Android device using this API.",
|
||||
response = DeviceState.class,
|
||||
responseContainer = "List"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "List of Device statuses."),
|
||||
@ApiResponse(code = 500,
|
||||
message = "Error occurred while getting published events for specific given device.")
|
||||
})
|
||||
Response retrieveAlert(
|
||||
@ApiParam(name = "deviceId", value = "DeviceId which need to retrieve published events.")
|
||||
@QueryParam("id") String deviceId);
|
||||
|
||||
@GET
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting Event Details for a Given Time Period.",
|
||||
notes = "Get the event details of a device for a given time duration using this API.",
|
||||
response = DeviceState.class,
|
||||
responseContainer = "List"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "event details of a device for a given time duration"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while getting published events for" +
|
||||
" specific device on given Date.")
|
||||
})
|
||||
Response retrieveAlertFromDate(
|
||||
@ApiParam(name = "id",
|
||||
value = "Device Identifier to be need to retrieve events.")
|
||||
@QueryParam("id") String deviceId,
|
||||
@ApiParam(name = "from", value = "From Date.")
|
||||
@QueryParam("from") long from,
|
||||
@ApiParam(name = "to", value = "To Date.")
|
||||
@QueryParam("to") long to);
|
||||
|
||||
@GET
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Retrieves event details by type",
|
||||
notes = "Get the event details of a device for a given time duration using this API.",
|
||||
response = DeviceState.class,
|
||||
responseContainer = "List"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "event details of a device for a given time duration"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while getting published events for" +
|
||||
" specific device on given Date.")
|
||||
})
|
||||
Response retrieveAlertByType(
|
||||
@ApiParam(name = "id", value = "Device Identifier to be need to retrieve events.")
|
||||
@QueryParam("id") String deviceId,
|
||||
@ApiParam(name = "type", value = "Type of the Alert to be need to retrieve events.")
|
||||
@QueryParam("type") String type);
|
||||
|
||||
}
|
@ -1,145 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.services.android.services.devicemgt;
|
||||
|
||||
import io.swagger.annotations.*;
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
||||
import org.wso2.carbon.mdm.services.android.exception.AndroidAgentException;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Android Device Management REST-API implementation.
|
||||
* All end points supports JSON, XMl with content negotiation.
|
||||
*/
|
||||
|
||||
@Api(value = "DeviceManagementService", description = "Android Device Management REST-API implementation.")
|
||||
@Produces({"application/json", "application/xml"})
|
||||
@Consumes({"application/json", "application/xml"})
|
||||
public interface DeviceManagementService {
|
||||
|
||||
|
||||
/**
|
||||
* Get all devices.Returns list of Android devices registered in MDM.
|
||||
*
|
||||
* @return Device List
|
||||
* @throws org.wso2.carbon.mdm.services.android.exception.AndroidAgentException
|
||||
*/
|
||||
@GET
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting Details of All Android Devices",
|
||||
notes = "Use this REST API to retrieve the details " +
|
||||
"(e.g., the Android device type, serial number, International Mobile Station Equipment Identity " +
|
||||
"(IMEI), owner, version, model etc.) of all Android devices that are registered with WSO2 EMM.",
|
||||
response = Device.class,
|
||||
responseContainer = "List"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "List of Devices"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while fetching the device list")
|
||||
})
|
||||
Response getAllDevices() throws AndroidAgentException;
|
||||
|
||||
/**
|
||||
* Fetch Android device details of a given device Id.
|
||||
*
|
||||
* @param id Device Id
|
||||
* @return Device
|
||||
* @throws org.wso2.carbon.mdm.services.android.exception.AndroidAgentException
|
||||
*/
|
||||
@GET
|
||||
@Path("{id}")
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting Details of an Android Device",
|
||||
notes = "Use this REST API to retrieve the details " +
|
||||
"(e.g., the Android device type, serial number, International Mobile Station Equipment Identity " +
|
||||
"(IMEI), owner, version, model etc.) of a specific Android device that is registered with WSO2 EMM",
|
||||
response = Device.class
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Information of the given device"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while fetching the device information")
|
||||
})
|
||||
Response getDevice(@ApiParam(name = "id", value = "deviceIdentifier")
|
||||
@PathParam("id") String id) throws AndroidAgentException;
|
||||
|
||||
/**
|
||||
* Update Android device details of given device id.
|
||||
*
|
||||
* @param id Device Id
|
||||
* @param device Device Details
|
||||
* @return Message
|
||||
* @throws AndroidAgentException
|
||||
*/
|
||||
@PUT
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "PUT",
|
||||
value = "Updating the Details of an Android Device",
|
||||
notes = "Use this REST API to update the details of an Android device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 202, message = "The device enrollment details has been updated successfully"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while modifying the device information"),
|
||||
@ApiResponse(code = 304, message = "Device not found for the update")
|
||||
})
|
||||
@Path("{id}")
|
||||
Response updateDevice(@ApiParam(name = "id", value = "deviceIdentifier")
|
||||
@PathParam("id") String id, @ApiParam(name = "device", value = "deviceIdentifier")
|
||||
Device device) throws AndroidAgentException;
|
||||
|
||||
@POST
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Updating an ApplicationList",
|
||||
notes = "Update application list in server side."
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 202, message = "Device information has modified successfully"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while modifying the application list")
|
||||
})
|
||||
Response updateApplicationList(@ApiParam(name = "id", value = "deviceIdentifier") @PathParam("id") String id,
|
||||
@ApiParam(name = "applications", value = "updatable applications")
|
||||
List<Application> applications) throws AndroidAgentException;
|
||||
|
||||
@GET
|
||||
@Path("license")
|
||||
@Produces("text/html")
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting the License Agreement for Android Device Registration",
|
||||
notes = "Use this REST API to retrieve the license agreement that is used for the Android device " +
|
||||
"registration process",
|
||||
response = String.class)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Licence agreement"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while retrieving the license configured for Android " +
|
||||
"device enrolment")
|
||||
})
|
||||
Response getLicense() throws AndroidAgentException;
|
||||
}
|
@ -1,179 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.services.android.services.devicemgt.impl;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.license.mgt.License;
|
||||
import org.wso2.carbon.mdm.services.android.exception.AndroidAgentException;
|
||||
import org.wso2.carbon.mdm.services.android.services.devicemgt.DeviceManagementService;
|
||||
import org.wso2.carbon.mdm.services.android.util.AndroidAPIUtils;
|
||||
import org.wso2.carbon.mdm.services.android.util.Message;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Android Device Management REST-API implementation.
|
||||
* All end points supports JSON, XMl with content negotiation.
|
||||
*/
|
||||
@Produces({"application/json", "application/xml"})
|
||||
@Consumes({"application/json", "application/xml"})
|
||||
public class DeviceManagementServiceImpl implements DeviceManagementService {
|
||||
|
||||
private static Log log = LogFactory.getLog(DeviceManagementServiceImpl.class);
|
||||
|
||||
/**
|
||||
* Get all devices.Returns list of Android devices registered in MDM.
|
||||
*
|
||||
* @return Device List
|
||||
* @throws AndroidAgentException
|
||||
*/
|
||||
@GET
|
||||
public Response getAllDevices()
|
||||
throws AndroidAgentException {
|
||||
String msg;
|
||||
List<Device> devices;
|
||||
|
||||
try {
|
||||
devices = AndroidAPIUtils.getDeviceManagementService().
|
||||
getAllDevices(DeviceManagementConstants.MobileDeviceTypes.
|
||||
MOBILE_DEVICE_TYPE_ANDROID);
|
||||
} catch (DeviceManagementException e) {
|
||||
msg = "Error occurred while fetching the device list.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(devices).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch Android device details of a given device Id.
|
||||
*
|
||||
* @param id Device Id
|
||||
* @return Device
|
||||
* @throws AndroidAgentException
|
||||
*/
|
||||
@GET
|
||||
@Path("{id}")
|
||||
public Response getDevice(@PathParam("id") String id)
|
||||
throws AndroidAgentException {
|
||||
|
||||
String msg;
|
||||
Device device;
|
||||
|
||||
try {
|
||||
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
|
||||
device = AndroidAPIUtils.getDeviceManagementService().getDevice(deviceIdentifier);
|
||||
if (device == null) {
|
||||
return Response.status(Response.Status.NOT_FOUND).build();
|
||||
}
|
||||
} catch (DeviceManagementException deviceMgtEx) {
|
||||
msg = "Error occurred while fetching the device information.";
|
||||
log.error(msg, deviceMgtEx);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(device).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update Android device details of given device id.
|
||||
*
|
||||
* @param id Device Id
|
||||
* @param device Device Details
|
||||
* @return Message
|
||||
* @throws AndroidAgentException
|
||||
*/
|
||||
@PUT
|
||||
@Path("{id}")
|
||||
public Response updateDevice(@PathParam("id") String id, Device device)
|
||||
throws AndroidAgentException {
|
||||
String msg;
|
||||
Message responseMessage = new Message();
|
||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||
deviceIdentifier.setId(id);
|
||||
deviceIdentifier
|
||||
.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
|
||||
boolean result;
|
||||
try {
|
||||
device.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
|
||||
result = AndroidAPIUtils.getDeviceManagementService()
|
||||
.updateDeviceInfo(deviceIdentifier, device);
|
||||
if (result) {
|
||||
responseMessage.setResponseMessage("Device information has modified successfully.");
|
||||
return Response.status(Response.Status.ACCEPTED).entity(responseMessage).build();
|
||||
} else {
|
||||
responseMessage.setResponseMessage("Device not found for the update.");
|
||||
return Response.status(Response.Status.NOT_MODIFIED).entity(responseMessage).build();
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
msg = "Error occurred while modifying the device information.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("appList/{id}")
|
||||
public Response updateApplicationList(@PathParam("id") String id, List<Application> applications)
|
||||
throws
|
||||
AndroidAgentException {
|
||||
|
||||
Message responseMessage = new Message();
|
||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||
deviceIdentifier.setId(id);
|
||||
deviceIdentifier.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
|
||||
try {
|
||||
AndroidAPIUtils.getApplicationManagerService().
|
||||
updateApplicationListInstalledInDevice(deviceIdentifier, applications);
|
||||
responseMessage.setResponseMessage("Device information has modified successfully.");
|
||||
return Response.status(Response.Status.ACCEPTED).entity(responseMessage).build();
|
||||
} catch (ApplicationManagementException e) {
|
||||
String msg = "Error occurred while modifying the application list.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("license")
|
||||
@Produces("text/html")
|
||||
public Response getLicense() throws AndroidAgentException {
|
||||
License license = null;
|
||||
|
||||
try {
|
||||
license =
|
||||
AndroidAPIUtils.getDeviceManagementService().getLicense(
|
||||
DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID,
|
||||
DeviceManagementConstants.LanguageCodes.LANGUAGE_CODE_ENGLISH_US);
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while retrieving the license configured for Android device enrolment";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity((license == null) ? null : license.getText()).build();
|
||||
}
|
||||
|
||||
}
|
@ -1,97 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.services.android.services.enrollment;
|
||||
|
||||
import io.swagger.annotations.*;
|
||||
import org.wso2.carbon.mdm.services.android.exception.AndroidAgentException;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
/**
|
||||
* Android Device Enrollment REST-API implementation.
|
||||
* All end points supports JSON, XMl with content negotiation.
|
||||
*/
|
||||
|
||||
@Api(value = "EnrollmentService", description = "Android Device Enrollment REST-API implementation.")
|
||||
@Produces({"application/json", "application/xml"})
|
||||
@Consumes({"application/json", "application/xml"})
|
||||
public interface EnrollmentService {
|
||||
|
||||
@POST
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Registering an Android Device",
|
||||
notes = "When carrying out device registration via an Android device, you need to initially install" +
|
||||
" an Android Agent on the device, before being able to register the device with WSO2 EMM. Instead," +
|
||||
" you can use this REST API to register an Android device with WSO2 EMM, without having to install" +
|
||||
" an Android Agent on the respective device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Device enrollment succeeded"),
|
||||
@ApiResponse(code = 500, message = "Device enrollment failed"),
|
||||
})
|
||||
Response enrollDevice(@ApiParam(name = "device", value = "Device Information to be enroll")
|
||||
org.wso2.carbon.device.mgt.common.Device device) throws AndroidAgentException;
|
||||
|
||||
@GET
|
||||
@Path("{deviceId}")
|
||||
@ApiOperation(
|
||||
httpMethod = "GET",
|
||||
value = "Getting the Registration Status of an Android Device",
|
||||
notes = "Use this REST API to retrieve the registration status of an Android device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 202, message = "Device has already enrolled"),
|
||||
@ApiResponse(code = 404, message = "Device not found")
|
||||
})
|
||||
Response isEnrolled(@ApiParam(name = "deviceId", value = "DeviceIdentifier") @PathParam("deviceId") String id)
|
||||
throws AndroidAgentException;
|
||||
|
||||
@PUT
|
||||
@Path("{deviceId}")
|
||||
@ApiOperation(
|
||||
httpMethod = "PUT",
|
||||
value = "Updating the Registration Details of an Android Device",
|
||||
notes = "Use this REST API to update the registration details of an Android device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 202, message = "Device enrollment has updated successfully"),
|
||||
@ApiResponse(code = 404, message = "Device not found for enrollment")
|
||||
})
|
||||
Response modifyEnrollment(@ApiParam(name = "deviceId", value = "DeviceIdentifier") @PathParam("deviceId") String id,
|
||||
@ApiParam(name = "device", value = "Device information to be modify")
|
||||
org.wso2.carbon.device.mgt.common.Device device)
|
||||
throws AndroidAgentException;
|
||||
|
||||
@DELETE
|
||||
@ApiOperation(
|
||||
httpMethod = "DELETE",
|
||||
value = "Un-registering an Android Device",
|
||||
notes = "Use this REST API to unregister a specific Android device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 202, message = "Device has removed successfully"),
|
||||
@ApiResponse(code = 404, message = "Device not found")
|
||||
})
|
||||
@Path("{deviceId}")
|
||||
Response disEnrollDevice(@ApiParam(name = "deviceId", value = "DeviceIdentifier") @PathParam("deviceId") String id)
|
||||
throws AndroidAgentException;
|
||||
}
|
@ -1,151 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.services.android.services.enrollment.impl;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.mdm.services.android.exception.AndroidAgentException;
|
||||
import org.wso2.carbon.mdm.services.android.services.enrollment.EnrollmentService;
|
||||
import org.wso2.carbon.mdm.services.android.util.AndroidAPIUtils;
|
||||
import org.wso2.carbon.mdm.services.android.util.Message;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
/**
|
||||
* Android Device Enrollment REST-API implementation.
|
||||
* All end points supports JSON, XMl with content negotiation.
|
||||
*/
|
||||
@Produces({"application/json", "application/xml"})
|
||||
@Consumes({"application/json", "application/xml"})
|
||||
public class EnrollmentServiceImpl implements EnrollmentService {
|
||||
|
||||
private static Log log = LogFactory.getLog(EnrollmentService.class);
|
||||
|
||||
@POST
|
||||
public Response enrollDevice(org.wso2.carbon.device.mgt.common.Device device)
|
||||
throws AndroidAgentException {
|
||||
|
||||
Message responseMsg = new Message();
|
||||
String msg;
|
||||
try {
|
||||
device.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
|
||||
device.getEnrolmentInfo().setOwner(AndroidAPIUtils.getAuthenticatedUser());
|
||||
boolean status = AndroidAPIUtils.getDeviceManagementService().enrollDevice(device);
|
||||
if (status) {
|
||||
Response.status(Response.Status.CREATED);
|
||||
responseMsg.setResponseMessage("Device enrollment succeeded.");
|
||||
return Response.status(Response.Status.CREATED).entity(responseMsg).build();
|
||||
} else {
|
||||
Response.status(Response.Status.INTERNAL_SERVER_ERROR);
|
||||
responseMsg.setResponseMessage("Device enrollment failed.");
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(responseMsg).build();
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
msg = "Error occurred while enrolling the device";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("{deviceId}")
|
||||
public Response isEnrolled(@PathParam("deviceId") String id) throws AndroidAgentException {
|
||||
String msg;
|
||||
boolean result;
|
||||
Message responseMsg = new Message();
|
||||
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
|
||||
|
||||
try {
|
||||
result = AndroidAPIUtils.getDeviceManagementService().isEnrolled(deviceIdentifier);
|
||||
if (result) {
|
||||
responseMsg.setResponseMessage("Device has already enrolled");
|
||||
responseMsg.setResponseCode(Response.Status.ACCEPTED.toString());
|
||||
return Response.status(Response.Status.ACCEPTED).entity(responseMsg).build();
|
||||
} else {
|
||||
responseMsg.setResponseMessage("Device not found");
|
||||
responseMsg.setResponseCode(Response.Status.NOT_FOUND.toString());
|
||||
return Response.status(Response.Status.NOT_FOUND).entity(responseMsg).build();
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
msg = "Error occurred while checking enrollment status of the device.";
|
||||
responseMsg.setResponseMessage(msg);
|
||||
responseMsg.setResponseCode(Response.Status.INTERNAL_SERVER_ERROR.toString());
|
||||
Response.status(Response.Status.INTERNAL_SERVER_ERROR);
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
@PUT
|
||||
@Path("{deviceId}")
|
||||
public Response modifyEnrollment(@PathParam("deviceId") String id,
|
||||
org.wso2.carbon.device.mgt.common.Device device)
|
||||
throws AndroidAgentException {
|
||||
String msg;
|
||||
boolean result;
|
||||
Message responseMsg = new Message();
|
||||
try {
|
||||
device.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
|
||||
result = AndroidAPIUtils.getDeviceManagementService().modifyEnrollment(device);
|
||||
if (result) {
|
||||
responseMsg.setResponseMessage("Device enrollment has updated successfully");
|
||||
responseMsg.setResponseCode(Response.Status.ACCEPTED.toString());
|
||||
return Response.status(Response.Status.ACCEPTED).entity(responseMsg).build();
|
||||
} else {
|
||||
responseMsg.setResponseMessage("Device not found for enrollment");
|
||||
responseMsg.setResponseCode(Response.Status.NOT_MODIFIED.toString());
|
||||
return Response.status(Response.Status.NOT_MODIFIED).entity(responseMsg).build();
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
msg = "Error occurred while modifying enrollment of the device";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
@DELETE
|
||||
@Path("{deviceId}")
|
||||
public Response disEnrollDevice(@PathParam("deviceId") String id) throws AndroidAgentException {
|
||||
Message responseMsg = new Message();
|
||||
boolean result;
|
||||
String msg;
|
||||
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
|
||||
|
||||
try {
|
||||
result = AndroidAPIUtils.getDeviceManagementService().disenrollDevice(deviceIdentifier);
|
||||
if (result) {
|
||||
responseMsg.setResponseMessage("Device has removed successfully");
|
||||
responseMsg.setResponseCode(Response.Status.ACCEPTED.toString());
|
||||
return Response.status(Response.Status.ACCEPTED).entity(responseMsg).build();
|
||||
} else {
|
||||
responseMsg.setResponseMessage("Device not found");
|
||||
responseMsg.setResponseCode(Response.Status.NOT_FOUND.toString());
|
||||
return Response.status(Response.Status.NOT_FOUND).entity(responseMsg).build();
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
msg = "Error occurred while dis enrolling the device";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,124 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.services.android.services.event;
|
||||
|
||||
import io.swagger.annotations.*;
|
||||
import org.wso2.carbon.mdm.services.android.bean.DeviceState;
|
||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.EventBeanWrapper;
|
||||
import org.wso2.carbon.mdm.services.android.exception.AndroidAgentException;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
/**
|
||||
* APIs related to events published from Android agent are implemented here.
|
||||
*/
|
||||
@Api(value = "EventService", description = "Android Device Management REST-API implementation.")
|
||||
public interface EventService {
|
||||
String ACCEPT = "Accept";
|
||||
|
||||
@POST
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Event Publishing via REST API.",
|
||||
notes = "Publish events received by the WSO2 EMM Android client to WSO2 DAS using this API."
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Event is published successfully."),
|
||||
@ApiResponse(code = 500, message = "Error occurred while publishing the events from Android agent.")
|
||||
})
|
||||
Response publishEvents(@ApiParam(name = "acceptHeader", value = "Accept Header.")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "eventBeanWrapper",
|
||||
value = "Information of the agent event to be published on DAS.")
|
||||
EventBeanWrapper eventBeanWrapper) throws AndroidAgentException;
|
||||
@GET
|
||||
@Path("{deviceId}")
|
||||
@Produces("application/json")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting Event Details of a Device.",
|
||||
notes = "Get the event details received by an Android device using this API.",
|
||||
response = DeviceState.class,
|
||||
responseContainer = "List"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "List of Device statuses."),
|
||||
@ApiResponse(code = 500,
|
||||
message = "Error occurred while getting published events for specific given device.")
|
||||
})
|
||||
Response retrieveAlert(@ApiParam(name = "acceptHeader", value = "Accept Header.")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "deviceId", value = "DeviceId which need to retrieve published events.")
|
||||
@PathParam("deviceId") String deviceId) throws AndroidAgentException;
|
||||
|
||||
@GET
|
||||
@Path("{deviceId}/date")
|
||||
@Produces("application/json")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting Event Details for a Given Time Period.",
|
||||
notes = "Get the event details of a device for a given time duration using this API.",
|
||||
response = DeviceState.class,
|
||||
responseContainer = "List"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "event details of a device for a given time duration"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while getting published events for" +
|
||||
" specific device on given Date.")
|
||||
})
|
||||
Response retrieveAlertFromDate(@ApiParam(name = "acceptHeader", value = "Accept Header.")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "deviceId",
|
||||
value = "Device Identifier to be need to retrieve events.")
|
||||
@PathParam("deviceId") String deviceId,
|
||||
@ApiParam(name = "from", value = "From Date.")
|
||||
@QueryParam("from") long from,
|
||||
@ApiParam(name = "to", value = "To Date.")
|
||||
@QueryParam("to") long to) throws AndroidAgentException;
|
||||
|
||||
@GET
|
||||
@Path("{deviceId}/type/{type}")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting Event Details for a Given Time Period.",
|
||||
notes = "Get the event details of a device for a given time duration using this API.",
|
||||
response = DeviceState.class,
|
||||
responseContainer = "List"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "event details of a device for a given time duration"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while getting published events for" +
|
||||
" specific device on given Date.")
|
||||
})
|
||||
Response retrieveAlertType(@ApiParam(name = "acceptHeader", value = "Accept Header.")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "deviceId", value = "Device Identifier to be need to retrieve events.")
|
||||
@PathParam("deviceId") String deviceId,
|
||||
@ApiParam(name = "type", value = "Type of the Alert to be need to retrieve events.")
|
||||
@PathParam("type") String type) throws AndroidAgentException;
|
||||
}
|
638
components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/operationmgt/impl/OperationMgtServiceImpl.java → components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceManagementAdminServiceImpl.java
638
components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/operationmgt/impl/OperationMgtServiceImpl.java → components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceManagementAdminServiceImpl.java
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,254 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.mdm.services.android.services.impl;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
||||
import org.wso2.carbon.mdm.services.android.services.DeviceManagementService;
|
||||
import org.wso2.carbon.mdm.services.android.util.AndroidAPIUtils;
|
||||
import org.wso2.carbon.mdm.services.android.util.AndroidConstants;
|
||||
import org.wso2.carbon.mdm.services.android.util.AndroidDeviceUtils;
|
||||
import org.wso2.carbon.mdm.services.android.util.Message;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
|
||||
import org.wso2.carbon.policy.mgt.common.monitor.PolicyComplianceException;
|
||||
import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
@Path("/devices")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public class DeviceManagementServiceImpl implements DeviceManagementService {
|
||||
|
||||
private static final String OPERATION_ERROR_STATUS = "ERROR";
|
||||
private static final Log log = LogFactory.getLog(DeviceManagementServiceImpl.class);
|
||||
|
||||
@PUT
|
||||
@Path("/{id}/applications")
|
||||
@Override
|
||||
public Response updateApplicationList(@PathParam("id") String id, List<Application> applications) {
|
||||
Message responseMessage = new Message();
|
||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||
deviceIdentifier.setId(id);
|
||||
deviceIdentifier.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
|
||||
try {
|
||||
AndroidAPIUtils.getApplicationManagerService().
|
||||
updateApplicationListInstalledInDevice(deviceIdentifier, applications);
|
||||
responseMessage.setResponseMessage("Device information has modified successfully.");
|
||||
return Response.status(Response.Status.ACCEPTED).entity(responseMessage).build();
|
||||
} catch (ApplicationManagementException e) {
|
||||
String msg = "Error occurred while modifying the application list.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{id}/pending-operations")
|
||||
@Override
|
||||
public Response getPendingOperations(@PathParam("id") String id, List<? extends Operation> resultOperations) {
|
||||
if (id == null || id.isEmpty()) {
|
||||
String msg = "Device identifier is null or empty, hence returning device not found";
|
||||
log.error(msg);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
|
||||
try {
|
||||
if (!AndroidDeviceUtils.isValidDeviceIdentifier(deviceIdentifier)) {
|
||||
String msg = "Device not found for identifier '" + id + "'";
|
||||
log.error(msg);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Invoking Android pending operations:" + id);
|
||||
}
|
||||
if (resultOperations != null && !resultOperations.isEmpty()) {
|
||||
updateOperations(id, resultOperations);
|
||||
}
|
||||
} catch (OperationManagementException e) {
|
||||
String msg = "Issue in retrieving operation management service instance";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
} catch (PolicyComplianceException e) {
|
||||
String msg = "Issue in updating Monitoring operation";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Issue in retrieving device management service instance";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
} catch (ApplicationManagementException e) {
|
||||
String msg = "Issue in retrieving application management service instance";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
} catch (NotificationManagementException e) {
|
||||
String msg = "Issue in retrieving Notification management service instance";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
|
||||
List<? extends Operation> pendingOperations;
|
||||
try {
|
||||
pendingOperations = AndroidAPIUtils.getPendingOperations(deviceIdentifier);
|
||||
} catch (OperationManagementException e) {
|
||||
String msg = "Issue in retrieving operation management service instance";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
return Response.status(Response.Status.CREATED).entity(pendingOperations).build();
|
||||
}
|
||||
|
||||
private void updateOperations(String deviceId, List<? extends Operation> operations)
|
||||
throws OperationManagementException, PolicyComplianceException,
|
||||
ApplicationManagementException, NotificationManagementException, DeviceManagementException {
|
||||
for (org.wso2.carbon.device.mgt.common.operation.mgt.Operation operation : operations) {
|
||||
AndroidAPIUtils.updateOperation(deviceId, operation);
|
||||
if (OPERATION_ERROR_STATUS.equals(operation.getStatus().toString())) {
|
||||
org.wso2.carbon.device.mgt.common.notification.mgt.Notification notification = new
|
||||
org.wso2.carbon.device.mgt.common.notification.mgt.Notification();
|
||||
DeviceIdentifier id = new DeviceIdentifier();
|
||||
id.setId(deviceId);
|
||||
id.setType(AndroidConstants.DEVICE_TYPE_ANDROID);
|
||||
String deviceName = AndroidAPIUtils.getDeviceManagementService().getDevice(id).getName();
|
||||
notification.setOperationId(operation.getId());
|
||||
notification.setStatus(org.wso2.carbon.device.mgt.common.notification.mgt.Notification.
|
||||
Status.NEW.toString());
|
||||
notification.setDeviceIdentifier(id);
|
||||
notification.setDescription("Operation " + operation.getCode() + " failed to execute on device " +
|
||||
deviceName + ". Device ID : " + deviceId);
|
||||
AndroidAPIUtils.getNotificationManagementService().addNotification(notification);
|
||||
}
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Updating operation '" + operation.toString() + "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@POST
|
||||
@Override
|
||||
public Response enrollDevice(Device device) {
|
||||
try {
|
||||
device.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
|
||||
device.getEnrolmentInfo().setOwner(AndroidAPIUtils.getAuthenticatedUser());
|
||||
boolean status = AndroidAPIUtils.getDeviceManagementService().enrollDevice(device);
|
||||
|
||||
PolicyManagerService policyManagerService = AndroidAPIUtils.getPolicyManagerService();
|
||||
policyManagerService.getEffectivePolicy(new DeviceIdentifier(device.getDeviceIdentifier(), device.getType()));
|
||||
if (status) {
|
||||
return Response.status(Response.Status.OK).entity("Android device, which carries the id '" +
|
||||
device.getDeviceIdentifier() + "' has successfully been enrolled").build();
|
||||
} else {
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Failed to enroll '" +
|
||||
device.getType() + "' device, which carries the id '" +
|
||||
device.getDeviceIdentifier() + "'").build();
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while enrolling the '" + device.getType() + "', which carries the id '" +
|
||||
device.getDeviceIdentifier() + "'";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
} catch (PolicyManagementException e) {
|
||||
String msg = "Error occurred while enforcing default enrollment policy upon '" + device.getType() +
|
||||
"', which carries the id '" +
|
||||
device.getDeviceIdentifier() + "'";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{id}/status")
|
||||
@Override
|
||||
public Response isEnrolled(@PathParam("id") String id) {
|
||||
boolean result;
|
||||
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
|
||||
try {
|
||||
result = AndroidAPIUtils.getDeviceManagementService().isEnrolled(deviceIdentifier);
|
||||
if (result) {
|
||||
return Response.status(Response.Status.OK).entity("Android device that carries the id '" +
|
||||
id + "' is enrolled").build();
|
||||
} else {
|
||||
return Response.status(Response.Status.NOT_FOUND).entity("No Android device is found upon the id '" +
|
||||
id + "'").build();
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while checking enrollment status of the device.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
@PUT
|
||||
@Path("/{id}")
|
||||
@Override
|
||||
public Response modifyEnrollment(@PathParam("id") String id, Device device) {
|
||||
boolean result;
|
||||
try {
|
||||
device.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
|
||||
result = AndroidAPIUtils.getDeviceManagementService().modifyEnrollment(device);
|
||||
if (result) {
|
||||
return Response.status(Response.Status.ACCEPTED).entity("Enrollment of Android device that " +
|
||||
"carries the id '" + id + "' has successfully updated").build();
|
||||
} else {
|
||||
return Response.status(Response.Status.NOT_MODIFIED).entity("Enrollment of Android device that " +
|
||||
"carries the id '" + id + "' has not been updated").build();
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while modifying enrollment of the Android device that carries the id '" +
|
||||
id + "'";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
@DELETE
|
||||
@Path("/{id}")
|
||||
@Override
|
||||
public Response disEnrollDevice(@PathParam("id") String id) {
|
||||
boolean result;
|
||||
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
|
||||
try {
|
||||
result = AndroidAPIUtils.getDeviceManagementService().disenrollDevice(deviceIdentifier);
|
||||
if (result) {
|
||||
return Response.status(Response.Status.OK).entity("Android device that carries id '" + id +
|
||||
"' has successfully dis-enrolled").build();
|
||||
} else {
|
||||
return Response.status(Response.Status.NOT_FOUND).entity("Android device that carries id '" + id +
|
||||
"' has not been dis-enrolled").build();
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while dis-enrolling the Android device that carries the id '" + id + "'";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
57
components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/configuration/impl/ConfigurationMgtServiceImpl.java → components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceTypeConfigurationServiceImpl.java
57
components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/configuration/impl/ConfigurationMgtServiceImpl.java → components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceTypeConfigurationServiceImpl.java
91
components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/event/impl/EventServiceImpl.java → components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/EventReceiverServiceImpl.java
91
components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/event/impl/EventServiceImpl.java → components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/EventReceiverServiceImpl.java
@ -1,506 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.services.android.services.operationmgt;
|
||||
|
||||
import io.swagger.annotations.*;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.*;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Android Device Operation REST-API implementation.
|
||||
*/
|
||||
|
||||
@Api(value = "OperationMgtService", description = "Android Device Operation REST-API implementation.")
|
||||
public interface OperationMgtService {
|
||||
String ACCEPT = "Accept";
|
||||
|
||||
@PUT
|
||||
@Path("{id}")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "PUT",
|
||||
value = "Getting Pending Android Device Operations",
|
||||
responseContainer = "List",
|
||||
notes = "The Android agent communicates with the server to get the operations that are queued up " +
|
||||
"at the server end for a given device using this REST API",
|
||||
response = Operation.class)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "List of pending operations"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving operation management service instance")
|
||||
})
|
||||
Response getPendingOperations(
|
||||
@ApiParam(name = "acceptHeader", value = "Accept Header") @HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "id", value = "DeviceIdentifier") @PathParam("id") String id,
|
||||
@ApiParam(name = "resultOperations", value = "Device Operation Status")
|
||||
List<? extends Operation> resultOperations);
|
||||
|
||||
@POST
|
||||
@Path("lock")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Adding a Device Lock on Android Devices",
|
||||
notes = "Using this API you have the option of hard locking an Android device, where the Administrator " +
|
||||
"permanently locks the device or screen locking an Android device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response configureDeviceLock(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "cameraBeanWrapper",
|
||||
value = "Device lock configurations with device IDs") DeviceLockBeanWrapper deviceLockBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("unlock")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Adding a Device Unlock on Android Devices",
|
||||
responseContainer = "List",
|
||||
notes = "Using this API you have the option of unlocking an Android device, where the Administrator " +
|
||||
"unlocks the device",
|
||||
response = String.class)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response configureDeviceUnlock(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "deviceIDs", value =
|
||||
"DeviceIds to be enable device unlock operation")
|
||||
List<String> deviceIDs);
|
||||
|
||||
|
||||
@POST
|
||||
@Path("location")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Requesting Location Coordinates of Android Devices",
|
||||
responseContainer = "List",
|
||||
notes = "Request location coordinates of Android devices",
|
||||
response = String.class)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Requested Device Coordinates"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")})
|
||||
Response getDeviceLocation(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "deviceIDs",
|
||||
value = "DeviceIDs to be requested to get device location")
|
||||
List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("clear-password")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Clearing the Password on Android Devices",
|
||||
notes = "Clear the password on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response removePassword(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "deviceIDs",
|
||||
value = "DeviceIds to be requested to remove password")
|
||||
List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("camera")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Enabling or Disabling the Camera on Android Devices",
|
||||
notes = "Enable or disable the camera on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in creating a new camera instance")
|
||||
})
|
||||
Response configureCamera(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "cameraBeanWrapper",
|
||||
value = "Camera enable/disable configurations with device IDs") CameraBeanWrapper cameraBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("device-info")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Requesting Information from Android Devices",
|
||||
notes = "Using this REST API you are able to request for Android device details. Once this REST API is" +
|
||||
" executed it will be in the Android operation queue until the device calls the server to retrieve " +
|
||||
"the list of operations that needs to be executed on the device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Device Information"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response getDeviceInformation(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "deviceIds",
|
||||
value = "Device IDs to be requested to get device information")
|
||||
List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("enterprise-wipe")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Enterprise Wiping Android Devices",
|
||||
notes = "Enterprise wipe is the process of deleting enterprise related data on a device while keeping the " +
|
||||
"personal data intact. You are able to enterprise wipe Android devices using this REST API"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance"
|
||||
)})
|
||||
Response wipeDevice(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "deviceIDs",
|
||||
value = "Device IDs to be requested to done enterprise-wipe")
|
||||
List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("wipe-data")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Factory Resetting an Android Device",
|
||||
notes = "Factory rest or erases all the data stored in the Android devices " +
|
||||
"to restore them back to the original system"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")})
|
||||
Response wipeData(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "wipeDataBeanWrapper",
|
||||
value = "Configurations and DeviceIds to be need to done wipe-data")
|
||||
WipeDataBeanWrapper wipeDataBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("application-list")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Requesting the List of Installed Applications on Android Devices",
|
||||
notes = "Using this REST API the server requests for the list of applications that are installed on" +
|
||||
" the Android devices. Once this REST API is executed it will be in the Android operation queue " +
|
||||
"until the device calls the server to retrieve the list of operations that needs to be executed " +
|
||||
"on the device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "List of applications for specific deviceIdentifier"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response getApplications(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "deviceIDs",
|
||||
value = "Device Ids to be need to get applications which already installed")
|
||||
List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("ring-device")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Ringing Android Devices",
|
||||
notes = "Ring Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response ringDevice(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "deviceIDs",
|
||||
value = "Device Ids needs to be ring") List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("reboot-device")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Rebooting Android Devices",
|
||||
notes = "Reboot Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response rebootDevice(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "deviceIDs",
|
||||
value = "Device Ids needs to be rebooted") List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Muting Android Devices",
|
||||
notes = "Mute Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
@Path("mute")
|
||||
Response muteDevice(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "deviceIDs", value = "DeviceIDs need to be muted") List<String> deviceIDs);
|
||||
|
||||
@POST
|
||||
@Path("install-application")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Installing an Application on Android Devices",
|
||||
notes = "Install an application on an Android device. If the device you are installing the application" +
|
||||
" on has the WSO2 system service installed, the application installation will happen in silent " +
|
||||
"mode, else the device user's consent will be required"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response installApplication(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "applicationInstallationBeanWrapper",
|
||||
value = "Properties of installed apps and device IDs")
|
||||
ApplicationInstallationBeanWrapper applicationInstallationBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("update-application")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Updating an Application on Android Devices",
|
||||
notes = "Update an application on an Android device. If the device you are updating the application" +
|
||||
" has the WSO2 system service installed, the application update will happen in silent " +
|
||||
"mode, else the device user's consent will be required"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response updateApplication(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "applicationUpdateBeanWrapper",
|
||||
value = "Properties of updated apps and device IDs")
|
||||
ApplicationUpdateBeanWrapper applicationUpdateBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("uninstall-application")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Uninstalling an Application from Android Devices",
|
||||
notes = "Uninstall an application from Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response uninstallApplication(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "applicationUninstallationBeanWrapper",
|
||||
value = "applicationUninstallationConfigs and Device Ids")
|
||||
ApplicationUninstallationBeanWrapper applicationUninstallationBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("blacklist-applications")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Get BlackListed Applications",
|
||||
notes = "Getting BlackListed Applications"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response blacklistApplications(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "blacklistApplicationsBeanWrapper",
|
||||
value = "BlacklistApplications Configuration and DeviceIds")
|
||||
BlacklistApplicationsBeanWrapper blacklistApplicationsBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("upgrade-firmware")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Upgrading device firmware",
|
||||
notes = "Device firmware upgrade"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response upgradeFirmware(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "upgradeFirmwareBeanWrapper",
|
||||
value = "Firmware upgrade configuration and DeviceIds")
|
||||
UpgradeFirmwareBeanWrapper upgradeFirmwareBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("vpn")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Configuring VPN on Android devices",
|
||||
notes = "Configure VPN on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response configureVPN(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "vpnBeanWrapper",
|
||||
value = "VPN configuration and DeviceIds")
|
||||
VpnBeanWrapper vpnBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("notification")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Sending a Notification to Android Devices",
|
||||
notes = "Send a notification to Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response sendNotification(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "notificationBeanWrapper",
|
||||
value = "Notification Configurations and device Ids")
|
||||
NotificationBeanWrapper notificationBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("wifi")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Configuring Wi-Fi on Android Devices",
|
||||
notes = "Configure Wi-Fi on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response configureWifi(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "wifiBeanWrapper",
|
||||
value = "WifiConfigurations and Device Ids") WifiBeanWrapper wifiBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("encrypt")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Encrypting Storage on Android Devices",
|
||||
notes = "Encrypt the data stored on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response encryptStorage(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "encryptionBeanWrapper",
|
||||
value = "Configurations and deviceIds need to be done data encryption")
|
||||
EncryptionBeanWrapper encryptionBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("change-lock-code")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Changing the Lock Code on Android Devices",
|
||||
notes = "Change the lock code on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response changeLockCode(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "lockCodeBeanWrapper",
|
||||
value = "Configurations and device Ids need to be done change lock code")
|
||||
LockCodeBeanWrapper lockCodeBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("password-policy")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Setting a Passcode Policy on Android Devices",
|
||||
notes = "Set a password policy on Android devices"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "created"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response setPasswordPolicy(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "passwordPolicyBeanWrapper",
|
||||
value = "Password Policy Configurations and Device Ids")
|
||||
PasswordPolicyBeanWrapper passwordPolicyBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("webclip")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Setting a Web Clip on Android Devices",
|
||||
notes = "Set a web clip on Android devices. A web clip is used to add a bookmark to a web application"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Accepted"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response setWebClip(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader, @ApiParam(name = "webClipBeanWrapper",
|
||||
value = "Configurations to need set web clip on device and device Ids")
|
||||
WebClipBeanWrapper webClipBeanWrapper);
|
||||
|
||||
@POST
|
||||
@Path("disenroll")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Un-Register The Device from the EMM server",
|
||||
notes = "unregister the given device"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Accepted"),
|
||||
@ApiResponse(code = 500, message = "Issue in retrieving device management service instance")
|
||||
})
|
||||
Response setDisenrollment(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "disenrollmentBeanWrapper", value = "Dis-enrollment configurations")
|
||||
DisenrollmentBeanWrapper disenrollmentBeanWrapper);
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.services.android.services.policymgt;
|
||||
|
||||
import io.swagger.annotations.*;
|
||||
import org.wso2.carbon.mdm.services.android.exception.AndroidAgentException;
|
||||
import org.wso2.carbon.mdm.services.android.util.Message;
|
||||
import org.wso2.carbon.policy.mgt.common.ProfileFeature;
|
||||
|
||||
import javax.jws.WebService;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
@Api(value = "PolicyMgtService", description = "Policy management related REST-API implementation.")
|
||||
@WebService
|
||||
@Produces({"application/json", "application/xml"})
|
||||
@Consumes({"application/json", "application/xml"})
|
||||
public interface PolicyMgtService {
|
||||
|
||||
@GET
|
||||
@Path("{deviceId}")
|
||||
@ApiOperation(
|
||||
httpMethod = "GET",
|
||||
value = "Identifying whether a Policy is Enforced on an Android Device",
|
||||
notes = "When a device registers with WSO2 EMM, a policy is enforced on the device based on the policy " +
|
||||
"enforcement criteria. Using this API you are able to identify if a specific device has a policy " +
|
||||
"enforced or if no policy is enforced on the device."
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Effective policy added to operation"),
|
||||
@ApiResponse(code = 204, message = "No effective policy found")
|
||||
})
|
||||
Response getEffectivePolicy(@ApiParam(name = "acceptHeader", value = "Accept Header") @HeaderParam("Accept")
|
||||
String acceptHeader,
|
||||
@ApiParam(name = "deviceId", value = "DeviceIdentifier") @PathParam("deviceId")
|
||||
String id) throws AndroidAgentException;
|
||||
|
||||
@GET
|
||||
@Path("/features/{deviceId}")
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Get Effective Features",
|
||||
responseContainer = "List",
|
||||
notes = "Get already applied features for given device Identifier",
|
||||
response = ProfileFeature.class)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "Effective Feature List"),
|
||||
@ApiResponse(code = 404, message = "Not Found"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while getting the features")
|
||||
})
|
||||
Response getEffectiveFeatures(@ApiParam(name = "acceptHeader", value = "Accept Header")
|
||||
@HeaderParam("Accept") String acceptHeader,
|
||||
@ApiParam(name = "deviceId", value = "DeviceIdentifier")
|
||||
@PathParam("deviceId") String id) throws AndroidAgentException;
|
||||
}
|
@ -1,100 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.services.android.services.policymgt.impl;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.mdm.services.android.exception.AndroidAgentException;
|
||||
import org.wso2.carbon.mdm.services.android.services.policymgt.PolicyMgtService;
|
||||
import org.wso2.carbon.mdm.services.android.util.AndroidAPIUtils;
|
||||
import org.wso2.carbon.mdm.services.android.util.Message;
|
||||
import org.wso2.carbon.policy.mgt.common.FeatureManagementException;
|
||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
|
||||
import org.wso2.carbon.policy.mgt.common.ProfileFeature;
|
||||
import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
|
||||
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.HeaderParam;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
public class PolicyMgtServiceImpl implements PolicyMgtService {
|
||||
private static Log log = LogFactory.getLog(PolicyMgtService.class);
|
||||
|
||||
@GET
|
||||
@Path("{deviceId}")
|
||||
public Response getEffectivePolicy(@HeaderParam("Accept") String acceptHeader,
|
||||
@PathParam("deviceId") String id) throws AndroidAgentException {
|
||||
|
||||
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
|
||||
MediaType responseMediaType = AndroidAPIUtils.getResponseMediaType(acceptHeader);
|
||||
Message responseMessage = new Message();
|
||||
Policy policy;
|
||||
try {
|
||||
PolicyManagerService policyManagerService = AndroidAPIUtils.getPolicyManagerService();
|
||||
policy = policyManagerService.getEffectivePolicy(deviceIdentifier);
|
||||
if (policy == null) {
|
||||
responseMessage = Message.responseMessage("No effective policy found").
|
||||
responseCode(Response.Status.NO_CONTENT.toString()).build();
|
||||
return Response.status(Response.Status.NO_CONTENT).entity(responseMessage).type(
|
||||
responseMediaType).build();
|
||||
} else {
|
||||
responseMessage = Message.responseMessage("Effective policy added to operation").
|
||||
responseCode(Response.Status.OK.toString()).build();
|
||||
return Response.status(Response.Status.OK).entity(responseMessage).type(
|
||||
responseMediaType).build();
|
||||
}
|
||||
} catch (PolicyManagementException e) {
|
||||
String msg = "Error occurred while getting the policy.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(
|
||||
responseMediaType).build();
|
||||
}
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/features/{deviceId}")
|
||||
public Response getEffectiveFeatures(@HeaderParam("Accept") String acceptHeader,
|
||||
@PathParam("deviceId") String id) throws AndroidAgentException {
|
||||
List<ProfileFeature> profileFeatures;
|
||||
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
|
||||
MediaType responseMediaType = AndroidAPIUtils.getResponseMediaType(acceptHeader);
|
||||
try {
|
||||
PolicyManagerService policyManagerService = AndroidAPIUtils.getPolicyManagerService();
|
||||
profileFeatures = policyManagerService.getEffectiveFeatures(deviceIdentifier);
|
||||
if (profileFeatures == null) {
|
||||
Response.status(Response.Status.NOT_FOUND);
|
||||
return Response.status(Response.Status.NOT_FOUND).type(
|
||||
responseMediaType).build();
|
||||
}
|
||||
} catch (FeatureManagementException e) {
|
||||
String msg = "Error occurred while getting the features.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(
|
||||
responseMediaType).build();
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(profileFeatures).type(
|
||||
responseMediaType).build();
|
||||
}
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.mdm.services.android.util;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
public class ApiOriginFilter implements Filter {
|
||||
|
||||
public void doFilter(ServletRequest request, ServletResponse response,
|
||||
FilterChain chain) throws IOException, ServletException {
|
||||
HttpServletResponse res = (HttpServletResponse) response;
|
||||
res.addHeader("Access-Control-Allow-Origin", "*");
|
||||
res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
|
||||
res.addHeader("Access-Control-Allow-Headers", "Content-Type");
|
||||
chain.doFilter(request, response);
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue