Search in sources :

Example 11 with Link

use of org.eclipse.leshan.Link in project leshan by eclipse.

the class CoapRequestBuilder method visit.

@Override
public void visit(RegisterRequest request) {
    coapRequest = Request.newPost();
    buildRequestSettings();
    coapRequest.getOptions().setContentFormat(ContentFormat.LINK.getCode());
    coapRequest.getOptions().addUriPath("rd");
    HashMap<String, String> attributes = new HashMap<>();
    attributes.putAll(request.getAdditionalAttributes());
    attributes.put("ep", request.getEndpointName());
    Long lifetime = request.getLifetime();
    if (lifetime != null)
        attributes.put("lt", lifetime.toString());
    String smsNumber = request.getSmsNumber();
    if (smsNumber != null)
        attributes.put("sms", smsNumber);
    String lwVersion = request.getLwVersion();
    if (lwVersion != null)
        attributes.put("lwm2m", lwVersion);
    BindingMode bindingMode = request.getBindingMode();
    if (bindingMode != null)
        attributes.put("b", bindingMode.toString());
    for (Entry<String, String> attr : attributes.entrySet()) {
        coapRequest.getOptions().addUriQuery(attr.getKey() + "=" + attr.getValue());
    }
    Link[] objectLinks = request.getObjectLinks();
    if (objectLinks != null)
        coapRequest.setPayload(Link.serialize(objectLinks));
}
Also used : HashMap(java.util.HashMap) BindingMode(org.eclipse.leshan.core.request.BindingMode) Link(org.eclipse.leshan.Link)

Example 12 with Link

use of org.eclipse.leshan.Link in project leshan by eclipse.

the class CoapRequestBuilder method visit.

@Override
public void visit(UpdateRequest request) {
    coapRequest = Request.newPost();
    buildRequestSettings();
    coapRequest.getOptions().setUriPath(request.getRegistrationId());
    Long lifetime = request.getLifeTimeInSec();
    if (lifetime != null)
        coapRequest.getOptions().addUriQuery("lt=" + lifetime);
    String smsNumber = request.getSmsNumber();
    if (smsNumber != null)
        coapRequest.getOptions().addUriQuery("sms=" + smsNumber);
    BindingMode bindingMode = request.getBindingMode();
    if (bindingMode != null)
        coapRequest.getOptions().addUriQuery("b=" + bindingMode.toString());
    Link[] linkObjects = request.getObjectLinks();
    if (linkObjects != null) {
        coapRequest.getOptions().setContentFormat(ContentFormat.LINK.getCode());
        coapRequest.setPayload(Link.serialize(linkObjects));
    }
}
Also used : BindingMode(org.eclipse.leshan.core.request.BindingMode) Link(org.eclipse.leshan.Link)

Example 13 with Link

use of org.eclipse.leshan.Link in project leshan by eclipse.

the class RegisterResource method handleUpdate.

private void handleUpdate(CoapExchange exchange, Request request, String registrationId) {
    // Get identity
    Identity sender = extractIdentity(request.getSourceContext());
    // Create LwM2m request from CoAP request
    Long lifetime = null;
    String smsNumber = null;
    BindingMode binding = null;
    Link[] objectLinks = null;
    Map<String, String> additionalParams = new HashMap<>();
    for (String param : request.getOptions().getUriQuery()) {
        if (param.startsWith(QUERY_PARAM_LIFETIME)) {
            lifetime = Long.valueOf(param.substring(3));
        } else if (param.startsWith(QUERY_PARAM_SMS)) {
            smsNumber = param.substring(4);
        } else if (param.startsWith(QUERY_PARAM_BINDING_MODE)) {
            binding = BindingMode.valueOf(param.substring(2));
        } else {
            String[] tokens = param.split("\\=");
            if (tokens != null && tokens.length == 2) {
                additionalParams.put(tokens[0], tokens[1]);
            }
        }
    }
    if (request.getPayload() != null && request.getPayload().length > 0) {
        objectLinks = Link.parse(request.getPayload());
    }
    UpdateRequest updateRequest = new UpdateRequest(registrationId, lifetime, smsNumber, binding, objectLinks, additionalParams);
    // Handle request
    final SendableResponse<UpdateResponse> sendableResponse = registrationHandler.update(sender, updateRequest);
    UpdateResponse updateResponse = sendableResponse.getResponse();
    // Create CoAP Response from LwM2m request
    if (updateResponse.getCode().isError()) {
        exchange.respond(toCoapResponseCode(updateResponse.getCode()), updateResponse.getErrorMessage());
    } else {
        exchange.respond(toCoapResponseCode(updateResponse.getCode()));
    }
    sendableResponse.sent();
}
Also used : UpdateResponse(org.eclipse.leshan.core.response.UpdateResponse) HashMap(java.util.HashMap) UpdateRequest(org.eclipse.leshan.core.request.UpdateRequest) Identity(org.eclipse.leshan.core.request.Identity) EndpointContextUtil.extractIdentity(org.eclipse.leshan.core.californium.EndpointContextUtil.extractIdentity) BindingMode(org.eclipse.leshan.core.request.BindingMode) Link(org.eclipse.leshan.Link)

