pact-ffi 0.0.2-x86_64-darwin → 0.4.22-x86_64-darwin

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1bb53df447649708b87a9ed3ce20973be12268a5f943a8ea0f0b241b9f51a8a7
4
- data.tar.gz: 683a9b3e1142023c68cdf94efe7228467f6032c66b3e5fe4e59dcd77bada1bad
3
+ metadata.gz: b04787fb0afd1b94d3a4504cd466cf576339d05e934f90b4c4cfc345eb160936
4
+ data.tar.gz: 325a03c13186c7a5c5cb01b3472ae85a205ddfb98408d5de58be8f5d68146306
5
5
  SHA512:
6
- metadata.gz: fdf31fe59a9619b8b092024b8bf9e60272ab56fb691802e56f7ececba57ec57d0ffa5d9de19d6c68cff471c925964b8db805b2612e3c41da59326f749606cdbf
7
- data.tar.gz: cbb89f85450f49edc72ef21b92183318db5c87b4d720d7e938ba48d919fff15f25d3f3a5d9154cba7f3eb2c6c81f0c6729ff4961bd593c5d2de35a290019cc68
6
+ metadata.gz: 2b4e9df6654c0d136d553265a4f4cf04b662f5235596969f0b1c860a5ceb5e82776e17cfc6a69c6ce31e9ac6a78e58a0d527d02388b7480c5857c5783357baed
7
+ data.tar.gz: de753ef9bd135774a81d3bda9338ac0063a2bbbd42caa8900ffa2385c3b4c4cabafe17f9e5374391aa73f254bc704943c95d60bd3e3b325ce6259358c42db420
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Ruby spike gem, to show interactions with the Pact Rust FFI methods.
4
4
 
5
+ Available on RubyGems - <https://rubygems.org/gems/pact-ffi>
6
+
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
@@ -20,21 +22,51 @@ Or install it yourself as:
20
22
 
21
23
  ## Usage
22
24
 
23
- TODO: Write usage instructions here
25
+ Simple
26
+
27
+ ```ruby
28
+ require 'pact/ffi'
29
+
30
+ puts PactFfi.pactffi_version
31
+ ```
32
+
33
+ - See [`lib/pact/ffi.rb`](lib/pact/ffi.rb) for all available methods
34
+ - See [`spec`](spec) folder to see the tests, with the library in use
35
+ - See [`examples/area_calculator`](examples/area_calculator) folder for an example using a pact-plugin, to test the canonical area_calculator example
36
+ - Test it out in your browser, with our Killercoda example! <https://killercoda.com/safdotdev/course/safacoda/grpc_plugins_quick_start_ruby>
24
37
 
25
- ## Pre-Reqs
38
+ ## Supported Platforms
26
39
 
27
40
  - Ruby
28
- - This gem is compatible with `3.0`
41
+ - This gem is compatible with all the rubies, and various platforms, it comes pre-packaged with the pact_ffi binary for each platform.
42
+
43
+ | OS | Ruby | Architecture | Supported | Ruby Platform |
44
+ | ------- | ------- | ------------ | --------- | --------- |
45
+ | OSX | 2.6 - 3.3 | x86_64 | ✅ | x86_64-darwin |
46
+ | OSX | 2.6 - 3.3 | aarch64 (arm)| ✅ | arm64-darwin |
47
+ | Linux | 2.6 - 3.3 | x86_64 | ✅ | x86_64-linux |
48
+ | Linux | 2.6 - 3.3 | aarch64 (arm)| ✅ | aarch64-linux |
49
+ | Linux (musl) | 2.6 - 3.3 | x86_64 | ✅ | x86_64-linux-musl |
50
+ | Linux (musl) | 2.6 - 3.3 | aarch64 (arm)| ✅ | aarch64-linux-musl|
51
+ | Windows | 2.6 - 3.3 | x86_64 | ✅ | x64-mingw-ucrt |
52
+
53
+ You can checkout the ci tests, to see all the architectures, platforms and examples tested
54
+
55
+ - GitHub Actions <https://github.com/YOU54F/pact-ruby-ffi/actions>
56
+ - Cirrus CI <https://cirrus-ci.com/github/YOU54F/pact-ruby-ffi/main>
57
+
58
+ _note_ - Alpine is currently not supported, but is on the list
29
59
 
30
60
  - FFI libraries for your current platform - run `./script/download-libs.sh` to download
61
+
31
62
  - If testing the protobuf plugin
32
- - `2.7` for protobuf/grpc example
33
- - See https://grpc.io/docs/languages/ruby/quickstart/ for steps
63
+ - `3.0` for protobuf/grpc example
64
+ - See <https://grpc.io/docs/languages/ruby/quickstart/> for steps
34
65
  - See `examples/proto-ruby/README.md` for notes
35
66
  - ruby-grpc is not currently, on m1 hardware for the `pact-protobuf-plugin` example
36
67
  - Have the pact-protobuf plugin available
37
68
  - Run `pact-plugin-cli -y install https://github.com/pactflow/pact-protobuf-plugin/releases/latest`
