[IOT-1616] CSM signaling supported in CoAP D2S communication
[iotivity.git] / cloud / stack / src / main / java / org / iotivity / cloud / base / protocols / coap / CoapRequest.java
1 /*
2  * //******************************************************************
3  * //
4  * // Copyright 2016 Samsung Electronics All Rights Reserved.
5  * //
6  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7  * //
8  * // Licensed under the Apache License, Version 2.0 (the "License");
9  * // you may not use this file except in compliance with the License.
10  * // You may obtain a copy of the License at
11  * //
12  * //      http://www.apache.org/licenses/LICENSE-2.0
13  * //
14  * // Unless required by applicable law or agreed to in writing, software
15  * // distributed under the License is distributed on an "AS IS" BASIS,
16  * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * // See the License for the specific language governing permissions and
18  * // limitations under the License.
19  * //
20  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21  */
22 package org.iotivity.cloud.base.protocols.coap;
23
24 import org.iotivity.cloud.base.exception.ServerException.MethodNotAllowedException;
25 import org.iotivity.cloud.base.protocols.enums.RequestMethod;
26 import org.iotivity.cloud.base.protocols.enums.ResponseStatus;
27 import org.iotivity.cloud.base.protocols.enums.SignalingMethod;
28
29 public class CoapRequest extends CoapMessage {
30     private RequestMethod mRequestMethod;
31
32     public CoapRequest(RequestMethod requestMethod) {
33         mRequestMethod = requestMethod;
34     }
35
36     public CoapRequest(int code) {
37         switch (code) {
38             case 1:
39                 mRequestMethod = RequestMethod.GET;
40                 break;
41             case 2:
42                 mRequestMethod = RequestMethod.POST;
43                 break;
44             case 3:
45                 mRequestMethod = RequestMethod.PUT;
46                 break;
47             case 4:
48                 mRequestMethod = RequestMethod.DELETE;
49                 break;
50             default:
51                 // unrecognized or unsupported Method Code MUST generate
52                 // a 4.05 (Method Not Allowed) piggybacked response. (RFC7252)
53                 throw new MethodNotAllowedException("Invalid CoapRequest code");
54         }
55     }
56
57     @Override
58     public int getCode() {
59         switch (mRequestMethod) {
60             case GET:
61                 return 1;
62             case POST:
63                 return 2;
64             case PUT:
65                 return 3;
66             case DELETE:
67                 return 4;
68             default:
69                 break;
70
71         }
72         return 0;
73     }
74
75     @Override
76     public RequestMethod getMethod() {
77         return mRequestMethod;
78     }
79
80     // This request object does not support response status
81     @Override
82     public ResponseStatus getStatus() {
83         return ResponseStatus.METHOD_NOT_ALLOWED;
84     }
85
86     // This request object does not support signaling status
87     @Override
88     public SignalingMethod getSignalingMethod() {
89         return null;
90     }
91 }