Class: Gapic::Presenters::ServicePresenter

Inherits:
Object
  • Object
show all
Includes:
Helpers::FilepathHelper, Helpers::NamespaceHelper
Defined in:
lib/gapic/presenters/service_presenter.rb

Overview

A presenter for proto services.

Instance Method Summary collapse

Methods included from Helpers::NamespaceHelper

#fix_namespace, #ruby_namespace, #ruby_namespace_for_address

Methods included from Helpers::FilepathHelper

#fix_file_path, #ruby_file_path, #ruby_file_path_for_namespace

Constructor Details

#initialize(api, service, parent_service: nil) ⇒ ServicePresenter

Returns a new instance of ServicePresenter.



30
31
32
33
34
# File 'lib/gapic/presenters/service_presenter.rb', line 30

def initialize api, service, parent_service: nil
  @api = api
  @service = service
  @parent_service = parent_service
end

Instance Method Details

#address ⇒ Object



54
55
56
# File 'lib/gapic/presenters/service_presenter.rb', line 54

def address
  @service.address
end

#client_endpoint ⇒ Object



149
150
151
152
# File 'lib/gapic/presenters/service_presenter.rb', line 149

def client_endpoint
  return @parent_service.client_endpoint if @parent_service
  @service.host || default_config(:default_host) || "localhost"
end

#client_file_name ⇒ Object



145
146
147
# File 'lib/gapic/presenters/service_presenter.rb', line 145

def client_file_name
  client_file_path.split("/").last
end

#client_file_path ⇒ Object



141
142
143
# File 'lib/gapic/presenters/service_presenter.rb', line 141

def client_file_path
  client_require + ".rb"
end

#client_name ⇒ Object



121
122
123
# File 'lib/gapic/presenters/service_presenter.rb', line 121

def client_name
  "Client"
end

#client_name_full ⇒ Object



125
126
127
# File 'lib/gapic/presenters/service_presenter.rb', line 125

def client_name_full
  fix_namespace @api, "#{proto_service_name_full}::#{client_name}"
end

#client_proto_name ⇒ Object



158
159
160
# File 'lib/gapic/presenters/service_presenter.rb', line 158

def client_proto_name
  @service.address.join "."
end

#client_require ⇒ Object



137
138
139
# File 'lib/gapic/presenters/service_presenter.rb', line 137

def client_require
  ruby_file_path @api, client_name_full
end

#client_scopes ⇒ Object



154
155
156
# File 'lib/gapic/presenters/service_presenter.rb', line 154

def client_scopes
  @service.scopes || default_config(:oauth_scopes)
end

#config_channel_args ⇒ Object



275
276
277
# File 'lib/gapic/presenters/service_presenter.rb', line 275

def config_channel_args
  { "grpc.service_config_disable_resolution" => 1 }
end

#configure_client_call ⇒ Object



133
134
135
# File 'lib/gapic/presenters/service_presenter.rb', line 133

def configure_client_call
  "#{client_name_full}.configure"
end

#create_client_call ⇒ Object



129
130
131
# File 'lib/gapic/presenters/service_presenter.rb', line 129

def create_client_call
  "#{client_name_full}.new"
end

#credentials_class_xref ⇒ Object



170
171
172
# File 'lib/gapic/presenters/service_presenter.rb', line 170

def credentials_class_xref
  "{#{credentials_name_full}}"
end

#credentials_file_name ⇒ Object



178
179
180
# File 'lib/gapic/presenters/service_presenter.rb', line 178

def credentials_file_name
  credentials_file_path.split("/").last
end

#credentials_file_path ⇒ Object



174
175
176
# File 'lib/gapic/presenters/service_presenter.rb', line 174

def credentials_file_path
  credentials_require + ".rb"
end

#credentials_name ⇒ Object



162
163
164
# File 'lib/gapic/presenters/service_presenter.rb', line 162

def credentials_name
  "Credentials"
end

#credentials_name_full ⇒ Object



166
167
168
# File 'lib/gapic/presenters/service_presenter.rb', line 166

def credentials_name_full
  fix_namespace @api, "#{proto_service_name_full}::#{credentials_name}"
end

#credentials_require ⇒ Object



182
183
184
# File 'lib/gapic/presenters/service_presenter.rb', line 182

def credentials_require
  ruby_file_path @api, credentials_name_full
end

#doc_description(disable_xrefs: false) ⇒ Object