69
+
38
70
  ## Development
39
71
 
40
72
  - run `bin/setup` or `bundle install` to install dependencies
@@ -52,3 +84,35 @@ The gem is available as open source under the terms of the [MIT License](http://
52
84
  ## Code of Conduct
53
85
 
54
86
  Everyone interacting in the PactFfi project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/pact-ffi/blob/master/CODE_OF_CONDUCT.md).
87
+
88
+ ## Pact Compatibility Suite
89
+
90
+ Help us implement the [Pact Compatibility Suite](https://github.com/pact-foundation/pact-compatibility-suite)
91
+
92
+ ```
93
+ compatibility-suite/pact-compatibility-suite/features
94
+ ├── V1
95
+ │ ├── http_consumer.feature
96
+ │ └── http_provider.feature
97
+ ├── V2
98
+ │ ├── http_consumer.feature
99
+ │ └── http_provider.feature
100
+ ├── V3
101
+ │ ├── generators.feature
102
+ │ ├── http_consumer.feature
103
+ │ ├── http_generators.feature
104
+ │ ├── http_matching.feature
105
+ │ ├── http_provider.feature
106
+ │ ├── matching_rules.feature
107
+ │ ├── message_consumer.feature
108
+ │ └── message_provider.feature
109
+ ├── V4
110
+ │ ├── generators.feature
111
+ │ ├── http_consumer.feature ✅
112
+ │ ├── http_provider.feature
113
+ │ ├── matching_rules.feature
114
+ │ ├── message_consumer.feature ✅
115
+ │ ├── message_provider.feature ✅
116
+ │ ├── synchronous_message_consumer.feature ✅
117
+ │ └── v4.feature ✅
118
+ ```
Binary file
@@ -1,43 +1,40 @@
1
1
  module DetectOS
2
2
  def self.windows?
3
3
  return if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RbConfig::CONFIG['arch']).nil?
4
-
5
- puts 'detected windows'
6
4
  true
7
5
  end
8
6
 
9
7
  def self.mac_arm?
10
8
  return unless !(/darwin/ =~ RbConfig::CONFIG['arch']).nil? && !(/arm64/ =~ RbConfig::CONFIG['arch']).nil?
11
-
12
- puts 'detected macos arm'
13
9
  true
14
10
  end
15
11
 
16
12
  def self.mac?
17
13
  return unless !(/darwin/ =~ RbConfig::CONFIG['arch']).nil? && !(/x86_64/ =~ RbConfig::CONFIG['arch']).nil?
14
+ true
15
+ end
18
16
 
19
- puts 'detected macos'
17
+ def self.linux_arm_musl?
18
+ return unless !(/linux/ =~ RbConfig::CONFIG['arch']).nil? && !(/aarch64/ =~ RbConfig::CONFIG['arch']).nil? && !(/musl/ =~ RbConfig::CONFIG['arch']).nil?
20
19
  true
21
20
  end
22
21
 
22
+ def self.linux_musl?
23
+ return unless !(/linux/ =~ RbConfig::CONFIG['arch']).nil? && !(/x86_64/ =~ RbConfig::CONFIG['arch']).nil?&& !(/musl/ =~ RbConfig::CONFIG['arch']).nil?
24
+ true
25
+ end
23
26
  def self.linux_arm?
24
27
  return unless !(/linux/ =~ RbConfig::CONFIG['arch']).nil? && !(/aarch64/ =~ RbConfig::CONFIG['arch']).nil?
25
-
26
- puts 'detected linux aarch64'
27
28
  true
28
29
  end
29
30
 
30
31
  def self.linux?
31
32
  return unless !(/linux/ =~ RbConfig::CONFIG['arch']).nil? && !(/x86_64/ =~ RbConfig::CONFIG['arch']).nil?
32
-
33
- puts 'detected linux'
34
33
  true
35
34
  end
36
35
 
37
36
  def self.debug?
38
37
  return if ENV['DEBUG_TARGET'].nil?
39
-
40
- puts 'detected debug target' + ENV['DEBUG_TARGET']
41
38
  true
42
39
  end
43
40
 
@@ -50,6 +47,10 @@ module DetectOS
50
47
  File.join(__dir__, '../../ffi/macos-arm64/libpact_ffi.dylib')
51
48
  elsif mac?
52
49
  File.join(__dir__, '../../ffi/macos-x64/libpact_ffi.dylib')
50
+ elsif linux_arm_musl?
51
+ File.join(__dir__, '../../ffi/linux-arm64-musl/libpact_ffi.so')
52
+ elsif linux_musl?
53
+ File.join(__dir__, '../../ffi/linux-x64-musl/libpact_ffi.so')
53
54
  elsif linux_arm?
54
55
  File.join(__dir__, '../../ffi/linux-arm64/libpact_ffi.so')
55
56
  elsif linux?
@@ -76,4 +77,4 @@ module DetectOS
76
77
  end
77
78
  end
78
79
 
