Class: Gapic::Presenters::PackagePresenter
Overview
A presenter for proto packages.
Instance Method Summary
collapse
#ensure_absolute_namespace, #fix_namespace, #ruby_namespace, #ruby_namespace_for_address
#fix_file_path, #ruby_file_path, #ruby_file_path_for_namespace
Constructor Details
#initialize(gem_presenter, api, package) ⇒ PackagePresenter
Returns a new instance of PackagePresenter.
30
31
32
33
34
|
# File 'lib/gapic/presenters/package_presenter.rb', line 30
def initialize gem_presenter, api, package
@gem_presenter = gem_presenter
@api = api
@package = package
end
|
Instance Method Details
#address ⇒ Object
126
127
128
|
# File 'lib/gapic/presenters/package_presenter.rb', line 126
def address
@package.split "."
end
|
#drift_manifest ⇒ Hash
173
174
175
176
177
178
179
180
181
182
|
# File 'lib/gapic/presenters/package_presenter.rb', line 173
def drift_manifest
{
schema: "1.0",
comment: "This file maps proto services/RPCs to the corresponding library clients/methods",
language: "ruby",
protoPackage: name,
libraryPackage: namespace,
services: services.to_h { |s| [s.grpc_service_name, s.drift_manifest] }
}
end
|
#empty? ⇒ Boolean
150
151
152
|
# File 'lib/gapic/presenters/package_presenter.rb', line 150
def empty?
services.empty?
end
|
First service with REST bindings.
95
96
97
|
# File 'lib/gapic/presenters/package_presenter.rb', line 95
def first_service_with_rest
services.find(&:methods_rest_bindings?)
end
|
#gem ⇒ Object
36
37
38
|
# File 'lib/gapic/presenters/package_presenter.rb', line 36
def gem
@gem_presenter
end
|
#generate_grpc_clients? ⇒ Boolean
Returns Whether the generation of gRPC clients is requested.
87
88
89
|
# File 'lib/gapic/presenters/package_presenter.rb', line 87
def generate_grpc_clients?
@api.generate_grpc_clients?
end
|
#generate_rest_clients? ⇒ Boolean
Returns Whether the generation of REST clients is requested
and can be done because at least one method has rest bindings.
80
81
82
|
# File 'lib/gapic/presenters/package_presenter.rb', line 80
def generate_rest_clients?
@api.generate_rest_clients? && !first_service_with_rest.nil?
end
|
#helpers_file_name ⇒ Object
158
159
160
|
# File 'lib/gapic/presenters/package_presenter.rb', line 158
def helpers_file_name
"_helpers.rb"
end
|
#helpers_file_path ⇒ Object
154
155
156
|
# File 'lib/gapic/presenters/package_presenter.rb', line 154
def helpers_file_path
"#{helpers_require}.rb"
end
|
#helpers_require ⇒ Object
162
163
164
|
# File 'lib/gapic/presenters/package_presenter.rb', line 162
def helpers_require
"#{package_require}/_helpers"
end
|
#mixin_binding_overrides? ⇒ Boolean
Whether there are mixin services that this package has http binding overrides for.
104
105
106
|
# File 'lib/gapic/presenters/package_presenter.rb', line 104
def mixin_binding_overrides?
first_service_with_rest&.rest&.mixin_binding_overrides? || false
end
|
#mixin_binding_overrides_file_path ⇒ String
File path for the mixin binding overrides file
122
123
124
|
# File 'lib/gapic/presenters/package_presenter.rb', line 122
def mixin_binding_overrides_file_path
"#{mixin_binding_overrides_require}.rb"
end
|
#mixin_binding_overrides_require ⇒ String
Requires path for the mixin binding overrides file
113
114
115
|
# File 'lib/gapic/presenters/package_presenter.rb', line 113
def mixin_binding_overrides_require
"#{ruby_file_path @api, namespace}/bindings_override"
end
|
#module_name ⇒ Object
53
54
55
|
# File 'lib/gapic/presenters/package_presenter.rb', line 53
def module_name
namespace.split("::").last
end
|
#name ⇒ Object
40
41
42
|
# File 'lib/gapic/presenters/package_presenter.rb', line 40
def name
@package
end
|
#namespace ⇒ Object
44
45
46
47
|
# File 'lib/gapic/presenters/package_presenter.rb', line 44
def namespace
return services.first&.namespace if services.first&.namespace
ruby_namespace_for_address address
end
|
#package_directory_name ⇒ Object
146
147
148
|
# File 'lib/gapic/presenters/package_presenter.rb', line 146
def package_directory_name
package_require.split("/").last
end
|
#package_file_path ⇒ Object
138
139
140
|
# File 'lib/gapic/presenters/package_presenter.rb', line 138
def package_file_path
"#{package_require}.rb"
end
|
#package_require ⇒ Object
130
131
132
|
# File 'lib/gapic/presenters/package_presenter.rb', line 130
def package_require
ruby_file_path @api, namespace
end
|
#package_rest_file_path ⇒ Object
142
143
144
|
# File 'lib/gapic/presenters/package_presenter.rb', line 142
def package_rest_file_path
"#{package_rest_require}.rb"
end
|
#package_rest_require ⇒ Object
134
135
136
|
# File 'lib/gapic/presenters/package_presenter.rb', line 134
def package_rest_require
"#{ruby_file_path @api, namespace}/rest"
end
|
#parent_namespace ⇒ Object
49
50
51
|
# File 'lib/gapic/presenters/package_presenter.rb', line 49
def parent_namespace
namespace.split("::")[0...-1].join("::")
end
|
Services whose clients should be generated in this package namespace.
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/gapic/presenters/package_presenter.rb', line 61
def services
@services ||= begin
files = @api.generate_files.select { |f| f.package == @package }
service_list = files.map(&:services).flatten
mixin_service_names = gem.mixins_model.mixin_services
service_list.delete_if { |s| mixin_service_names.include? s.full_name }
normal_services = service_list.select { |s| @api.delegate_service_for(s).nil? }
common_services = normal_services.flat_map { |s| @api.common_services_for s }
(normal_services + common_services).map { |s| ServicePresenter.new @gem_presenter, @api, s }
end
end
|