Example 14 with Link

use of org.eclipse.leshan.Link in project leshan by eclipse.

the class CoapRequestBuilderTest method newRegistration.

private Registration newRegistration(String rootpath) throws UnknownHostException {
    Builder b = new Registration.Builder("regid", "endpoint", Identity.unsecure(Inet4Address.getLoopbackAddress(), 12354), new InetSocketAddress(0));
    if (rootpath != null) {
        Map<String, String> attr = new HashMap<>();
        attr.put("rt", "oma.lwm2m");
        b.objectLinks(new Link[] { new Link(rootpath, attr) });
    }
    return b.build();
}
Also used : HashMap(java.util.HashMap) InetSocketAddress(java.net.InetSocketAddress) Builder(org.eclipse.leshan.server.registration.Registration.Builder) Link(org.eclipse.leshan.Link)

Example 15 with Link

use of org.eclipse.leshan.Link in project leshan by eclipse.

the class DiscoverTest method can_discover_object_instance.

@Test
public void can_discover_object_instance() throws InterruptedException {
    // read ACL object
    DiscoverResponse response = helper.server.send(helper.getCurrentRegistration(), new DiscoverRequest(3, 0));
    // verify result
    assertEquals(CONTENT, response.getCode());
    assertNotNull(response.getCoapResponse());
    assertThat(response.getCoapResponse(), is(instanceOf(Response.class)));
    Link[] payload = response.getObjectLinks();
    assertArrayEquals(Link.parse("</3/0>".getBytes()), payload);
}
Also used : DiscoverRequest(org.eclipse.leshan.core.request.DiscoverRequest) DiscoverResponse(org.eclipse.leshan.core.response.DiscoverResponse) Link(org.eclipse.leshan.Link) Test(org.junit.Test)

Aggregations

Link (org.eclipse.leshan.Link)30 Test (org.junit.Test)17 HashMap (java.util.HashMap)16 ObjectModel (org.eclipse.leshan.core.model.ObjectModel)6 BindingMode (org.eclipse.leshan.core.request.BindingMode)6 JsonObject (com.eclipsesource.json.JsonObject)5 InetSocketAddress (java.net.InetSocketAddress)5 ArrayList (java.util.ArrayList)5 JsonArray (com.eclipsesource.json.JsonArray)4 LwM2mObjectEnabler (org.eclipse.leshan.client.resource.LwM2mObjectEnabler)4 Identity (org.eclipse.leshan.core.request.Identity)4 DiscoverResponse (org.eclipse.leshan.core.response.DiscoverResponse)4 Date (java.util.Date)3 LwM2mInstanceEnabler (org.eclipse.leshan.client.resource.LwM2mInstanceEnabler)3 ObjectEnabler (org.eclipse.leshan.client.resource.ObjectEnabler)3 DiscoverRequest (org.eclipse.leshan.core.request.DiscoverRequest)3 JsonValue (com.eclipsesource.json.JsonValue)2 Map (java.util.Map)2 BaseInstanceEnabler (org.eclipse.leshan.client.resource.BaseInstanceEnabler)2 EndpointContextUtil.extractIdentity (org.eclipse.leshan.core.californium.EndpointContextUtil.extractIdentity)2