79
- puts DetectOS.get_bin_path
80
+ ENV['PACT_DEBUG'] ? (puts "Detected platform: #{RbConfig::CONFIG['arch']} \nLoad Path: #{DetectOS.get_bin_path}" ): nil
@@ -0,0 +1,29 @@
1
+ # require 'pact-ffi/version'
2
+ require 'ffi'
3
+ require 'pact/detect_os'
4
+
5
+ module PactFfi
6
+ module AsyncMessageConsumer
7
+ extend FFI::Library
8
+ ffi_lib DetectOS.get_bin_path
9
+
10
+ # DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
11
+ (typedef :uint32, :uint32_type)
12
+
13
+ attach_function :new_async_message, :pactffi_async_message_new, %i[], :pointer
14
+ attach_function :delete, :pactffi_async_message_delete, %i[pointer], :void
15
+ attach_function :get_contents, :pactffi_async_message_get_contents, %i[pointer], :pointer
16
+ attach_function :get_contents_str, :pactffi_async_message_get_contents_str, %i[pointer], :string
17
+ attach_function :set_contents_str, :pactffi_async_message_set_contents_str, %i[pointer string string], :void
18
+ attach_function :get_contents_length, :pactffi_async_message_get_contents_length, %i[pointer], :size_t
19
+ attach_function :get_contents_bin, :pactffi_async_message_get_contents_bin, %i[pointer], :pointer
20
+ attach_function :set_contents_bin, :pactffi_async_message_set_contents_bin, %i[pointer pointer size_t string], :void
21
+ attach_function :get_description, :pactffi_async_message_get_description, %i[pointer], :string
22
+ attach_function :set_description, :pactffi_async_message_set_description, %i[pointer string], :int32
23
+ attach_function :get_provider_state, :pactffi_async_message_get_provider_state, %i[pointer uint32_type], :pointer
24
+ attach_function :get_provider_state_iter, :pactffi_async_message_get_provider_state_iter, %i[pointer], :pointer
25
+ attach_function :new, :pactffi_new_async_message, %i[uint16 string], :uint32_type
26
+ attach_function :pact_interaction_as_asynchronous_message, :pactffi_pact_interaction_as_asynchronous_message,
27
+ %i[pointer], :pointer
28
+ end
29
+ end
@@ -0,0 +1,40 @@
1
+ # require 'pact-ffi/version'
2
+ require 'ffi'
3
+ require 'pact/detect_os'
4
+
5
+ module PactFfi
6
+ module HttpConsumer
7
+ extend FFI::Library
8
+ ffi_lib DetectOS.get_bin_path
9
+
10
+ # DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
11
+ (typedef :uint32, :uint32_type)
12
+
13
+ attach_function :pact_interaction_iter_next, :pactffi_pact_interaction_iter_next, %i[pointer], :pointer
14
+ attach_function :pact_interaction_iter_delete, :pactffi_pact_interaction_iter_delete, %i[pointer], :void
15
+ attach_function :new_pact, :pactffi_new_pact, %i[string string], :uint16
16
+ attach_function :new_interaction, :pactffi_new_interaction, %i[uint16 string], :uint32_type
17
+ attach_function :upon_receiving, :pactffi_upon_receiving, %i[uint32_type string], :bool
18
+ attach_function :given, :pactffi_given, %i[uint32_type string], :bool
19
+ attach_function :given_with_param, :pactffi_given_with_param, %i[uint32_type string], :bool
20
+ attach_function :given_with_params, :pactffi_given_with_params, %i[uint32_type string string], :int32
21
+ attach_function :interaction_test_name, :pactffi_interaction_test_name, %i[uint32_type string], :uint32_type
22
+ attach_function :given_with_param, :pactffi_given_with_param, %i[uint32_type string string string], :bool
23
+ attach_function :with_request, :pactffi_with_request, %i[uint32_type string string], :bool
24
+ attach_function :with_query_parameter, :pactffi_with_query_parameter, %i[uint32_type string size_t string], :bool
25
+ attach_function :with_query_parameter_v2, :pactffi_with_query_parameter_v2, %i[uint32_type string size_t string],
26
+ :bool
27
+ attach_function :with_specification, :pactffi_with_specification, %i[uint16 int32], :bool
28
+ attach_function :with_pact_metadata, :pactffi_with_pact_metadata, %i[uint16 string string string], :bool
29
+ attach_function :with_header, :pactffi_with_header, %i[uint32_type int32 string size_t string], :bool
30
+ attach_function :with_header_v2, :pactffi_with_header_v2, %i[uint32_type int32 string size_t string], :bool
31
+ attach_function :response_status, :pactffi_response_status, %i[uint32_type uint16], :bool
32
+ attach_function :with_body, :pactffi_with_body, %i[uint32_type int32 string string], :bool
33
+ attach_function :with_binary_file, :pactffi_with_binary_file, %i[uint32_type int32 string pointer size_t], :bool
34
+ attach_function :with_multipart_file, :pactffi_with_multipart_file, %i[uint32_type int32 string string string], :pointer
35
+ attach_function :set_header, :pactffi_set_header, %i[uint32_type int32 string string], :bool
36
+ attach_function :with_binary_body, :pactffi_with_binary_body, %i[uint32_type int32 string pointer size_t], :bool
37
+ attach_function :with_matching_rules, :pactffi_with_matching_rules, %i[uint32_type int32 string], :bool
38
+ attach_function :with_multipart_file_v2, :pactffi_with_multipart_file_v2, %i[uint32_type int32 string string string string], :pointer
39
+ end
40
+ end
@@ -0,0 +1,34 @@
1
+ # require 'pact-ffi/version'
2
+ require 'ffi'
3
+ require 'pact/detect_os'
4
+
5
+ module PactFfi
6
+ module Logger
7
+ extend FFI::Library
8
+ ffi_lib DetectOS.get_bin_path
9
+
10
+ # DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
11
+ (typedef :uint32, :uint32_type)
12
+
13
+ LogLevel = Hash[
14
+ 'OFF' => 0,
15
+ 'ERROR' => 1,
16
+ 'WARN' => 2,
17
+ 'INFO' => 3,
18
+ 'DEBUG' => 4,
19
+ 'TRACE' => 5
20
+ ]
21
+
22
+ attach_function :enable_ansi_support, :pactffi_enable_ansi_support, %i[], :void
23
+ attach_function :message, :pactffi_log_message, %i[string string string], :void
24
+ attach_function :get_error_message, :pactffi_get_error_message, %i[string int32], :int32
25
+ attach_function :log_to_stdout, :pactffi_log_to_stdout, %i[int32], :int32
26
+ attach_function :log_to_stderr, :pactffi_log_to_stderr, %i[int32], :int32
27
+ attach_function :log_to_file, :pactffi_log_to_file, %i[string int32], :int32
28
+ attach_function :log_to_buffer, :pactffi_log_to_buffer, %i[int32], :int32
29
+ attach_function :init, :pactffi_logger_init, %i[], :void
30
+ attach_function :attach_sink, :pactffi_logger_attach_sink, %i[string int32], :int32
31
+ attach_function :apply, :pactffi_logger_apply, %i[], :int32
32
+ attach_function :fetch_log_buffer, :pactffi_fetch_log_buffer, %i[string], :string
33
+ end
34
+ end
@@ -0,0 +1,129 @@
1
+ # require 'pact-ffi/version'
2
+ require 'ffi'
3
+ require 'pact/detect_os'
4
+
5
+ module PactFfi
6
+ module MessageConsumer
7
+ extend FFI::Library
8
+ ffi_lib DetectOS.get_bin_path
9
+
10
+ # DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
11
+ (typedef :uint32, :uint32_type)
12
+
13
+ FfiSpecificationVersion = Hash[
14
+ 'SPECIFICATION_VERSION_UNKNOWN' => 0,
15
+ 'SPECIFICATION_VERSION_V1' => 1,
16
+ 'SPECIFICATION_VERSION_V1_1' => 2,
17
+ 'SPECIFICATION_VERSION_V2' => 3,
18
+ 'SPECIFICATION_VERSION_V3' => 4,
19
+ 'SPECIFICATION_VERSION_V4' => 5,
20
+ ]
21
+ FfiWritePactResponse = Hash[
22
+ 'SUCCESS' => 0,
23
+ 'GENERAL_PANIC' => 1,
24
+ 'UNABLE_TO_WRITE_PACT_FILE' => 2,
25
+ 'MOCK_SERVER_NOT_FOUND' => 3,
26
+ ]
27
+ FfiWriteMessagePactResponse = Hash[
28
+ 'SUCCESS' => 0,
29
+ 'UNABLE_TO_WRITE_PACT_FILE' => 1,
30
+ 'MESSAGE_HANDLE_INVALID' => 2,
31
+ 'MOCK_SERVER_NOT_FOUND' => 3,
32
+ ]
33
+ FfiConfigurePluginResponse = Hash[
34
+ 'SUCCESS' => 0,
35
+ 'GENERAL_PANIC' => 1,
36
+ 'FAILED_TO_LOAD_PLUGIN' => 2,
37
+ 'PACT_HANDLE_INVALID' => 3,
38
+ ]
39
+ FfiPluginInteractionResponse = Hash[
40
+ 'SUCCESS' => 0,
41
+ 'A_GENERAL_PANIC_WAS_CAUGHT' => 1,
42
+ 'MOCK_SERVER_HAS_ALREADY_BEEN_STARTED' => 2,
43
+ 'INTERACTION_HANDLE_IS_INVALID' => 3,
44
+ 'CONTENT_TYPE_IS_NOT_VALID' => 4,
45
+ 'CONTENTS_JSON_IS_NOT_VALID_JSON' => 5,
46
+ 'PLUGIN_RETURNED_AN_ERROR' => 6,
47
+ ]
48
+ FfiInteractionPart = Hash[
49
+ 'INTERACTION_PART_REQUEST' => 0,
50
+ 'INTERACTION_PART_RESPONSE' => 1,
51
+ ]
52
+ # /*
53
+ # -1 A null pointer was received
54
+ # -2 The pact JSON could not be parsed
55
+ # -3 The mock server could not be started
56
+ # -4 The method panicked
57
+ # -5 The address is not valid
58
+ # -6 Could not create the TLS configuration with the self-signed certificate
59
+ # */
60
+ FfiPluginCreateMockServerErrors = Hash[
61
+ 'NULL_POINTER' => -1,
62
+ 'JSON_PARSE_ERROR' => -2,
63
+ 'MOCK_SERVER_START_FAIL' => -3,
64
+ 'CORE_PANIC' => -4,
65
+ 'ADDRESS_NOT_VALID' => -5,
66
+ 'TLS_CONFIG' => -6,
67
+ ]
68
+
69
+ FfiPluginFunctionResult = Hash[
70
+ 'RESULT_OK' => 0,
71
+ 'RESULT_FAILED' => 1,
72
+ ]
73
+
74
+ attach_function :contents_get_contents_str, :pactffi_message_contents_get_contents_str, %i[pointer], :string
75
+ attach_function :contents_set_contents_str, :pactffi_message_contents_set_contents_str, %i[pointer string string], :void
76
+ attach_function :contents_get_contents_length, :pactffi_message_contents_get_contents_length, %i[pointer], :size_t
77
+ attach_function :contents_get_contents_bin, :pactffi_message_contents_get_contents_bin, %i[pointer], :pointer
78
+ attach_function :contents_set_contents_bin, :pactffi_message_contents_set_contents_bin, %i[pointer pointer size_t string], :void
79
+ attach_function :contents_get_metadata_iter, :pactffi_message_contents_get_metadata_iter, %i[pointer], :pointer
80
+ attach_function :contents_get_matching_rule_iter, :pactffi_message_contents_get_matching_rule_iter, %i[pointer int32], :pointer
81
+ attach_function :message_contents_get_generators_iter, :pactffi_message_contents_get_generators_iter, %i[pointer int32], :pointer
82
+ attach_function :pact_interaction_as_message, :pactffi_pact_interaction_as_message, %i[pointer], :pointer
83
+ attach_function :new, :pactffi_message_new, %i[], :pointer
84
+ attach_function :new_from_json, :pactffi_message_new_from_json, %i[uint32_type string int32], :pointer
85
+ attach_function :new_from_body, :pactffi_message_new_from_body, %i[string string], :pointer
86
+ attach_function :delete, :pactffi_message_delete, %i[pointer], :void
87
+ attach_function :get_contents, :pactffi_message_get_contents, %i[pointer], :string
88
+ attach_function :set_contents, :pactffi_message_set_contents, %i[pointer string string], :void
89
+ attach_function :get_contents_length, :pactffi_message_get_contents_length, %i[pointer], :size_t
90
+ attach_function :get_contents_bin, :pactffi_message_get_contents_bin, %i[pointer], :pointer
91
+ attach_function :set_contents_bin, :pactffi_message_set_contents_bin, %i[pointer pointer size_t string], :void
92
+ attach_function :get_description, :pactffi_message_get_description, %i[pointer], :string
93
+ attach_function :set_description, :pactffi_message_set_description, %i[pointer string], :int32
94
+ attach_function :get_provider_state, :pactffi_message_get_provider_state, %i[pointer uint32_type], :pointer
95
+ attach_function :get_provider_state_iter, :pactffi_message_get_provider_state_iter, %i[pointer], :pointer
96
+ attach_function :find_metadata, :pactffi_message_find_metadata, %i[pointer string], :string
97
+ attach_function :insert_metadata, :pactffi_message_insert_metadata, %i[pointer string string], :int32
98
+ attach_function :metadata_iter_next, :pactffi_message_metadata_iter_next, %i[pointer], :pointer
99
+ attach_function :get_metadata_iter, :pactffi_message_get_metadata_iter, %i[pointer], :pointer
100
+ attach_function :metadata_iter_delete, :pactffi_message_metadata_iter_delete, %i[pointer], :void
101
+ attach_function :metadata_pair_delete, :pactffi_message_metadata_pair_delete, %i[pointer], :void
102
+ attach_function :new_from_json, :pactffi_message_pact_new_from_json, %i[string string], :pointer
103
+ attach_function :delete, :pactffi_message_pact_delete, %i[pointer], :void
104
+ attach_function :get_consumer, :pactffi_message_pact_get_consumer, %i[pointer], :pointer
105
+ attach_function :get_provider, :pactffi_message_pact_get_provider, %i[pointer], :pointer
106
+ attach_function :get_message_iter, :pactffi_message_pact_get_message_iter, %i[pointer], :pointer
107
+ attach_function :message_iter_next, :pactffi_message_pact_message_iter_next, %i[pointer], :pointer
108
+ attach_function :message_iter_delete, :pactffi_message_pact_message_iter_delete, %i[pointer], :void
109
+ attach_function :find_metadata, :pactffi_message_pact_find_metadata, %i[pointer string string], :string
110
+ attach_function :get_metadata_iter, :pactffi_message_pact_get_metadata_iter, %i[pointer], :pointer
111
+ attach_function :metadata_iter_next, :pactffi_message_pact_metadata_iter_next, %i[pointer], :pointer
112
+ attach_function :metadata_iter_delete, :pactffi_message_pact_metadata_iter_delete, %i[pointer], :void
113
+ attach_function :metadata_triple_delete, :pactffi_message_pact_metadata_triple_delete, %i[pointer], :void
114
+ attach_function :new_message_interaction, :pactffi_new_message_interaction, %i[uint16 string], :uint32_type
115
+ attach_function :new_message_pact, :pactffi_new_message_pact, %i[string string], :uint16
116
+ attach_function :new_message, :pactffi_new_message, %i[uint16 string], :uint32_type
117
+ attach_function :expects_to_receive, :pactffi_message_expects_to_receive, %i[uint32_type string], :void
118
+ attach_function :given, :pactffi_message_given, %i[uint32_type string], :void
119
+ attach_function :given_with_param, :pactffi_message_given_with_param, %i[uint32_type string string string], :void
120
+ attach_function :with_contents, :pactffi_message_with_contents, %i[uint32_type string pointer size_t], :void
121
+ attach_function :with_metadata, :pactffi_message_with_metadata, %i[uint32_type string string], :void
122
+ attach_function :reify, :pactffi_message_reify, %i[uint32_type], :string
123
+ attach_function :write_message_pact_file, :pactffi_write_message_pact_file, %i[uint16 string bool], :int32
124
+ attach_function :with_message_pact_metadata, :pactffi_with_message_pact_metadata, %i[uint16 string string string], :void
125
+ attach_function :free_handle, :pactffi_free_message_pact_handle, %i[uint16], :uint32_type
126
+ attach_function :pact_handle_get_message_iter, :pactffi_pact_handle_get_message_iter, %i[uint16], :pointer
127
+ attach_function :with_metadata_v2, :pactffi_message_with_metadata_v2, %i[uint32_type string string], :void
128
+ end
129
+ end
@@ -0,0 +1,84 @@
1
+ # require 'pact-ffi/version'
2
+ require 'ffi'
3
+ require 'pact/detect_os'
4
+
5
+ module PactFfi
6
+ module MockServer
7
+ extend FFI::Library
8
+ ffi_lib DetectOS.get_bin_path
9
+
10
+ # DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
11
+ (typedef :uint32, :uint32_type)
12
+
13
+ FfiSpecificationVersion = Hash[
14
+ 'SPECIFICATION_VERSION_UNKNOWN' => 0,
15
+ 'SPECIFICATION_VERSION_V1' => 1,
16
+ 'SPECIFICATION_VERSION_V1_1' => 2,
17
+ 'SPECIFICATION_VERSION_V2' => 3,
18
+ 'SPECIFICATION_VERSION_V3' => 4,
19
+ 'SPECIFICATION_VERSION_V4' => 5,
20
+ ]
21
+ FfiWritePactResponse = Hash[
22
+ 'SUCCESS' => 0,
23
+ 'GENERAL_PANIC' => 1,
24
+ 'UNABLE_TO_WRITE_PACT_FILE' => 2,
25
+ 'MOCK_SERVER_NOT_FOUND' => 3,
26
+ ]
27
+ FfiWriteMessagePactResponse = Hash[
28
+ 'SUCCESS' => 0,
29
+ 'UNABLE_TO_WRITE_PACT_FILE' => 1,
30
+ 'MESSAGE_HANDLE_INVALID' => 2,
31
+ 'MOCK_SERVER_NOT_FOUND' => 3,
32
+ ]
33
+ FfiConfigurePluginResponse = Hash[
34
+ 'SUCCESS' => 0,
35
+ 'GENERAL_PANIC' => 1,
36
+ 'FAILED_TO_LOAD_PLUGIN' => 2,
37
+ 'PACT_HANDLE_INVALID' => 3,
38
+ ]
39
+ FfiPluginInteractionResponse = Hash[
40
+ 'SUCCESS' => 0,
41
+ 'A_GENERAL_PANIC_WAS_CAUGHT' => 1,
42
+ 'MOCK_SERVER_HAS_ALREADY_BEEN_STARTED' => 2,
43
+ 'INTERACTION_HANDLE_IS_INVALID' => 3,
44
+ 'CONTENT_TYPE_IS_NOT_VALID' => 4,
45
+ 'CONTENTS_JSON_IS_NOT_VALID_JSON' => 5,
46
+ 'PLUGIN_RETURNED_AN_ERROR' => 6,
47
+ ]
48
+ FfiInteractionPart = Hash[
49
+ 'INTERACTION_PART_REQUEST' => 0,
50
+ 'INTERACTION_PART_RESPONSE' => 1,
51
+ ]
52
+ # /*
53
+ # -1 A null pointer was received
54
+ # -2 The pact JSON could not be parsed
55
+ # -3 The mock server could not be started
56
+ # -4 The method panicked
57
+ # -5 The address is not valid
58
+ # -6 Could not create the TLS configuration with the self-signed certificate
59
+ # */
60
+ FfiPluginCreateMockServerErrors = Hash[
61
+ 'NULL_POINTER' => -1,
62
+ 'JSON_PARSE_ERROR' => -2,
63
+ 'MOCK_SERVER_START_FAIL' => -3,
64
+ 'CORE_PANIC' => -4,
65
+ 'ADDRESS_NOT_VALID' => -5,
66
+ 'TLS_CONFIG' => -6,
67
+ ]
68
+
69
+ FfiPluginFunctionResult = Hash[
70
+ 'RESULT_OK' => 0,
71
+ 'RESULT_FAILED' => 1,
72
+ ]
73
+
74
+ attach_function :create, :pactffi_create_mock_server, %i[string string bool], :int32
75
+ attach_function :get_tls_cert, :pactffi_get_tls_ca_certificate, %i[], :string
76
+ attach_function :create_for_pact, :pactffi_create_mock_server_for_pact, %i[uint16 string bool], :int32
77
+ attach_function :create_for_transport, :pactffi_create_mock_server_for_transport, %i[uint16 string uint16 string string], :int32
78
+ attach_function :matched, :pactffi_mock_server_matched, %i[int32], :bool
79
+ attach_function :mismatches, :pactffi_mock_server_mismatches, %i[int32], :string
80
+ attach_function :cleanup, :pactffi_cleanup_mock_server, %i[int32], :bool
81
+ attach_function :write_pact_file, :pactffi_write_pact_file, %i[int32 string bool], :int32
82
+ attach_function :logs, :pactffi_mock_server_logs, %i[int32], :string
83
+ end
84
+ end
@@ -0,0 +1,40 @@
1
+ # require 'pact-ffi/version'
2
+ require 'ffi'
3
+ require 'pact/detect_os'
4
+
5
+ module PactFfi
6
+ module PluginConsumer
7
+ extend FFI::Library
8
+ ffi_lib DetectOS.get_bin_path
9
+
10
+ # DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
11
+ (typedef :uint32, :uint32_type)
12
+
13
+ # /*
14
+ # -1 A null pointer was received
15
+ # -2 The pact JSON could not be parsed
16
+ # -3 The mock server could not be started
17
+ # -4 The method panicked
18
+ # -5 The address is not valid
19
+ # -6 Could not create the TLS configuration with the self-signed certificate
20
+ # */
21
+ CreateMockServerErrors = Hash[
22
+ 'NULL_POINTER' => -1,
23
+ 'JSON_PARSE_ERROR' => -2,
24
+ 'MOCK_SERVER_START_FAIL' => -3,
25
+ 'CORE_PANIC' => -4,
26
+ 'ADDRESS_NOT_VALID' => -5,
27
+ 'TLS_CONFIG' => -6,
28
+ ]
29
+
30
+ PluginFunctionResult = Hash[
31
+ 'RESULT_OK' => 0,
32
+ 'RESULT_FAILED' => 1,
33
+ ]
34
+
35
+ attach_function :using_plugin, :pactffi_using_plugin, %i[uint16 string string], :uint32_type
36
+ attach_function :cleanup_plugins, :pactffi_cleanup_plugins, %i[uint16], :void
37
+ attach_function :interaction_contents, :pactffi_interaction_contents, %i[uint32_type int32 string string],
38
+ :uint32_type
39
+ end
40
+ end
@@ -0,0 +1,36 @@
1
+ # require 'pact-ffi/version'
2
+ require 'ffi'
3
+ require 'pact/detect_os'
4
+
5
+ module PactFfi
6
+ module SyncHttpConsumer
7
+ extend FFI::Library
8
+ ffi_lib DetectOS.get_bin_path
9
+
10
+ # DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
11
+ (typedef :uint32, :uint32_type)
12
+
13
+ attach_function :new, :pactffi_sync_http_new, %i[], :pointer
14
+ attach_function :delete, :pactffi_sync_http_delete, %i[pointer], :void
15
+ attach_function :get_request, :pactffi_sync_http_get_request, %i[pointer], :pointer
16
+ attach_function :get_request_contents, :pactffi_sync_http_get_request_contents, %i[pointer], :string
17
+ attach_function :set_request_contents, :pactffi_sync_http_set_request_contents, %i[pointer string string], :void
18
+ attach_function :get_request_contents_length, :pactffi_sync_http_get_request_contents_length, %i[pointer], :size_t
19
+ attach_function :get_request_contents_bin, :pactffi_sync_http_get_request_contents_bin, %i[pointer], :pointer
20
+ attach_function :set_request_contents_bin, :pactffi_sync_http_set_request_contents_bin, %i[pointer pointer size_t string], :void
21
+ attach_function :get_response, :pactffi_sync_http_get_response, %i[pointer], :pointer
22
+ attach_function :get_response_contents, :pactffi_sync_http_get_response_contents, %i[pointer], :string
23
+ attach_function :set_response_contents, :pactffi_sync_http_set_response_contents, %i[pointer string string], :void
24
+ attach_function :get_response_contents_length, :pactffi_sync_http_get_response_contents_length, %i[pointer], :size_t
25
+ attach_function :get_response_contents_bin, :pactffi_sync_http_get_response_contents_bin, %i[pointer], :pointer
26
+ attach_function :set_response_contents_bin, :pactffi_sync_http_set_response_contents_bin, %i[pointer pointer size_t string], :void
27
+ attach_function :get_description, :pactffi_sync_http_get_description, %i[pointer], :string
28
+ attach_function :set_description, :pactffi_sync_http_set_description, %i[pointer string], :int32
29
+ attach_function :get_provider_state, :pactffi_sync_http_get_provider_state, %i[pointer uint32_type], :pointer
30
+ attach_function :get_provider_state_iter, :pactffi_sync_http_get_provider_state_iter, %i[pointer], :pointer
31
+ attach_function :pact_interaction_as_synchronous_http, :pactffi_pact_interaction_as_synchronous_http, %i[pointer], :pointer
32
+ attach_function :iter_next, :pactffi_pact_sync_http_iter_next, %i[pointer], :pointer
33
+ attach_function :iter_delete, :pactffi_pact_sync_http_iter_delete, %i[pointer], :void
34
+ attach_function :pact_handle_get_sync_http_iter, :pactffi_pact_handle_get_sync_http_iter, %i[uint16], :pointer
35
+ end
36
+ end
@@ -0,0 +1,38 @@
1
+ # require 'pact-ffi/version'
2
+ require 'ffi'
3
+ require 'pact/detect_os'
4
+
5
+ module PactFfi
6
+ module SyncMessageConsumer
7
+ extend FFI::Library
8
+ ffi_lib DetectOS.get_bin_path
9
+
10
+ # DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
11
+ (typedef :uint32, :uint32_type)
12
+
13
+ attach_function :pact_interaction_as_synchronous_message, :pactffi_pact_interaction_as_synchronous_message, %i[pointer], :pointer
14
+ attach_function :iter_next, :pactffi_pact_sync_message_iter_next, %i[pointer], :pointer
15
+ attach_function :iter_delete, :pactffi_pact_sync_message_iter_delete, %i[pointer], :void
16
+ attach_function :new, :pactffi_sync_message_new, %i[], :pointer
17
+ attach_function :delete, :pactffi_sync_message_delete, %i[pointer], :void
18
+ attach_function :get_request_contents_str, :pactffi_sync_message_get_request_contents_str, %i[pointer], :string
19
+ attach_function :set_request_contents_str, :pactffi_sync_message_set_request_contents_str, %i[pointer string string], :void
20
+ attach_function :get_request_contents_length, :pactffi_sync_message_get_request_contents_length, %i[pointer], :size_t
21
+ attach_function :get_request_contents_bin, :pactffi_sync_message_get_request_contents_bin, %i[pointer], :pointer
22
+ attach_function :set_request_contents_bin, :pactffi_sync_message_set_request_contents_bin, %i[pointer pointer size_t string], :void
23
+ attach_function :get_request_contents, :pactffi_sync_message_get_request_contents, %i[pointer], :pointer
24
+ attach_function :get_number_responses, :pactffi_sync_message_get_number_responses, %i[pointer], :size_t
25
+ attach_function :get_response_contents_str, :pactffi_sync_message_get_response_contents_str, %i[pointer size_t], :string
26
+ attach_function :set_response_contents_str, :pactffi_sync_message_set_response_contents_str, %i[pointer size_t string string], :void
27
+ attach_function :get_response_contents_length, :pactffi_sync_message_get_response_contents_length, %i[pointer size_t], :size_t
28
+ attach_function :get_response_contents_bin, :pactffi_sync_message_get_response_contents_bin, %i[pointer size_t], :pointer
29
+ attach_function :set_response_contents_bin, :pactffi_sync_message_set_response_contents_bin, %i[pointer size_t pointer size_t string], :void
30
+ attach_function :get_response_contents, :pactffi_sync_message_get_response_contents, %i[pointer size_t], :pointer
31
+ attach_function :get_description, :pactffi_sync_message_get_description, %i[pointer], :string
32
+ attach_function :set_description, :pactffi_sync_message_set_description, %i[pointer string], :int32
33
+ attach_function :get_provider_state, :pactffi_sync_message_get_provider_state, %i[pointer uint32_type], :pointer
34
+ attach_function :get_provider_state_iter, :pactffi_sync_message_get_provider_state_iter, %i[pointer], :pointer
35
+ attach_function :new_interaction, :pactffi_new_sync_message_interaction, %i[uint16 string], :uint32_type
36
+ attach_function :pact_handle_get_sync_message_iter, :pactffi_pact_handle_get_sync_message_iter, %i[uint16], :pointer
37
+ end
38
+ end