jx_client 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []