cpaas_test_ruby 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 +7 -0
- data/.devcontainer/devcontainer.json +38 -0
- data/.devcontainer/docker/ruby/Dockerfile +39 -0
- data/.devcontainer/docker-compose.yml +17 -0
- data/.devcontainer/lifecycle/initialize-command.sh +6 -0
- data/.rspec +3 -0
- data/.rubocop.yml +34 -0
- data/.vscode/launch.json +32 -0
- data/Gemfile +6 -0
- data/LICENSE +21 -0
- data/README.md +2 -0
- data/Rakefile +8 -0
- data/lib/cpaas_test_ruby/config.rb +78 -0
- data/lib/cpaas_test_ruby/exception/bad_request_exception.rb +10 -0
- data/lib/cpaas_test_ruby/exception/bulk_message_create_failed_exception.rb +9 -0
- data/lib/cpaas_test_ruby/exception/bulk_message_list_message_retry_limit_exceed_exception.rb +9 -0
- data/lib/cpaas_test_ruby/exception/bulk_message_show_retry_limit_exceed_exception.rb +9 -0
- data/lib/cpaas_test_ruby/exception/file_download_failed_exception.rb +9 -0
- data/lib/cpaas_test_ruby/exception/file_not_found_exception.rb +9 -0
- data/lib/cpaas_test_ruby/exception/file_upload_failed_exception.rb +9 -0
- data/lib/cpaas_test_ruby/exception/forbidden_exception.rb +10 -0
- data/lib/cpaas_test_ruby/exception/invalid_params_exception.rb +9 -0
- data/lib/cpaas_test_ruby/exception/invalid_request_options_exception.rb +9 -0
- data/lib/cpaas_test_ruby/exception/karaden_exception.rb +15 -0
- data/lib/cpaas_test_ruby/exception/not_found_exception.rb +10 -0
- data/lib/cpaas_test_ruby/exception/too_many_requests_exception.rb +10 -0
- data/lib/cpaas_test_ruby/exception/unauthorized_exception.rb +10 -0
- data/lib/cpaas_test_ruby/exception/unexpected_value_exception.rb +9 -0
- data/lib/cpaas_test_ruby/exception/unknown_error_exception.rb +9 -0
- data/lib/cpaas_test_ruby/exception/unprocessable_entity_exception.rb +10 -0
- data/lib/cpaas_test_ruby/model/bulk_file.rb +34 -0
- data/lib/cpaas_test_ruby/model/bulk_message.rb +53 -0
- data/lib/cpaas_test_ruby/model/collection.rb +15 -0
- data/lib/cpaas_test_ruby/model/error.rb +19 -0
- data/lib/cpaas_test_ruby/model/karaden_object.rb +31 -0
- data/lib/cpaas_test_ruby/model/message.rb +134 -0
- data/lib/cpaas_test_ruby/model/requestable.rb +29 -0
- data/lib/cpaas_test_ruby/net/no_contents_response.rb +80 -0
- data/lib/cpaas_test_ruby/net/requestor.rb +55 -0
- data/lib/cpaas_test_ruby/net/requestor_interface.rb +9 -0
- data/lib/cpaas_test_ruby/net/response.rb +79 -0
- data/lib/cpaas_test_ruby/net/response_interface.rb +25 -0
- data/lib/cpaas_test_ruby/param/message/bulk/bulk_message_create_params.rb +78 -0
- data/lib/cpaas_test_ruby/param/message/bulk/bulk_message_download_params.rb +126 -0
- data/lib/cpaas_test_ruby/param/message/bulk/bulk_message_list_message_params.rb +72 -0
- data/lib/cpaas_test_ruby/param/message/bulk/bulk_message_params.rb +15 -0
- data/lib/cpaas_test_ruby/param/message/bulk/bulk_message_show_params.rb +72 -0
- data/lib/cpaas_test_ruby/param/message/message_cancel_params.rb +70 -0
- data/lib/cpaas_test_ruby/param/message/message_create_params.rb +152 -0
- data/lib/cpaas_test_ruby/param/message/message_detail_params.rb +70 -0
- data/lib/cpaas_test_ruby/param/message/message_list_params.rb +106 -0
- data/lib/cpaas_test_ruby/param/message/message_params.rb +12 -0
- data/lib/cpaas_test_ruby/request_options.rb +142 -0
- data/lib/cpaas_test_ruby/service/bulk_message_service.rb +90 -0
- data/lib/cpaas_test_ruby/utility.rb +65 -0
- data/lib/cpaas_test_ruby.rb +51 -0
- data/mock/2023-01-01.yaml +776 -0
- data/mock/2023-12-01.yaml +783 -0
- data/mock/2024-03-01.yaml +1061 -0
- data/mock/latest +1 -0
- data/package-lock.json +3474 -0
- data/package.json +21 -0
- data/sig/karaden.rbs +0 -0
- metadata +197 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
module Karaden
|
|
2
|
+
module Service
|
|
3
|
+
class BulkMessageService
|
|
4
|
+
REGEX_PATTERN = /filename="([^"]+)"/
|
|
5
|
+
|
|
6
|
+
def self.create(filename, request_options = nil)
|
|
7
|
+
raise Karaden::Exception::FileNotFoundException unless File.file?(filename)
|
|
8
|
+
|
|
9
|
+
bulk_file = Karaden::Model::BulkFile.create(request_options)
|
|
10
|
+
|
|
11
|
+
Karaden::Utility.put_signed_url(bulk_file.url, filename, 'text/csv', request_options)
|
|
12
|
+
|
|
13
|
+
params = Karaden::Param::Message::Bulk::BulkMessageCreateParams
|
|
14
|
+
.new_builder
|
|
15
|
+
.with_bulk_file_id(bulk_file.id)
|
|
16
|
+
.build
|
|
17
|
+
Karaden::Model::BulkMessage.create(params, request_options)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.download(params, request_options = nil)
|
|
21
|
+
params.validate
|
|
22
|
+
show_params = Karaden::Param::Message::Bulk::BulkMessageShowParams.new_builder
|
|
23
|
+
.with_id(params.id)
|
|
24
|
+
.build
|
|
25
|
+
unless Karaden::Service::BulkMessageService.check_bulk_message_status(params.max_retries, params.retry_interval, show_params, request_options)
|
|
26
|
+
raise Exception::BulkMessageShowRetryLimitExceedException
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
list_message_params = Param::Message::Bulk::BulkMessageListMessageParams.new_builder
|
|
30
|
+
.with_id(params.id)
|
|
31
|
+
.build
|
|
32
|
+
download_url = Karaden::Service::BulkMessageService.get_download_url(params.max_retries, params.retry_interval, list_message_params, request_options)
|
|
33
|
+
raise Exception::BulkMessageListMessageRetryLimitExceedException if download_url.nil?
|
|
34
|
+
|
|
35
|
+
begin
|
|
36
|
+
Karaden::Service::BulkMessageService.get_contents(download_url, params.directory_path, request_options)
|
|
37
|
+
rescue StandardError
|
|
38
|
+
raise Exception::FileDownloadFailedException
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.get_contents(download_url, directory_path, request_options = nil)
|
|
43
|
+
uri = URI.parse(download_url)
|
|
44
|
+
http = ::Net::HTTP.new(uri.host, uri.port)
|
|
45
|
+
http.use_ssl = uri.scheme == 'https'
|
|
46
|
+
http.open_timeout, http.read_timeout = Karaden::Utility.get_timeout(request_options)
|
|
47
|
+
http.request_get(uri.request_uri) do |response|
|
|
48
|
+
match = response['content-disposition'].match(Karaden::Service::BulkMessageService::REGEX_PATTERN)
|
|
49
|
+
raise Exception::FileDownloadFailedException unless match
|
|
50
|
+
|
|
51
|
+
filename = File.join(File.realpath(directory_path), match[1])
|
|
52
|
+
File.open(filename, 'w') do |file|
|
|
53
|
+
response.read_body do |chunk|
|
|
54
|
+
file.write(chunk)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
true
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def self.check_bulk_message_status(retry_count, _retry_interval, params, request_options)
|
|
62
|
+
result = false
|
|
63
|
+
(0..retry_count).each do |_count|
|
|
64
|
+
# sleep retry_interval if count.positive?
|
|
65
|
+
bulk_message = Karaden::Model::BulkMessage.show(params, request_options)
|
|
66
|
+
raise Exception::BulkMessageCreateFailedException if bulk_message.status == Karaden::Model::BulkMessage::STATUS_ERROR
|
|
67
|
+
|
|
68
|
+
if bulk_message.status == Karaden::Model::BulkMessage::STATUS_DONE
|
|
69
|
+
result = true
|
|
70
|
+
break
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
result
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def self.get_download_url(retry_count, _retry_interval, params, request_options)
|
|
77
|
+
result = nil
|
|
78
|
+
(0..retry_count).each do |_count|
|
|
79
|
+
# sleep retry_interval if count.positive?
|
|
80
|
+
output = Karaden::Model::BulkMessage.list_message(params, request_options)
|
|
81
|
+
unless output.nil?
|
|
82
|
+
result = output
|
|
83
|
+
break
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
result
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
module Karaden
|
|
2
|
+
class Utility
|
|
3
|
+
OBJECT_TYPES = {
|
|
4
|
+
Karaden::Model::Error::OBJECT_NAME => Karaden::Model::Error,
|
|
5
|
+
Karaden::Model::Collection::OBJECT_NAME => Karaden::Model::Collection,
|
|
6
|
+
Karaden::Model::Message::OBJECT_NAME => Karaden::Model::Message,
|
|
7
|
+
Karaden::Model::BulkFile::OBJECT_NAME => Karaden::Model::BulkFile,
|
|
8
|
+
Karaden::Model::BulkMessage::OBJECT_NAME => Karaden::Model::BulkMessage
|
|
9
|
+
}.freeze
|
|
10
|
+
DEFAULT_CONNECTION_TIMEOUT = 10
|
|
11
|
+
DEFAULT_READ_TIMEOUT = 30
|
|
12
|
+
|
|
13
|
+
def self.convert_to_karaden_object(contents, request_options)
|
|
14
|
+
clazz = OBJECT_TYPES[contents['object']] || Karaden::Model::KaradenObject
|
|
15
|
+
construct_from(clazz, contents, request_options)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.construct_from(clazz, contents, request_options)
|
|
19
|
+
object = clazz.new(contents['id'], request_options)
|
|
20
|
+
contents.each_pair do |key, value|
|
|
21
|
+
v = if value.is_a?(Array)
|
|
22
|
+
convert_to_array(value, request_options)
|
|
23
|
+
elsif value.is_a?(Hash)
|
|
24
|
+
convert_to_karaden_object(value, request_options)
|
|
25
|
+
else
|
|
26
|
+
value
|
|
27
|
+
end
|
|
28
|
+
object.set_property(key, v)
|
|
29
|
+
end
|
|
30
|
+
object
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.convert_to_array(contents, request_options)
|
|
34
|
+
contents.map do |v|
|
|
35
|
+
v.is_a?(Hash) ? convert_to_karaden_object(v, request_options) : v
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.put_signed_url(signed_url, filename, content_type = 'application/octet-stream', request_options = nil)
|
|
40
|
+
uri = URI.parse(signed_url)
|
|
41
|
+
http = ::Net::HTTP.new(uri.host, uri.port)
|
|
42
|
+
http.use_ssl = uri.scheme == 'https'
|
|
43
|
+
http.open_timeout, http.read_timeout = get_timeout(request_options)
|
|
44
|
+
|
|
45
|
+
request = ::Net::HTTP::Put.new(uri.request_uri)
|
|
46
|
+
response = File.open(filename, 'rb') do |f|
|
|
47
|
+
request.body_stream = f
|
|
48
|
+
request['Content-Length'] = f.size
|
|
49
|
+
request['Content-Type'] = content_type
|
|
50
|
+
|
|
51
|
+
http.request(request)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
raise Karaden::Exception::FileUploadFailedException unless response.code == '200'
|
|
55
|
+
rescue Karaden::Exception::FileUploadFailedException
|
|
56
|
+
raise
|
|
57
|
+
rescue StandardError
|
|
58
|
+
raise Karaden::Exception::FileUploadFailedException
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def self.get_timeout(request_options = nil)
|
|
62
|
+
[request_options&.connection_timeout || DEFAULT_CONNECTION_TIMEOUT, request_options&.read_timeout || DEFAULT_READ_TIMEOUT]
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'time'
|
|
4
|
+
require 'json'
|
|
5
|
+
require 'net/http'
|
|
6
|
+
require 'uri'
|
|
7
|
+
require 'etc'
|
|
8
|
+
|
|
9
|
+
require_relative 'cpaas_test_ruby/config'
|
|
10
|
+
require_relative 'cpaas_test_ruby/request_options'
|
|
11
|
+
require_relative 'cpaas_test_ruby/exception/karaden_exception'
|
|
12
|
+
require_relative 'cpaas_test_ruby/exception/bad_request_exception'
|
|
13
|
+
require_relative 'cpaas_test_ruby/exception/bulk_message_create_failed_exception'
|
|
14
|
+
require_relative 'cpaas_test_ruby/exception/bulk_message_list_message_retry_limit_exceed_exception'
|
|
15
|
+
require_relative 'cpaas_test_ruby/exception/bulk_message_show_retry_limit_exceed_exception'
|
|
16
|
+
require_relative 'cpaas_test_ruby/exception/forbidden_exception'
|
|
17
|
+
require_relative 'cpaas_test_ruby/exception/file_download_failed_exception'
|
|
18
|
+
require_relative 'cpaas_test_ruby/exception/file_not_found_exception'
|
|
19
|
+
require_relative 'cpaas_test_ruby/exception/file_upload_failed_exception'
|
|
20
|
+
require_relative 'cpaas_test_ruby/exception/not_found_exception'
|
|
21
|
+
require_relative 'cpaas_test_ruby/exception/invalid_request_options_exception'
|
|
22
|
+
require_relative 'cpaas_test_ruby/exception/invalid_params_exception'
|
|
23
|
+
require_relative 'cpaas_test_ruby/exception/too_many_requests_exception'
|
|
24
|
+
require_relative 'cpaas_test_ruby/exception/unexpected_value_exception'
|
|
25
|
+
require_relative 'cpaas_test_ruby/exception/unauthorized_exception'
|
|
26
|
+
require_relative 'cpaas_test_ruby/exception/unknown_error_exception'
|
|
27
|
+
require_relative 'cpaas_test_ruby/exception/unprocessable_entity_exception'
|
|
28
|
+
require_relative 'cpaas_test_ruby/net/requestor_interface'
|
|
29
|
+
require_relative 'cpaas_test_ruby/net/requestor'
|
|
30
|
+
require_relative 'cpaas_test_ruby/net/response_interface'
|
|
31
|
+
require_relative 'cpaas_test_ruby/net/response'
|
|
32
|
+
require_relative 'cpaas_test_ruby/net/no_contents_response'
|
|
33
|
+
require_relative 'cpaas_test_ruby/model/karaden_object'
|
|
34
|
+
require_relative 'cpaas_test_ruby/model/requestable'
|
|
35
|
+
require_relative 'cpaas_test_ruby/model/message'
|
|
36
|
+
require_relative 'cpaas_test_ruby/model/error'
|
|
37
|
+
require_relative 'cpaas_test_ruby/model/collection'
|
|
38
|
+
require_relative 'cpaas_test_ruby/model/bulk_file'
|
|
39
|
+
require_relative 'cpaas_test_ruby/model/bulk_message'
|
|
40
|
+
require_relative 'cpaas_test_ruby/param/message/message_params'
|
|
41
|
+
require_relative 'cpaas_test_ruby/param/message/message_create_params'
|
|
42
|
+
require_relative 'cpaas_test_ruby/param/message/message_cancel_params'
|
|
43
|
+
require_relative 'cpaas_test_ruby/param/message/message_detail_params'
|
|
44
|
+
require_relative 'cpaas_test_ruby/param/message/message_list_params'
|
|
45
|
+
require_relative 'cpaas_test_ruby/param/message/bulk/bulk_message_params'
|
|
46
|
+
require_relative 'cpaas_test_ruby/param/message/bulk/bulk_message_create_params'
|
|
47
|
+
require_relative 'cpaas_test_ruby/param/message/bulk/bulk_message_download_params'
|
|
48
|
+
require_relative 'cpaas_test_ruby/param/message/bulk/bulk_message_list_message_params'
|
|
49
|
+
require_relative 'cpaas_test_ruby/param/message/bulk/bulk_message_show_params'
|
|
50
|
+
require_relative 'cpaas_test_ruby/service/bulk_message_service'
|
|
51
|
+
require_relative 'cpaas_test_ruby/utility'
|