69
70
71
# File 'lib/gapic/presenters/service_presenter.rb', line 69

def doc_description disable_xrefs: false
  @service.docs_leading_comments disable_xrefs: disable_xrefs
end

#file ⇒ Object



40
41
42
# File 'lib/gapic/presenters/service_presenter.rb', line 40

def file
  FilePresenter.new @api, @service.parent
end

#gem ⇒ Object



36
37
38
# File 'lib/gapic/presenters/service_presenter.rb', line 36

def gem
  GemPresenter.new @api
end

#grpc_full_name ⇒ Object



284
285
286
# File 'lib/gapic/presenters/service_presenter.rb', line 284

def grpc_full_name
  @service.address.join "."
end

#grpc_service_config ⇒ Object



279
280
281
282
# File 'lib/gapic/presenters/service_presenter.rb', line 279

def grpc_service_config
  return unless @api.grpc_service_config&.service_level_configs&.key? grpc_full_name
  @api.grpc_service_config.service_level_configs[grpc_full_name]
end

#helpers_file_name ⇒ Object



190
191
192
# File 'lib/gapic/presenters/service_presenter.rb', line 190

def helpers_file_name
  "helpers.rb"
end

#helpers_file_path ⇒ Object



186
187
188
# File 'lib/gapic/presenters/service_presenter.rb', line 186

def helpers_file_path
  helpers_require + ".rb"
end

#helpers_require ⇒ Object



194
195
196
# File 'lib/gapic/presenters/service_presenter.rb', line 194

def helpers_require
  ruby_file_path @api, "#{proto_service_name_full}::Helpers"
end

#lro? ⇒ Boolean

Returns:

  • (Boolean)


238
239
240
# File 'lib/gapic/presenters/service_presenter.rb', line 238

def lro?
  methods.find(&:lro?)
end

#lro_client_ivar ⇒ Object



246
247
248
# File 'lib/gapic/presenters/service_presenter.rb', line 246

def lro_client_ivar
  "@#{lro_client_var}"
end

#lro_client_var ⇒ Object



242
243
244
# File 'lib/gapic/presenters/service_presenter.rb', line 242

def lro_client_var
  "operations_client"
end

#lro_service ⇒ Object



270
271
272
273
# File 'lib/gapic/presenters/service_presenter.rb', line 270

def lro_service
  lro = @service.parent.parent.files.find { |file| file.name == "google/longrunning/operations.proto" }
  return ServicePresenter.new @api, lro.services.first, parent_service: self unless lro.nil?
end

#methods ⇒ Object



48
49
50
51
52
# File 'lib/gapic/presenters/service_presenter.rb', line 48

def methods
  @methods ||= begin
    @service.methods.map { |m| MethodPresenter.new @api, m }
  end
end

#name ⇒ Object



73
74
75
# File 'lib/gapic/presenters/service_presenter.rb', line 73

def name
  @service.name
end

#namespace ⇒ Object



58
59
60
61
62
63
# File 'lib/gapic/presenters/service_presenter.rb', line 58

def namespace
  return @service.ruby_package if @service.ruby_package.present?

  namespace = ruby_namespace_for_address @service.address[0...-1]
  fix_namespace @api, namespace
end

#operations_file_name ⇒ Object



262
263
264
# File 'lib/gapic/presenters/service_presenter.rb', line 262

def operations_file_name
  operations_file_path.split("/").last
end

#operations_file_path ⇒ Object



258
259
260
# File 'lib/gapic/presenters/service_presenter.rb', line 258

def operations_file_path
  operations_require + ".rb"
end

#operations_name ⇒ Object



250
251
252
# File 'lib/gapic/presenters/service_presenter.rb', line 250

def operations_name
  "Operations"
end

#operations_name_full ⇒ Object



254
255
256
# File 'lib/gapic/presenters/service_presenter.rb', line 254

def operations_name_full
  fix_namespace @api, "#{proto_service_name_full}::#{operations_name}"
end

#operations_require ⇒ Object



266
267
268
# File 'lib/gapic/presenters/service_presenter.rb', line 266

def operations_require
  ruby_file_path @api, "#{proto_service_name_full}::#{operations_name}"
end

#package ⇒ Object



44
45
46
# File 'lib/gapic/presenters/service_presenter.rb', line 44

def package
  PackagePresenter.new @api, @service.parent.package
end

#paths? ⇒ Boolean

