mirror of https://github.com/hyperledger/besu
Add eea_findPrivacyGroup endpoint in Pantheon (#1635)
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>pull/2/head
parent
2c64a9ceba
commit
af1ca586c1
@ -0,0 +1,31 @@ |
||||
/* |
||||
* Copyright 2019 ConsenSys AG. |
||||
* |
||||
* Licensed 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 tech.pegasys.pantheon.enclave.types; |
||||
|
||||
import com.fasterxml.jackson.annotation.JsonCreator; |
||||
import com.fasterxml.jackson.annotation.JsonProperty; |
||||
|
||||
public class FindPrivacyGroupRequest { |
||||
|
||||
private final String[] addresses; |
||||
|
||||
@JsonCreator |
||||
public FindPrivacyGroupRequest(@JsonProperty("addresses") final String[] addresses) { |
||||
this.addresses = addresses; |
||||
} |
||||
|
||||
@JsonProperty("addresses") |
||||
public String[] addresses() { |
||||
return addresses; |
||||
} |
||||
} |
@ -0,0 +1,60 @@ |
||||
/* |
||||
* Copyright 2019 ConsenSys AG. |
||||
* |
||||
* Licensed 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 tech.pegasys.pantheon.enclave.types; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
import com.fasterxml.jackson.annotation.JsonCreator; |
||||
import com.fasterxml.jackson.annotation.JsonProperty; |
||||
|
||||
public class FindPrivacyGroupResponse implements Serializable { |
||||
|
||||
private String privacyGroupId; |
||||
private String name; |
||||
private String description; |
||||
private String[] members; |
||||
|
||||
@JsonCreator |
||||
public FindPrivacyGroupResponse( |
||||
@JsonProperty("privacyGroupId") final String privacyGroupId, |
||||
@JsonProperty("name") final String name, |
||||
@JsonProperty("description") final String description, |
||||
@JsonProperty("members") final String[] members) { |
||||
this.privacyGroupId = privacyGroupId; |
||||
this.name = name; |
||||
this.description = description; |
||||
this.members = members; |
||||
} |
||||
|
||||
@JsonProperty("privacyGroupId") |
||||
public String privacyGroupId() { |
||||
return privacyGroupId; |
||||
} |
||||
|
||||
@JsonProperty("name") |
||||
public String name() { |
||||
return name; |
||||
} |
||||
|
||||
@JsonProperty("description") |
||||
public String description() { |
||||
return description; |
||||
} |
||||
|
||||
@JsonProperty("members") |
||||
public String[] members() { |
||||
return members; |
||||
} |
||||
|
||||
public FindPrivacyGroupResponse() {} |
||||
} |
@ -0,0 +1,67 @@ |
||||
/* |
||||
* Copyright 2019 ConsenSys AG. |
||||
* |
||||
* Licensed 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 tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.privacy; |
||||
|
||||
import static org.apache.logging.log4j.LogManager.getLogger; |
||||
|
||||
import tech.pegasys.pantheon.enclave.Enclave; |
||||
import tech.pegasys.pantheon.enclave.types.FindPrivacyGroupRequest; |
||||
import tech.pegasys.pantheon.enclave.types.FindPrivacyGroupResponse; |
||||
import tech.pegasys.pantheon.ethereum.jsonrpc.RpcMethod; |
||||
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.JsonRpcRequest; |
||||
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.JsonRpcMethod; |
||||
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.parameters.JsonRpcParameter; |
||||
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.response.JsonRpcError; |
||||
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.response.JsonRpcResponse; |
||||
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.response.JsonRpcSuccessResponse; |
||||
|
||||
import java.util.Arrays; |
||||
|
||||
import org.apache.logging.log4j.Logger; |
||||
|
||||
public class EeaFindPrivacyGroup implements JsonRpcMethod { |
||||
|
||||
private static final Logger LOG = getLogger(); |
||||
private final Enclave enclave; |
||||
private final JsonRpcParameter parameters; |
||||
|
||||
public EeaFindPrivacyGroup(final Enclave enclave, final JsonRpcParameter parameters) { |
||||
this.enclave = enclave; |
||||
this.parameters = parameters; |
||||
} |
||||
|
||||
@Override |
||||
public String getName() { |
||||
return RpcMethod.EEA_FIND_PRIVACY_GROUP.getMethodName(); |
||||
} |
||||
|
||||
@Override |
||||
public JsonRpcResponse response(final JsonRpcRequest request) { |
||||
LOG.trace("Executing {}", RpcMethod.EEA_FIND_PRIVACY_GROUP.getMethodName()); |
||||
|
||||
final String[] addresses = parameters.required(request.getParams(), 0, String[].class); |
||||
|
||||
LOG.trace("Finding a privacy group with members {}", Arrays.toString(addresses)); |
||||
|
||||
FindPrivacyGroupRequest findPrivacyGroupRequest = new FindPrivacyGroupRequest(addresses); |
||||
FindPrivacyGroupResponse[] response; |
||||
try { |
||||
response = enclave.findPrivacyGroup(findPrivacyGroupRequest); |
||||
} catch (Exception e) { |
||||
LOG.error("Failed to fetch group from Enclave with error " + e.getMessage()); |
||||
LOG.error(e); |
||||
return new JsonRpcSuccessResponse(request.getId(), JsonRpcError.FIND_PRIVACY_GROUP_ERROR); |
||||
} |
||||
return new JsonRpcSuccessResponse(request.getId(), response); |
||||
} |
||||
} |
Loading…
Reference in new issue