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) ⇒ ServicePresenter

Returns a new instance of ServicePresenter.



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

def initialize api, service
  @api = api
  @service = service
end

Instance Method Details

#address ⇒ Object



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

def address
  @service.address
end

#client_endpoint ⇒ Object



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

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

#client_file_name ⇒ Object



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

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

#client_file_path ⇒ Object



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

def client_file_path
  client_require + ".rb"
end

#client_name ⇒ Object



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

def client_name
  "Client"
end

#client_name_full ⇒ Object



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

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

#client_proto_name ⇒ Object



156
157
158
# File 'lib/gapic/presenters/service_presenter.rb', line 156

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

#client_require ⇒ Object



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

def client_require
  ruby_file_path @api, client_name_full
end

#client_scopes ⇒ Object



152
153
154
# File 'lib/gapic/presenters/service_presenter.rb', line 152

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

#config_channel_args ⇒ Object



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

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

#configure_client_call ⇒ Object



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

def configure_client_call
  "#{client_name_full}.configure"
end

#create_client_call ⇒ Object



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

def create_client_call
  "#{client_name_full}.new"
end

#credentials_class_xref ⇒ Object



168
169
170
# File 'lib/gapic/presenters/service_presenter.rb', line 168

def credentials_class_xref
  "{#{credentials_name_full}}"
end

#credentials_file_name ⇒ Object



176
177
178
# File 'lib/gapic/presenters/service_presenter.rb', line 176

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

#credentials_file_path ⇒ Object



172
173
174
# File 'lib/gapic/presenters/service_presenter.rb', line 172

def credentials_file_path
  credentials_require + ".rb"
end

#credentials_name ⇒ Object



160
161
162
# File 'lib/gapic/presenters/service_presenter.rb', line 160

def credentials_name
  "Credentials"
end

#credentials_name_full ⇒ Object



164
165
166
# File 'lib/gapic/presenters/service_presenter.rb', line 164

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

#credentials_require ⇒ Object



180
181
182
# File 'lib/gapic/presenters/service_presenter.rb', line 180

def credentials_require
  ruby_file_path @api, credentials_name_full
end

#doc_description(disable_xrefs: false) ⇒ Object



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

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

#file ⇒ Object



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

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

#gem ⇒ Object



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

def gem
  GemPresenter.new @api
end

#grpc_full_name ⇒ Object



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

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

#grpc_service_config ⇒ Object



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

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



188
189
190
# File 'lib/gapic/presenters/service_presenter.rb', line 188

def helpers_file_name
  "helpers.rb"
end

#helpers_file_path ⇒ Object



184
185
186
# File 'lib/gapic/presenters/service_presenter.rb', line 184

def helpers_file_path
  helpers_require + ".rb"
end

#helpers_require ⇒ Object



192
193
194
# File 'lib/gapic/presenters/service_presenter.rb', line 192

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

#lro? ⇒ Boolean

Returns:

  • (Boolean)


236
237
238
# File 'lib/gapic/presenters/service_presenter.rb', line 236

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

#lro_client_ivar ⇒ Object



244
245
246
# File 'lib/gapic/presenters/service_presenter.rb', line 244

def lro_client_ivar
  "@#{lro_client_var}"
end

#lro_client_var ⇒ Object



240
241
242
# File 'lib/gapic/presenters/service_presenter.rb', line 240

def lro_client_var
  "operations_client"
end

#lro_service ⇒ Object



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

def lro_service
  lro = @service.parent.parent.files.find { |file| file.name == "google/longrunning/operations.proto" }

  return ServicePresenter.new @api, lro.services.first unless lro.nil?
end

#methods ⇒ Object



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

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

#name ⇒ Object



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

def name
  @service.name
end

#namespace ⇒ Object



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

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



260
261
262
# File 'lib/gapic/presenters/service_presenter.rb', line 260

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

#operations_file_path ⇒ Object



256
257
258
# File 'lib/gapic/presenters/service_presenter.rb', line 256

def operations_file_path
  operations_require + ".rb"
end

#operations_name ⇒ Object



248
249
250
# File 'lib/gapic/presenters/service_presenter.rb', line 248

def operations_name
  "Operations"
end

#operations_name_full ⇒ Object



252
253
254
# File 'lib/gapic/presenters/service_presenter.rb', line 252

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

#operations_require ⇒ Object



264
265
266
# File 'lib/gapic/presenters/service_presenter.rb', line 264

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

#package ⇒ Object



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

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

#paths? ⇒ Boolean

Returns:

  • (Boolean)


200
201
202
# File 'lib/gapic/presenters/service_presenter.rb', line 200

def paths?
  references.any?
end

#paths_file_name ⇒ Object



216
217
218
# File 'lib/gapic/presenters/service_presenter.rb', line 216

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

#paths_file_path ⇒ Object



212
213
214
# File 'lib/gapic/presenters/service_presenter.rb', line 212

def paths_file_path
  paths_require + ".rb"
end

#paths_name ⇒ Object



204
205
206
# File 'lib/gapic/presenters/service_presenter.rb', line 204

def paths_name
  "Paths"
end

#paths_name_full ⇒ Object



208
209
210
# File 'lib/gapic/presenters/service_presenter.rb', line 208

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

#paths_require ⇒ Object



220
221
222
# File 'lib/gapic/presenters/service_presenter.rb', line 220

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

#proto_service_file_name ⇒ Object



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

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

#proto_service_file_path ⇒ Object



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

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

#proto_service_name_full ⇒ Object



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

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

#proto_service_require ⇒ Object



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

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

#proto_service_stub_name_full ⇒ Object



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

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

#proto_services_file_name ⇒ Object



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

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

#proto_services_file_path ⇒ Object



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

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

#proto_services_require ⇒ Object



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

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

#references ⇒ Object



196
197
198
# File 'lib/gapic/presenters/service_presenter.rb', line 196

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

#service_file_name ⇒ Object



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

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

#service_file_path ⇒ Object



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

def service_file_path
  service_require + ".rb"
end

#service_require ⇒ Object



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

def service_require
  ruby_file_path @api, proto_service_name_full
end

#stub_name ⇒ Object



232
233
234
# File 'lib/gapic/presenters/service_presenter.rb', line 232

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

#test_client_file_path ⇒ Object



224
225
226
# File 'lib/gapic/presenters/service_presenter.rb', line 224

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

#test_client_operations_file_path ⇒ Object



228
229
230
# File 'lib/gapic/presenters/service_presenter.rb', line 228

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

#version ⇒ Object



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

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