jx_client 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: eb0f84dadd50ce0828df7d72cc3f84e005cf8353587daf05c95b4727e5de307a
4
+ data.tar.gz: 1741590397905bdcde1ac73c47fffcb4c6e37801f71fddfaccbd3aa725971878
5
+ SHA512:
6
+ metadata.gz: c88af32aaa73975cb45c5f6f512dd03ff045823e1cca7bed86afc0725e31d936cd17841ebcfe39af65c562c4afbe8608588720417dcfac9c439becd0f14e8a65
7
+ data.tar.gz: 4232f71a6ee505d42c09d11a168e74871f2ad8cd656f0874b54509b34b2bbb7a3770d0a16f4d356aa495c098dc1b55292a4f2774a8d297c113d04ae15547caaf
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,20 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.6
3
+ NewCops: enable
4
+
5
+ inherit_gem:
6
+ rubocop-shopify: rubocop.yml
7
+ require:
8
+ - rubocop-rspec
9
+ - rubocop-rake
10
+
11
+ RSpec/DescribedClass:
12
+ Enabled: false
13
+ RSpec/ExampleLength:
14
+ Enabled: false
15
+ RSpec/BeforeAfterAll:
16
+ Enabled: false
17
+ RSpec/MultipleExpectations:
18
+ Enabled: false
19
+ RSpec/MultipleMemoizedHelpers:
20
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in jx_client.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 13.0"
9
+
10
+ gem "rspec", "~> 3.10.0"
11
+
12
+ gem "rubocop", "~> 1.21"
13
+
14
+ gem "pry", "~> 0.14.1"
15
+
16
+ gem "rubocop-shopify", "~> 2.3.0"
17
+ gem "rubocop-rspec", "~> 2.6.0"
18
+ gem "rubocop-rake", "~> 0.6.0"
19
+
20
+ gem "simplecov", "~> 0.21.2"
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2021 Narazaka
2
+
3
+ This software is provided 'as-is', without any express or implied
4
+ warranty. In no event will the authors be held liable for any damages
5
+ arising from the use of this software.
6
+
7
+ Permission is granted to anyone to use this software for any purpose,
8
+ including commercial applications, and to alter it and redistribute it
9
+ freely, subject to the following restrictions:
10
+
11
+ 1. The origin of this software must not be misrepresented; you must not
12
+ claim that you wrote the original software. If you use this software
13
+ in a product, an acknowledgment in the product documentation would be
14
+ appreciated but is not required.
15
+
16
+ 2. Altered source versions must be plainly marked as such, and must not be
17
+ misrepresented as being the original software.
18
+
19
+ 3. This notice may not be removed or altered from any source
20
+ distribution.
data/README.md ADDED
@@ -0,0 +1,105 @@
1
+ # JxClient
2
+
3
+ 日本におけるインターネットEDI(電子データ交換)において利用されるJX手順通信ライブラリ
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'jx_client'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle install
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install jx_client
20
+
21
+ ## Usage
22
+
23
+ ```ruby
24
+ require "jx_client"
25
+
26
+ client = JxClient.new(
27
+ jx_version: 2007,
28
+ jx_message_id_generate: -> { "#{SecureRandom.hex}@example.com" },
29
+ jx_timestamp_generate: true,
30
+ jx_default_options: {
31
+ from: "sender.example.com",
32
+ },
33
+ endpoint: "receiver.example.com", # Savon options
34
+ )
35
+
36
+ client.put_document do |op|
37
+ op.options(
38
+ to: "receiver.example.com",
39
+ data: "123,なにか,456\n",
40
+ sender_id: "10001",
41
+ receiver_id: "10002",
42
+ format_type: "SecondGenEDI",
43
+ document_type: "Order",
44
+ )
45
+ MyPutDocumentStore.mark_sending(op.sent_options)
46
+ count = 0
47
+ begin
48
+ count += 1
49
+ op.call
50
+ rescue Savon::Error
51
+ retry if count < 4
52
+ raise
53
+ end
54
+ MyPutDocumentStore.mark_sent(op.sent_options)
55
+ end
56
+
57
+ get_document = client.get_document do |op|
58
+ op.options(
59
+ to: "receiver.example.com",
60
+ receiver_id: "10001",
61
+ )
62
+ count = 0
63
+ begin
64
+ count += 1
65
+ op.call
66
+ rescue Savon::Error
67
+ retry if count < 4
68
+ raise
69
+ end
70
+ MyGetDocumentStore.mark_received(op.response.result)
71
+ MyApp.receive_document(op.response.result)
72
+ MyGetDocumentStore.mark_app_processed(op.response.result)
73
+ end
74
+
75
+ client.confirm_document do |op|
76
+ op.options(
77
+ to: "receiver.example.com",
78
+ sender_id: "10001",
79
+ receiver_id: "10002",
80
+ message_id: get_document.result.message_id,
81
+ )
82
+ count = 0
83
+ begin
84
+ count += 1
85
+ op.call
86
+ rescue Savon::Error
87
+ retry if count < 4
88
+ raise
89
+ end
90
+ end
91
+ ```
92
+
93
+ ## Development
94
+
95
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
96
+
97
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
98
+
99
+ ## Contributing
100
+
101
+ Bug reports and pull requests are welcome on GitHub at https://github.com/Narazaka/jx_client.
102
+
103
+ ## License
104
+
105
+ This is released under [Zlib License](LICENSE).
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ require "rubocop/rake_task"
9
+
10
+ RuboCop::RakeTask.new
11
+
12
+ task default: [:spec, :rubocop]
data/bin/console ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "bundler/setup"
5
+ require "jx_client"
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ require "pry"
12
+ Pry.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./operation_base"
4
+
5
+ class JxClient
6
+ class ConfirmDocument < OperationBase
7
+ def self.from_jx_client(jx_client)
8
+ new(
9
+ operation_name: :confirm_document,
10
+ client: jx_client.client,
11
+ default_options: jx_client.jx_default_options,
12
+ operation_default_options: jx_client.jx_default_confirm_document_options,
13
+ message_id_generate: jx_client.jx_message_id_generate,
14
+ timestamp_generate: jx_client.jx_timestamp_generate,
15
+ )
16
+ end
17
+
18
+ def wrap_response(response)
19
+ response.define_singleton_method(:result) do
20
+ body[:confirm_document_response][:confirm_document_result]
21
+ end
22
+ response
23
+ end
24
+
25
+ def locals(options)
26
+ {
27
+ soap_header: {
28
+ From: options[:from],
29
+ To: options[:to],
30
+ MessageId: options[:message_id],
31
+ Timestamp: options[:timestamp],
32
+ },
33
+ message: {
34
+ messageId: options[:message_id],
35
+ senderId: options[:sender_id],
36
+ receiverId: options[:receiver_id],
37
+ },
38
+ }
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./operation_base"
4
+ require_relative "./get_document_result"
5
+
6
+ class JxClient
7
+ class GetDocument < OperationBase
8
+ def self.from_jx_client(jx_client)
9
+ new(
10
+ operation_name: :get_document,
11
+ client: jx_client.client,
12
+ default_options: jx_client.jx_default_options,
13
+ operation_default_options: jx_client.jx_default_get_document_options,
14
+ message_id_generate: jx_client.jx_message_id_generate,
15
+ timestamp_generate: jx_client.jx_timestamp_generate,
16
+ )
17
+ end
18
+
19
+ def wrap_response(response)
20
+ response.define_singleton_method(:result) do
21
+ @result ||= GetDocumentResult.new(**body[:get_document_response])
22
+ end
23
+ response
24
+ end
25
+
26
+ def locals(options)
27
+ soap_header = {
28
+ From: options[:from],
29
+ To: options[:to],
30
+ MessageId: options[:message_id],
31
+ Timestamp: options[:timestamp],
32
+ }
33
+ soap_header[:OptionalFormatType] = options[:optional_format_type] if options[:optional_format_type]
34
+ soap_header[:OptionalDocumentType] = options[:optional_document_type] if options[:optional_document_type]
35
+
36
+ {
37
+ soap_header: soap_header,
38
+ message: {
39
+ receiverId: options[:receiver_id],
40
+ },
41
+ }
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "base64"
4
+
5
+ class JxClient
6
+ GET_DOCUMENT_PROPERTIES = [
7
+ :get_document_result,
8
+ :message_id,
9
+ :data,
10
+ :sender_id,
11
+ :receiver_id,
12
+ :format_type,
13
+ :document_type,
14
+ ].freeze
15
+
16
+ GetDocumentResult = Struct.new(
17
+ *GET_DOCUMENT_PROPERTIES,
18
+ keyword_init: true
19
+ ) do
20
+ def initialize(**args)
21
+ super(**args.slice(*GET_DOCUMENT_PROPERTIES))
22
+ end
23
+
24
+ # decoded data
25
+ # @return [String]
26
+ def decoded_data
27
+ @decoded_data ||= Base64.decode64(data)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ class JxClient
4
+ class OperationBase
5
+ attr_reader :sent_options, :response
6
+
7
+ # @param operation_name [Symbol] operation name
8
+ # @param client [Savon::Client] client
9
+ # @param default_options [Hash] default options
10
+ # @param operation_default_options [Hash] operation specific default options
11
+ # @param message_id_generate [Proc | Boolean] message id generator
12
+ # @param timestamp_generate [Proc | Boolean] timestamp generator
13
+ def initialize(
14
+ operation_name:,
15
+ client:,
16
+ default_options: {},
17
+ operation_default_options: {},
18
+ message_id_generate: false,
19
+ timestamp_generate: false
20
+ )
21
+ @operation_name = operation_name
22
+ @client = client
23
+ @default_options = default_options
24
+ @operation_default_options = operation_default_options
25
+ @message_id_generate = message_id_generate == true ? -> { SecureRandom.uuid } : message_id_generate
26
+ @timestamp_generate = timestamp_generate == true ? -> { Time.now.utc.iso8601 } : timestamp_generate
27
+ end
28
+
29
+ # @return [Hash] sent locals for savon call
30
+ def sent_locals
31
+ locals(@sent_options)
32
+ end
33
+
34
+ # @param options [Hash] options
35
+ # @return [self]
36
+ def options(options)
37
+ @sent_options = merge_options(options)
38
+ self
39
+ end
40
+
41
+ # call operation
42
+ def call
43
+ @response = wrap_response(@client.call(@operation_name, sent_locals))
44
+ self
45
+ end
46
+
47
+ # merge options, default options and operation specific default options
48
+ def merge_options(options)
49
+ with_generated(@default_options.merge(@operation_default_options, options))
50
+ end
51
+
52
+ # @param options [Hash] options
53
+ # @return [Hash] locals for savon call
54
+ def locals(options)
55
+ raise NotImplementedError
56
+ end
57
+
58
+ # @param options [Hash] options
59
+ # @return [Hash] options with :message_id
60
+ def with_generated(options)
61
+ options[:message_id] ||= new_message_id
62
+ options[:timestamp] ||= new_timestamp
63
+ options
64
+ end
65
+
66
+ # @return [String] new message id
67
+ def new_message_id
68
+ raise "message_id must be included because message ID generation is disabled." unless @message_id_generate
69
+ @message_id_generate.call
70
+ end
71
+
72
+ def new_timestamp
73
+ raise "timestamp must be included because timestamp generation is disabled." unless @timestamp_generate
74
+ @timestamp_generate.call
75
+ end
76
+
77
+ # wraps response
78
+ def wrap_response(response)
79
+ response
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./operation_base"
4
+
5
+ class JxClient
6
+ class PutDocument < OperationBase
7
+ def self.from_jx_client(jx_client)
8
+ new(
9
+ operation_name: :put_document,
10
+ client: jx_client.client,
11
+ default_options: jx_client.jx_default_options,
12
+ operation_default_options: jx_client.jx_default_put_document_options,
13
+ message_id_generate: jx_client.jx_message_id_generate,
14
+ timestamp_generate: jx_client.jx_timestamp_generate,
15
+ )
16
+ end
17
+
18
+ def wrap_response(response)
19
+ response.define_singleton_method(:result) do
20
+ body[:put_document_response][:put_document_result]
21
+ end
22
+ response
23
+ end
24
+
25
+ def locals(options)
26
+ {
27
+ soap_header: {
28
+ From: options[:from],
29
+ To: options[:to],
30
+ MessageId: options[:message_id],
31
+ Timestamp: options[:timestamp],
32
+ },
33
+ message: {
34
+ messageId: options[:message_id],
35
+ data: Base64.strict_encode64(options[:data]),
36
+ senderId: options[:sender_id],
37
+ receiverId: options[:receiver_id],
38
+ formatType: options[:format_type],
39
+ documentType: options[:document_type],
40
+ compressType: options[:compress_type],
41
+ },
42
+ }
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class JxClient
4
+ VERSION = "0.1.0"
5
+ end
data/lib/jx_client.rb ADDED
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "jx_client/version"
4
+ require_relative "jx_client/put_document"
5
+ require_relative "jx_client/get_document"
6
+ require_relative "jx_client/confirm_document"
7
+ require "savon"
8
+ require "base64"
9
+
10
+ # JX手順クライアント
11
+ class JxClient
12
+ class Error < StandardError; end
13
+
14
+ DEFAULT_OPTIONS = {
15
+ env_namespace: :soap,
16
+ convert_request_keys_to: :none,
17
+ }.freeze
18
+
19
+ class << self
20
+ # WSDL content
21
+ # @param [2004 | 2007] version
22
+ def wsdl(version:)
23
+ @wsdl ||= {}
24
+ @wsdl[version] ||= File.read(wsdl_path(version: version))
25
+ end
26
+
27
+ # WSDL file path
28
+ # @param [2004 | 2007] version
29
+ def wsdl_path(version:)
30
+ File.expand_path("../../wsdl/jx#{version}.wsdl.xml", __FILE__)
31
+ end
32
+ end
33
+
34
+ attr_reader :jx_version,
35
+ :jx_default_options,
36
+ :jx_default_put_document_options,
37
+ :jx_default_get_document_options,
38
+ :jx_default_confirm_document_options,
39
+ :jx_message_id_generate,
40
+ :jx_timestamp_generate
41
+
42
+ # @param options [Hash]
43
+ # @option options [2004 | 2007] :jx_version JX手順のバージョン
44
+ # @option options [Proc | Boolean] :jx_message_id_generate メッセージID生成 (true: デフォルト, false: 無効, Proc: カスタム生成)
45
+ # @option options [Proc | Boolean] :jx_timestamp_generate timestamp生成 (true: デフォルト, false: 無効, Proc: カスタム生成)
46
+ # @option options [Hash] :jx_default_options デフォルトオプション
47
+ # @option options [Hash] :jx_default_put_document_options PutDocumentのデフォルトオプション
48
+ # @option options [Hash] :jx_default_get_document_options GetDocumentのデフォルトオプション
49
+ # @option options [Hash] :jx_default_confirm_document_options ConfirmDocumentのデフォルトオプション
50
+ # @yield [client] Savon.client(&block)
51
+ def initialize(options = {}, &block)
52
+ @savon_client_options = DEFAULT_OPTIONS.merge(options)
53
+ @jx_version = @savon_client_options.delete(:jx_version) || 2007
54
+ @jx_message_id_generate = @savon_client_options.delete(:jx_message_id_generate)
55
+ @jx_timestamp_generate = @savon_client_options.delete(:jx_timestamp_generate)
56
+ @jx_default_options = @savon_client_options.delete(:jx_default_options) || {}
57
+ @jx_default_put_document_options = @savon_client_options.delete(:jx_default_put_document_options) || {}
58
+ @jx_default_get_document_options = @savon_client_options.delete(:jx_default_get_document_options) || {}
59
+ @jx_default_confirm_document_options = @savon_client_options.delete(:jx_default_confirm_document_options) || {}
60
+ @savon_client_block = block
61
+ end
62
+
63
+ # @return [Savon::Client]
64
+ def client
65
+ @client ||= Savon.client(client_options, &@savon_client_block)
66
+ end
67
+
68
+ # @return [Hash] Savon.clientのオプション
69
+ def client_options
70
+ if @jx_version
71
+ @savon_client_options.merge(wsdl: wsdl)
72
+ else
73
+ @savon_client_options
74
+ end
75
+ end
76
+
77
+ # WSDL content
78
+ # @return [String]
79
+ def wsdl
80
+ @wsdl ||= JxClient.wsdl(version: @jx_version)
81
+ end
82
+
83
+ # @return [JxClient::PutDocument]
84
+ # @yield [operation]
85
+ # @yieldparam operation [JxClient::PutDocument]
86
+ def put_document
87
+ PutDocument.from_jx_client(self).tap do |operation|
88
+ yield operation if block_given?
89
+ end
90
+ end
91
+
92
+ # @return [JxClient::GetDocument]
93
+ # @yield [operation]
94
+ # @yieldparam operation [JxClient::GetDocument]
95
+ def get_document # rubocop:disable Naming/AccessorMethodName
96
+ GetDocument.from_jx_client(self).tap do |operation|
97
+ yield operation if block_given?
98
+ end
99
+ end
100
+
101
+ # @return [JxClient::ConfirmDocument]
102
+ # @yield [operation]
103
+ # @yieldparam operation [JxClient::ConfirmDocument]
104
+ def confirm_document
105
+ ConfirmDocument.from_jx_client(self).tap do |operation|
106
+ yield operation if block_given?
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,324 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- cf. https://www.jisa.or.jp/jiedia/tabid/2822/Default.aspx -->
3
+ <definitions
4
+ xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
5
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
6
+ xmlns:s="http://www.w3.org/2001/XMLSchema"
7
+ xmlns:s0="http://www.dsri.jp/edi-bp/2004/jedicos-xml/client-server"
8
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
9
+ xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
10
+ xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
11
+ targetNamespace="http://www.dsri.jp/edi-bp/2004/jedicos-xml/client-server"
12
+ xmlns="http://schemas.xmlsoap.org/wsdl/">
13
+ <types>
14
+ <s:schema
15
+ elementFormDefault="qualified"
16
+ targetNamespace="http://www.dsri.jp/edi-bp/2004/jedicos-xml/client-server">
17
+ <s:element name="PutDocument">
18
+ <s:complexType>
19
+ <s:sequence>
20
+ <s:element
21
+ minOccurs="1"
22
+ maxOccurs="1"
23
+ name="messageId"
24
+ type="s:string" />
25
+ <s:element
26
+ minOccurs="1"
27
+ maxOccurs="1"
28
+ name="data"
29
+ type="s:base64Binary" />
30
+ <s:element
31
+ minOccurs="1"
32
+ maxOccurs="1"
33
+ name="senderId"
34
+ type="s:string" />
35
+ <s:element
36
+ minOccurs="1"
37
+ maxOccurs="1"
38
+ name="receiverId"
39
+ type="s:string" />
40
+ <s:element
41
+ minOccurs="1"
42
+ maxOccurs="1"
43
+ name="formatType"
44
+ type="s:string" />
45
+ 23
46
+ <s:element
47
+ minOccurs="1"
48
+ maxOccurs="1"
49
+ name="documentType"
50
+ type="s:string" />
51
+ <s:element
52
+ minOccurs="1"
53
+ maxOccurs="1"
54
+ name="compressType"
55
+ type="s:string" />
56
+ </s:sequence>
57
+ </s:complexType>
58
+ </s:element>
59
+ <s:element name="PutDocumentResponse">
60
+ <s:complexType>
61
+ <s:sequence>
62
+ <s:element
63
+ minOccurs="1"
64
+ maxOccurs="1"
65
+ name="PutDocumentResult"
66
+ type="s:boolean" />
67
+ </s:sequence>
68
+ </s:complexType>
69
+ </s:element>
70
+ <s:element
71
+ name="MessageHeader"
72
+ type="s0:MessageHeader" />
73
+ <s:complexType name="MessageHeader">
74
+ <s:sequence>
75
+ <s:element
76
+ minOccurs="1"
77
+ maxOccurs="1"
78
+ name="From"
79
+ type="s:string" />
80
+ <s:element
81
+ minOccurs="1"
82
+ maxOccurs="1"
83
+ name="To"
84
+ type="s:string" />
85
+ <s:element
86
+ minOccurs="1"
87
+ maxOccurs="1"
88
+ name="MessageId"
89
+ type="s:string" />
90
+ <s:element
91
+ minOccurs="1"
92
+ maxOccurs="1"
93
+ name="Timestamp"
94
+ type="s:string" />
95
+ </s:sequence>
96
+ </s:complexType>
97
+ <s:element name="GetDocument">
98
+ <s:complexType>
99
+ <s:sequence>
100
+ <s:element
101
+ minOccurs="1"
102
+ maxOccurs="1"
103
+ name="receiverId"
104
+ type="s:string" />
105
+ </s:sequence>
106
+ </s:complexType>
107
+ </s:element>
108
+ <s:element name="GetDocumentResponse">
109
+ <s:complexType>
110
+ <s:sequence>
111
+ <s:element
112
+ minOccurs="1"
113
+ maxOccurs="1"
114
+ name="GetDocumentResult"
115
+ type="s:boolean" />
116
+ <s:element
117
+ minOccurs="1"
118
+ maxOccurs="1"
119
+ name="messageId"
120
+ type="s:string" />
121
+ <s:element
122
+ minOccurs="1"
123
+ maxOccurs="1"
124
+ name="data"
125
+ type="s:base64Binary" />
126
+ <s:element
127
+ minOccurs="1"
128
+ maxOccurs="1"
129
+ name="senderId"
130
+ type="s:string" />
131
+ <s:element
132
+ minOccurs="1"
133
+ maxOccurs="1"
134
+ name="receiverId"
135
+ type="s:string" />
136
+ <s:element
137
+ minOccurs="1"
138
+ maxOccurs="1"
139
+ name="formatType"
140
+ type="s:string" />
141
+ <s:element
142
+ minOccurs="1"
143
+ maxOccurs="1"
144
+ name="documentType"
145
+ type="s:string" />
146
+ <s:element
147
+ minOccurs="1"
148
+ maxOccurs="1"
149
+ name="compressType"
150
+ type="s:string" />
151
+ </s:sequence>
152
+ </s:complexType>
153
+ </s:element>
154
+ <s:element name="ConfirmDocument">
155
+ <s:complexType>
156
+ <s:sequence>
157
+ <s:element
158
+ minOccurs="1"
159
+ maxOccurs="1"
160
+ name="messageId"
161
+ type="s:string" />
162
+ <s:element
163
+ minOccurs="1"
164
+ maxOccurs="1"
165
+ name="senderId"
166
+ type="s:string" />
167
+ <s:element
168
+ minOccurs="1"
169
+ maxOccurs="1"
170
+ name="receiverId"
171
+ type="s:string" />
172
+ </s:sequence>
173
+ </s:complexType>
174
+ </s:element>
175
+ <s:element name="ConfirmDocumentResponse">
176
+ <s:complexType>
177
+ <s:sequence>
178
+ <s:element
179
+ minOccurs="1"
180
+ maxOccurs="1"
181
+ name="ConfirmDocumentResult"
182
+ type="s:boolean" />
183
+ </s:sequence>
184
+ </s:complexType>
185
+ 24
186
+ </s:element>
187
+ </s:schema>
188
+ </types>
189
+ <message name="PutDocumentSoapIn">
190
+ <part
191
+ name="parameters"
192
+ element="s0:PutDocument" />
193
+ </message>
194
+ <message name="PutDocumentSoapOut">
195
+ <part
196
+ name="parameters"
197
+ element="s0:PutDocumentResponse" />
198
+ </message>
199
+ <message name="PutDocumentMessageHeader">
200
+ <part
201
+ name="MessageHeader"
202
+ element="s0:MessageHeader" />
203
+ </message>
204
+ <message name="GetDocumentSoapIn">
205
+ <part
206
+ name="parameters"
207
+ element="s0:GetDocument" />
208
+ </message>
209
+ <message name="GetDocumentSoapOut">
210
+ <part
211
+ name="parameters"
212
+ element="s0:GetDocumentResponse" />
213
+ </message>
214
+ <message name="GetDocumentMessageHeader">
215
+ <part
216
+ name="MessageHeader"
217
+ element="s0:MessageHeader" />
218
+ </message>
219
+ <message name="ConfirmDocumentSoapIn">
220
+ <part
221
+ name="parameters"
222
+ element="s0:ConfirmDocument" />
223
+ </message>
224
+ <message name="ConfirmDocumentSoapOut">
225
+ <part
226
+ name="parameters"
227
+ element="s0:ConfirmDocumentResponse" />
228
+ </message>
229
+ <message name="ConfirmDocumentMessageHeader">
230
+ <part
231
+ name="MessageHeader"
232
+ element="s0:MessageHeader" />
233
+ </message>
234
+ <portType name="JXMSTransferSoap">
235
+ <operation name="PutDocument">
236
+ <documentation>ドキュメントの送信(Client To Server)</documentation>
237
+ <input message="s0:PutDocumentSoapIn" />
238
+ <output message="s0:PutDocumentSoapOut" />
239
+ </operation>
240
+ <operation name="GetDocument">
241
+ <documentation>ドキュメントの受信(Client From Server)</documentation>
242
+ <input message="s0:GetDocumentSoapIn" />
243
+ <output message="s0:GetDocumentSoapOut" />
244
+ </operation>
245
+ <operation name="ConfirmDocument">
246
+ <documentation>ドキュメントの受信確認</documentation>
247
+ <input message="s0:ConfirmDocumentSoapIn" />
248
+ <output message="s0:ConfirmDocumentSoapOut" />
249
+ </operation>
250
+ </portType>
251
+ <binding
252
+ name="JXMSTransferSoap"
253
+ type="s0:JXMSTransferSoap">
254
+ <soap:binding
255
+ transport="http://schemas.xmlsoap.org/soap/http"
256
+ style="document" />
257
+ <operation name="PutDocument">
258
+ <soap:operation
259
+ soapAction="http://www.dsri.jp/edi-bp/2004/jedicos-xml/client-server/PutDocument"
260
+ style="document" />
261
+ <input>
262
+ <soap:body use="literal" />
263
+ <soap:header
264
+ message="s0:PutDocumentMessageHeader"
265
+ part="MessageHeader"
266
+ use="literal" />
267
+ </input>
268
+ <output>
269
+ <soap:body use="literal" />
270
+ <soap:header
271
+ message="s0:PutDocumentMessageHeader"
272
+ part="MessageHeader"
273
+ use="literal" />
274
+ </output>
275
+ </operation>
276
+ <operation name="GetDocument">
277
+ <soap:operation
278
+ soapAction="http://www.dsri.jp/edi-bp/2004/jedicos-xml/client-server/GetDocument"
279
+ style="document" />
280
+ <input>
281
+ <soap:body use="literal" />
282
+ <soap:header
283
+ message="s0:GetDocumentMessageHeader"
284
+ part="MessageHeader"
285
+ use="literal" />
286
+ 25
287
+ </input>
288
+ <output>
289
+ <soap:body use="literal" />
290
+ <soap:header
291
+ message="s0:GetDocumentMessageHeader"
292
+ part="MessageHeader"
293
+ use="literal" />
294
+ </output>
295
+ </operation>
296
+ <operation name="ConfirmDocument">
297
+ <soap:operation
298
+ soapAction="http://www.dsri.jp/edi-bp/2004/jedicos-xml/client-server/ConfirmDocument"
299
+ style="document" />
300
+ <input>
301
+ <soap:body use="literal" />
302
+ <soap:header
303
+ message="s0:ConfirmDocumentMessageHeader"
304
+ part="MessageHeader"
305
+ use="literal" />
306
+ </input>
307
+ <output>
308
+ <soap:body use="literal" />
309
+ <soap:header
310
+ message="s0:ConfirmDocumentMessageHeader"
311
+ part="MessageHeader"
312
+ use="literal" />
313
+ </output>
314
+ </operation>
315
+ </binding>
316
+ <service name="JXMSTransfer">
317
+ <documentation>SOAP-RPC メッセージ転送サービス</documentation>
318
+ <port
319
+ name="JXMSTransferSoap"
320
+ binding="s0:JXMSTransferSoap">
321
+ <soap:address location="Please specify :endpoint option" />
322
+ </port>
323
+ </service>
324
+ </definitions>
@@ -0,0 +1,334 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- cf. https://www.jisa.or.jp/jiedia/tabid/2822/Default.aspx -->
3
+ <!-- JX 手順 WSDL 2008 年 3 月版 -->
4
+ <definitions
5
+ xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
6
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
7
+ xmlns:s="http://www.w3.org/2001/XMLSchema"
8
+ xmlns:s0="http://www.dsri.jp/edi-bp/2004/jedicos-xml/client-server"
9
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
10
+ xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
11
+ targetNamespace="http://www.dsri.jp/edi-bp/2004/jedicos-xml/client-server"
12
+ xmlns="http://schemas.xmlsoap.org/wsdl/">
13
+ <types>
14
+ <s:schema
15
+ elementFormDefault="qualified"
16
+ targetNamespace="http://www.dsri.jp/edi-bp/2004/jedicosxml/client-server">
17
+ <s:element name="PutDocument">
18
+ <s:complexType>
19
+ <s:sequence>
20
+ <s:element
21
+ minOccurs="1"
22
+ maxOccurs="1"
23
+ name="messageId"
24
+ type="s:string" />
25
+ <s:element
26
+ minOccurs="1"
27
+ maxOccurs="1"
28
+ name="data"
29
+ type="s:base64Binary" />
30
+ <s:element
31
+ minOccurs="1"
32
+ maxOccurs="1"
33
+ name="senderId"
34
+ type="s:string" />
35
+ <s:element
36
+ minOccurs="1"
37
+ maxOccurs="1"
38
+ name="receiverId"
39
+ type="s:string" />
40
+ <s:element
41
+ minOccurs="1"
42
+ maxOccurs="1"
43
+ name="formatType"
44
+ type="s:string" />
45
+ <s:element
46
+ minOccurs="1"
47
+ maxOccurs="1"
48
+ name="documentType"
49
+ type="s:string" />
50
+ <s:element
51
+ minOccurs="1"
52
+ maxOccurs="1"
53
+ name="compressType"
54
+ type="s:string" />
55
+ </s:sequence>
56
+ </s:complexType>
57
+ </s:element>
58
+ <s:element name="PutDocumentResponse">
59
+ <s:complexType>
60
+ <s:sequence>
61
+ <s:element
62
+ minOccurs="1"
63
+ maxOccurs="1"
64
+ name="PutDocumentResult"
65
+ type="s:boolean" />
66
+ </s:sequence>
67
+ </s:complexType>
68
+ </s:element>
69
+ <s:element
70
+ name="MessageHeader"
71
+ type="s0:MessageHeader" />
72
+ <s:complexType name="MessageHeader">
73
+ <s:sequence>
74
+ <s:element
75
+ minOccurs="1"
76
+ maxOccurs="1"
77
+ name="From"
78
+ type="s:string" />
79
+ <s:element
80
+ minOccurs="1"
81
+ maxOccurs="1"
82
+ name="To"
83
+ type="s:string" />
84
+ <s:element
85
+ minOccurs="1"
86
+ maxOccurs="1"
87
+ name="MessageId"
88
+ type="s:string" />
89
+ <s:element
90
+ minOccurs="1"
91
+ maxOccurs="1"
92
+ name="Timestamp"
93
+ type="s:string" />
94
+ <s:element
95
+ minOccurs="0"
96
+ maxOccurs="1"
97
+ name="OptionalFormatType"
98
+ type="s:string" />
99
+ <s:element
100
+ minOccurs="0"
101
+ maxOccurs="1"
102
+ name="OptionalDocumentType"
103
+ type="s:string" />
104
+ </s:sequence>
105
+ </s:complexType>
106
+ <s:element name="GetDocument">
107
+ 27
108
+ <s:complexType>
109
+ <s:sequence>
110
+ <s:element
111
+ minOccurs="1"
112
+ maxOccurs="1"
113
+ name="receiverId"
114
+ type="s:string" />
115
+ </s:sequence>
116
+ </s:complexType>
117
+ </s:element>
118
+ <s:element name="GetDocumentResponse">
119
+ <s:complexType>
120
+ <s:sequence>
121
+ <s:element
122
+ minOccurs="1"
123
+ maxOccurs="1"
124
+ name="GetDocumentResult"
125
+ type="s:boolean" />
126
+ <s:element
127
+ minOccurs="1"
128
+ maxOccurs="1"
129
+ name="messageId"
130
+ type="s:string" />
131
+ <s:element
132
+ minOccurs="1"
133
+ maxOccurs="1"
134
+ name="data"
135
+ type="s:base64Binary" />
136
+ <s:element
137
+ minOccurs="1"
138
+ maxOccurs="1"
139
+ name="senderId"
140
+ type="s:string" />
141
+ <s:element
142
+ minOccurs="1"
143
+ maxOccurs="1"
144
+ name="receiverId"
145
+ type="s:string" />
146
+ <s:element
147
+ minOccurs="1"
148
+ maxOccurs="1"
149
+ name="formatType"
150
+ type="s:string" />
151
+ <s:element
152
+ minOccurs="1"
153
+ maxOccurs="1"
154
+ name="documentType"
155
+ type="s:string" />
156
+ <s:element
157
+ minOccurs="1"
158
+ maxOccurs="1"
159
+ name="compressType"
160
+ type="s:string" />
161
+ </s:sequence>
162
+ </s:complexType>
163
+ </s:element>
164
+ <s:element name="ConfirmDocument">
165
+ <s:complexType>
166
+ <s:sequence>
167
+ <s:element
168
+ minOccurs="1"
169
+ maxOccurs="1"
170
+ name="messageId"
171
+ type="s:string" />
172
+ <s:element
173
+ minOccurs="1"
174
+ maxOccurs="1"
175
+ name="senderId"
176
+ type="s:string" />
177
+ <s:element
178
+ minOccurs="1"
179
+ maxOccurs="1"
180
+ name="receiverId"
181
+ type="s:string" />
182
+ </s:sequence>
183
+ </s:complexType>
184
+ </s:element>
185
+ <s:element name="ConfirmDocumentResponse">
186
+ <s:complexType>
187
+ <s:sequence>
188
+ <s:element
189
+ minOccurs="1"
190
+ maxOccurs="1"
191
+ name="ConfirmDocumentResult"
192
+ type="s:boolean" />
193
+ </s:sequence>
194
+ </s:complexType>
195
+ </s:element>
196
+ </s:schema>
197
+ </types>
198
+ <message name="PutDocumentSoapIn">
199
+ <part
200
+ name="parameters"
201
+ element="s0:PutDocument" />
202
+ </message>
203
+ <message name="PutDocumentSoapOut">
204
+ <part
205
+ name="parameters"
206
+ element="s0:PutDocumentResponse" />
207
+ </message>
208
+ <message name="PutDocumentMessageHeader">
209
+ <part
210
+ name="MessageHeader"
211
+ element="s0:MessageHeader" />
212
+ </message>
213
+ <message name="GetDocumentSoapIn">
214
+ <part
215
+ name="parameters"
216
+ element="s0:GetDocument" />
217
+ </message>
218
+ 28
219
+ <message name="GetDocumentSoapOut">
220
+ <part
221
+ name="parameters"
222
+ element="s0:GetDocumentResponse" />
223
+ </message>
224
+ <message name="GetDocumentMessageHeader">
225
+ <part
226
+ name="MessageHeader"
227
+ element="s0:MessageHeader" />
228
+ </message>
229
+ <message name="ConfirmDocumentSoapIn">
230
+ <part
231
+ name="parameters"
232
+ element="s0:ConfirmDocument" />
233
+ </message>
234
+ <message name="ConfirmDocumentSoapOut">
235
+ <part
236
+ name="parameters"
237
+ element="s0:ConfirmDocumentResponse" />
238
+ </message>
239
+ <message name="ConfirmDocumentMessageHeader">
240
+ <part
241
+ name="MessageHeader"
242
+ element="s0:MessageHeader" />
243
+ </message>
244
+ <portType name="JXMSTransferSoap">
245
+ <operation name="PutDocument">
246
+ <documentation>ドキュメントの送信(Client To Server)</documentation>
247
+ <input message="s0:PutDocumentSoapIn" />
248
+ <output message="s0:PutDocumentSoapOut" />
249
+ </operation>
250
+ <operation name="GetDocument">
251
+ <documentation>ドキュメントの受信(Client From Server)</documentation>
252
+ <input message="s0:GetDocumentSoapIn" />
253
+ <output message="s0:GetDocumentSoapOut" />
254
+ </operation>
255
+ <operation name="ConfirmDocument">
256
+ <documentation>ドキュメントの受信確認</documentation>
257
+ <input message="s0:ConfirmDocumentSoapIn" />
258
+ <output message="s0:ConfirmDocumentSoapOut" />
259
+ </operation>
260
+ </portType>
261
+ <binding
262
+ name="JXMSTransferSoap"
263
+ type="s0:JXMSTransferSoap">
264
+ <soap:binding
265
+ transport="http://schemas.xmlsoap.org/soap/http"
266
+ style="document" />
267
+ <operation name="PutDocument">
268
+ <soap:operation
269
+ soapAction="http://www.dsri.jp/edi-bp/2004/jedicos-xml/client-server/PutDocument"
270
+ style="document" />
271
+ <input>
272
+ <soap:body use="literal" />
273
+ <soap:header
274
+ message="s0:PutDocumentMessageHeader"
275
+ part="MessageHeader"
276
+ use="literal" />
277
+ </input>
278
+ <output>
279
+ <soap:body use="literal" />
280
+ <soap:header
281
+ message="s0:PutDocumentMessageHeader"
282
+ part="MessageHeader"
283
+ use="literal" />
284
+ </output>
285
+ </operation>
286
+ <operation name="GetDocument">
287
+ <soap:operation
288
+ soapAction="http://www.dsri.jp/edi-bp/2004/jedicos-xml/client-server/GetDocument"
289
+ style="document" />
290
+ <input>
291
+ <soap:body use="literal" />
292
+ <soap:header
293
+ message="s0:GetDocumentMessageHeader"
294
+ part="MessageHeader"
295
+ use="literal" />
296
+ </input>
297
+ 29
298
+ <output>
299
+ <soap:body use="literal" />
300
+ <soap:header
301
+ message="s0:GetDocumentMessageHeader"
302
+ part="MessageHeader"
303
+ use="literal" />
304
+ </output>
305
+ </operation>
306
+ <operation name="ConfirmDocument">
307
+ <soap:operation
308
+ soapAction="http://www.dsri.jp/edi-bp/2004/jedicos-xml/clientserver/ConfirmDocument"
309
+ style="document" />
310
+ <input>
311
+ <soap:body use="literal" />
312
+ <soap:header
313
+ message="s0:ConfirmDocumentMessageHeader"
314
+ part="MessageHeader"
315
+ use="literal" />
316
+ </input>
317
+ <output>
318
+ <soap:body use="literal" />
319
+ <soap:header
320
+ message="s0:ConfirmDocumentMessageHeader"
321
+ part="MessageHeader"
322
+ use="literal" />
323
+ </output>
324
+ </operation>
325
+ </binding>
326
+ <service name="JXMSTransfer">
327
+ <documentation>JX 手順メッセージ転送サービス</documentation>
328
+ <port
329
+ name="JXMSTransferSoap"
330
+ binding="s0:JXMSTransferSoap">
331
+ <soap:address location="Please specify :endpoint option" />
332
+ </port>
333
+ </service>
334
+ </definitions>
metadata ADDED
@@ -0,0 +1,77 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jx_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Narazaka
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2021-11-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: savon
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.12.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.12.1
27
+ description:
28
+ email:
29
+ - info@narazaka.net
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rspec"
35
+ - ".rubocop.yml"
36
+ - Gemfile
37
+ - LICENSE
38
+ - README.md
39
+ - Rakefile
40
+ - bin/console
41
+ - bin/setup
42
+ - lib/jx_client.rb
43
+ - lib/jx_client/confirm_document.rb
44
+ - lib/jx_client/get_document.rb
45
+ - lib/jx_client/get_document_result.rb
46
+ - lib/jx_client/operation_base.rb
47
+ - lib/jx_client/put_document.rb
48
+ - lib/jx_client/version.rb
49
+ - wsdl/jx2004.wsdl.xml
50
+ - wsdl/jx2007.wsdl.xml
51
+ homepage: https://github.com/Narazaka/jx_client
52
+ licenses:
53
+ - Zlib
54
+ metadata:
55
+ homepage_uri: https://github.com/Narazaka/jx_client
56
+ source_code_uri: https://github.com/Narazaka/jx_client.git
57
+ changelog_uri: https://github.com/Narazaka/jx_client
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 2.6.0
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubygems_version: 3.2.3
74
+ signing_key:
75
+ specification_version: 4
76
+ summary: EDI用JX手順クライアント
77
+ test_files: []