Returns:

  • (Boolean)


202
203
204
# File 'lib/gapic/presenters/service_presenter.rb', line 202

def paths?
  references.any?
end

#paths_file_name ⇒ Object



218
219
220
# File 'lib/gapic/presenters/service_presenter.rb', line 218

def paths_file_name
  paths_file_path.split("/").last
end

#paths_file_path ⇒ Object



214
215
216
# File 'lib/gapic/presenters/service_presenter.rb', line 214

def paths_file_path
  paths_require + ".rb"
end

#paths_name ⇒ Object



206
207
208
# File 'lib/gapic/presenters/service_presenter.rb', line 206

def paths_name
  "Paths"
end

#paths_name_full ⇒ Object



210
211
212
# File 'lib/gapic/presenters/service_presenter.rb', line 210

def paths_name_full
  fix_namespace @api, "#{proto_service_name_full}::#{paths_name}"
end

#paths_require ⇒ Object



222
223
224
# File 'lib/gapic/presenters/service_presenter.rb', line 222

def paths_require
  ruby_file_path @api, "#{proto_service_name_full}::#{paths_name}"
end

#proto_service_file_name ⇒ Object



85
86
87
# File 'lib/gapic/presenters/service_presenter.rb', line 85

def proto_service_file_name
  proto_service_file_path.split("/").last
end

#proto_service_file_path ⇒ Object



81
82
83
# File 'lib/gapic/presenters/service_presenter.rb', line 81

def proto_service_file_path
  @service.parent.name.sub ".proto", "_pb.rb"
end

#proto_service_name_full ⇒ Object



77
78
79
# File 'lib/gapic/presenters/service_presenter.rb', line 77

def proto_service_name_full
  fix_namespace @api, "#{namespace}::#{name}"
end

#proto_service_require ⇒ Object



89
90
91
# File 'lib/gapic/presenters/service_presenter.rb', line 89

def proto_service_require
  proto_service_file_path.sub ".rb", ""
end

#proto_service_stub_name_full ⇒ Object



105
106
107
# File 'lib/gapic/presenters/service_presenter.rb', line 105

def proto_service_stub_name_full
  "#{proto_service_name_full}::Stub"
end

#proto_services_file_name ⇒ Object



97
98
99
# File 'lib/gapic/presenters/service_presenter.rb', line 97

def proto_services_file_name
  proto_services_file_path.split("/").last
end

#proto_services_file_path ⇒ Object



93
94
95
# File 'lib/gapic/presenters/service_presenter.rb', line 93

def proto_services_file_path
  @service.parent.name.sub ".proto", "_services_pb.rb"
end

#proto_services_require ⇒ Object



101
102
103
# File 'lib/gapic/presenters/service_presenter.rb', line 101

def proto_services_require
  proto_services_file_path.sub ".rb", ""
end

#references ⇒ Object



198
199
200
# File 'lib/gapic/presenters/service_presenter.rb', line 198

def references
  @references ||= @service.resources.map { |resource| ResourcePresenter.new resource }.sort_by(&:name)
end

#service_file_name ⇒ Object



113
114
115
# File 'lib/gapic/presenters/service_presenter.rb', line 113

def service_file_name
  service_file_path.split("/").last
end

#service_file_path ⇒ Object



109
110
111
# File 'lib/gapic/presenters/service_presenter.rb', line 109

def service_file_path
  service_require + ".rb"
end

#service_require ⇒ Object



117
118
119
# File 'lib/gapic/presenters/service_presenter.rb', line 117

def service_require
  ruby_file_path @api, proto_service_name_full
end

#stub_name ⇒ Object



234
235
236
# File 'lib/gapic/presenters/service_presenter.rb', line 234

def stub_name
  "#{ActiveSupport::Inflector.underscore name}_stub"
end

#test_client_file_path ⇒ Object



226
227
228
# File 'lib/gapic/presenters/service_presenter.rb', line 226

def test_client_file_path
  service_file_path.sub ".rb", "_test.rb"
end

#test_client_operations_file_path ⇒ Object



230
231
232
# File 'lib/gapic/presenters/service_presenter.rb', line 230

def test_client_operations_file_path
  service_file_path.sub ".rb", "_operations_test.rb"
end

#version ⇒ Object



65
66
67
# File 'lib/gapic/presenters/service_presenter.rb', line 65

def version
  ActiveSupport::Inflector.camelize @service.address[-2]
end