Skip to content

Commit

Permalink
Merge pull request #218 from genaris/fix/react-native-wrapper
Browse files Browse the repository at this point in the history
fix(js): add missing parameters to rn wrapper
  • Loading branch information
andrewwhitehead authored Sep 19, 2023
2 parents a4d6933 + b2b9459 commit 9247818
Show file tree
Hide file tree
Showing 6 changed files with 228 additions and 209 deletions.
26 changes: 22 additions & 4 deletions libindy_vdr/include/README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,33 @@
_Generating the C header:_

Install [cbindgen](https://github.com/eqrion/cbindgen/):

1. use `nightly` instead of `stable`

```sh
rustup default nightly
```
> **Note**: If you run into _'unknown feature'_ issues by using latest nightly, force it to 1.72.0 by executing: `rustup default nightly-2023-06-15`
2. Install [cbindgen](https://github.com/eqrion/cbindgen/)

```sh
cargo install cbindgen
```

From the `libindy_vdr` directory, generate the header file:
3. Install [cargo expand](https://github.com/dtolnay/cargo-expand)

```sh
cargo install cargo-expand
```

4. Generate the header file:

```sh
cbindgen --config include/cbindgen.toml --crate indy-vdr --output include/libindy_vdr.h
cbindgen --config libindy_vdr/include/cbindgen.toml --crate indy-vdr --lockfile Cargo.lock --output libindy_vdr/include/libindy_vdr.h
```

Note that a few types are currently defined manually, such as `ByteBuffer`, because of limitations in the binding generator.
5. Copy to React Native:

```sh
cp libindy_vdr/include/libindy_vdr.h wrappers/javascript/indy-vdr-react-native/cpp/include/
```
146 changes: 5 additions & 141 deletions libindy_vdr/include/cbindgen.toml
Original file line number Diff line number Diff line change
@@ -1,151 +1,15 @@
# This is a template cbindgen.toml file with all of the default values.
# Some values are commented out because their absence is the real default.
#
# See https://github.com/eqrion/cbindgen/blob/master/docs.md#cbindgentoml
# for detailed documentation of every option here.



language = "C"
cpp_compat = true


############## Options for Wrapping the Contents of the Header #################

# header = "/* Text to put at the beginning of the generated file. Probably a license. */"
# trailer = "/* Text to put at the end of the generated file */"
# include_guard = "my_bindings_h"
# pragma_once = true
# autogen_warning = "/* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */"
include_version = false
# namespace = "my_namespace"
namespaces = []
using_namespaces = []
sys_includes = []
includes = []
no_includes = false
after_includes = ""




############################ Code Style Options ################################

braces = "SameLine"
line_length = 100
tab_width = 2
documentation = true
documentation_style = "auto"
# documentation_length = "full"
line_endings = "LF" # also "CR", "CRLF", "Native"




############################# Codegen Options ##################################

style = "both"
sort_by = "Name" # default for `fn.sort_by` and `const.sort_by`
pragma_once = true
autogen_warning = "/* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */"
include_version = true
usize_is_size_t = true



[defines]
# "target_os = freebsd" = "DEFINE_FREEBSD"
# "feature = serde" = "DEFINE_SERDE"
"feature = rich_schema" = "DEFINE_RICH_SCHEMA"
"test" = "DEFINE_TEST"

[export]
include = []
exclude = []
# prefix = "CAPI_"
item_types = []
renaming_overrides_prefixing = false



[export.rename]


[export.body]


[export.mangle]


[fn]
rename_args = "None"
# must_use = "MUST_USE_FUNC"
# no_return = "NO_RETURN"
# prefix = "START_FUNC"
# postfix = "END_FUNC"
args = "auto"
sort_by = "Name"




[struct]
rename_fields = "None"
# must_use = "MUST_USE_STRUCT"
derive_constructor = false
derive_eq = false
derive_neq = false
derive_lt = false
derive_lte = false
derive_gt = false
derive_gte = false




[enum]
rename_variants = "None"
# must_use = "MUST_USE_ENUM"
add_sentinel = false
prefix_with_name = false
derive_helper_methods = false
derive_const_casts = false
derive_mut_casts = false
# cast_assert_name = "ASSERT"
derive_tagged_enum_destructor = false
derive_tagged_enum_copy_constructor = false
enum_class = true
private_default_tagged_enum_constructor = false




[const]
allow_static_const = true
allow_constexpr = false
sort_by = "Name"




[macro_expansion]
bitflags = false






############## Options for How Your Rust library Should Be Parsed ##############

[parse]
parse_deps = true
include = ["ffi-support"]
exclude = []
clean = false
extra_bindings = []


include = ["ffi-support", "ffi"]

[parse.expand]
crates = []
all_features = false
default_features = true
features = []
crates = ["indy-vdr"]
82 changes: 50 additions & 32 deletions libindy_vdr/include/libindy_vdr.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,29 @@
#pragma once

/* Generated with cbindgen:0.24.5 */

/* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */

#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>

/**
* No (enforced) self-certification
*/
#define CERT_DEFAULT 0

#define DEFAULT 0
/**
* Self-certification based on did:indy method spec
*/
#define CERT_DID_INDY 2

/**
* Legacy self-certification
*/
#define CERT_DID_SOV 1

#define DEFAULT_ACK_TIMEOUT 20

Expand All @@ -19,9 +37,13 @@

#define DEFAULT_REQUEST_READ_NODES 2

#define DID_INDY 2
#define ROLE_ENDORSER 101

#define ROLE_NETWORK_MONITOR 201

#define DID_SOV 1
#define ROLE_STEWARD 2

#define ROLE_TRUSTEE 0

enum ErrorCode
#ifdef __cplusplus
Expand Down Expand Up @@ -290,20 +312,6 @@ ErrorCode indy_vdr_build_get_revoc_reg_request(FfiStr submitter_did,
int64_t timestamp,
RequestHandle *handle_p);

#if (defined(DEFINE_RICH_SCHEMA) || defined(DEFINE_TEST))
ErrorCode indy_vdr_build_get_rich_schema_object_by_id_request(FfiStr submitter_did,
FfiStr rs_id,
RequestHandle *handle_p);
#endif

#if (defined(DEFINE_RICH_SCHEMA) || defined(DEFINE_TEST))
ErrorCode indy_vdr_build_get_rich_schema_object_by_metadata_request(FfiStr submitter_did,
FfiStr rs_type,
FfiStr rs_name,
FfiStr rs_version,
RequestHandle *handle_p);
#endif

ErrorCode indy_vdr_build_get_schema_request(FfiStr submitter_did,
FfiStr schema_id,
RequestHandle *handle_p);
Expand Down Expand Up @@ -370,17 +378,6 @@ ErrorCode indy_vdr_build_revoc_reg_entry_request(FfiStr submitter_did,
FfiStr revoc_reg_entry,
RequestHandle *handle_p);

#if (defined(DEFINE_RICH_SCHEMA) || defined(DEFINE_TEST))
ErrorCode indy_vdr_build_rich_schema_request(FfiStr submitter_did,
FfiStr rs_id,
FfiStr rs_content,
FfiStr rs_name,
FfiStr rs_version,
FfiStr rs_type,
FfiStr ver,
RequestHandle *handle_p);
#endif

ErrorCode indy_vdr_build_schema_request(FfiStr submitter_did,
FfiStr schema,
RequestHandle *handle_p);
Expand Down Expand Up @@ -408,11 +405,15 @@ ErrorCode indy_vdr_pool_get_status(PoolHandle pool_handle,
CallbackId cb_id);

ErrorCode indy_vdr_pool_get_transactions(PoolHandle pool_handle,
void (*cb)(CallbackId cb_id, ErrorCode err, const char *response),
void (*cb)(CallbackId cb_id,
ErrorCode err,
const char *response),
CallbackId cb_id);

ErrorCode indy_vdr_pool_get_verifiers(PoolHandle pool_handle,
void (*cb)(CallbackId cb_id, ErrorCode err, const char *response),
void (*cb)(CallbackId cb_id,
ErrorCode err,
const char *response),
CallbackId cb_id);

ErrorCode indy_vdr_pool_refresh(PoolHandle pool_handle,
Expand All @@ -423,12 +424,16 @@ ErrorCode indy_vdr_pool_submit_action(PoolHandle pool_handle,
RequestHandle request_handle,
FfiStr nodes,
int32_t timeout,
void (*cb)(CallbackId cb_id, ErrorCode err, const char *response),
void (*cb)(CallbackId cb_id,
ErrorCode err,
const char *response),
CallbackId cb_id);

ErrorCode indy_vdr_pool_submit_request(PoolHandle pool_handle,
RequestHandle request_handle,
void (*cb)(CallbackId cb_id, ErrorCode err, const char *response),
void (*cb)(CallbackId cb_id,
ErrorCode err,
const char *response),
CallbackId cb_id);

/**
Expand Down Expand Up @@ -482,6 +487,19 @@ ErrorCode indy_vdr_set_protocol_version(int64_t version);

ErrorCode indy_vdr_set_socks_proxy(FfiStr socks_proxy);

/**
* Public destructor for strings managed by the other side of the FFI.
*
* # Safety
*
* This will free the string pointer it gets passed in as an argument,
* and thus can be wildly unsafe if misused.
*
* See the documentation of `ffi_support::destroy_c_string` and
* `ffi_support::define_string_destructor!` for further info.
*/
void indy_vdr_string_free(char *s);

char *indy_vdr_version(void);

#ifdef __cplusplus
Expand Down
1 change: 1 addition & 0 deletions wrappers/javascript/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,4 @@ react-native/android/gradle*

**/build
**/native/mobile
genesis.txn
Loading

0 comments on commit 9247818

Please sign in to comment.