Class: Gapic::Presenters::MethodRestPresenter

Inherits:
Object
  • Object
show all
Defined in:
lib/gapic/presenters/method_rest_presenter.rb

Overview

A presenter for rpc methods (REST submethods)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(main_method, api) ⇒ MethodRestPresenter

Returns a new instance of MethodRestPresenter.

Parameters:



42
43
44
45
46
47
48
49
50
# File 'lib/gapic/presenters/method_rest_presenter.rb', line 42

def initialize main_method, api
  @main_method = main_method
  @http_bindings = main_method.http_bindings
  @compute_pagination =
    if @main_method.service.special_compute_behavior?
      Gapic::Presenters::Method::ComputePaginationInfo.new main_method.method, api
    end
  @type = "method"
end

Instance Attribute Details

#compute_paginationGapic::Presenters::Method::ComputePaginationInfo (readonly)

Returns Special pagination presenter for Compute.

Returns:



26
27
28
# File 'lib/gapic/presenters/method_rest_presenter.rb', line 26

def compute_pagination
  @compute_pagination
end

#http_bindingsArray<Gapic::Presenters::Method::HttpBindingsPresenter> (readonly)

Presenters for HTTP bindings, used to check whether this method should be generated in REST client

Returns:

  • (Array<Gapic::Presenters::Method::HttpBindingsPresenter>)


33
34
35
# File 'lib/gapic/presenters/method_rest_presenter.rb', line 33

def http_bindings
  @http_bindings
end

#typeString (readonly)

Returns String representation of this presenter type.

Returns:

  • (String)

    String representation of this presenter type.



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

def type
  @type
end

Instance Method Details

#can_generate_rest?Boolean

Whether this method can be generated in REST clients Only methods with http bindings can be generated, and additionally only unary methods are currently supported.

Returns:

  • (Boolean)


166
167
168
169
170
# File 'lib/gapic/presenters/method_rest_presenter.rb', line 166

def can_generate_rest?
  [:normal, :server].include?(@main_method.kind) &&
    http_bindings.first&.verb? &&
    http_bindings.first&.path?
end

#doc_response_typeString

Full class name of the return type of the method (including LRO and Paged cases)

Returns:

  • (String)


103
104
105
106
107
108
109
110
111
# File 'lib/gapic/presenters/method_rest_presenter.rb', line 103

def doc_response_type
  return "::Gapic::Operation" if lro?
  if paged?
    elem_type = compute_pagination&.paged_element_doc_type || @main_method.paged_response_type
    return "::Gapic::Rest::PagedEnumerable<#{elem_type}>"
  end
  return "::Gapic::GenericLRO::Operation" if nonstandard_lro?
  return_type
end

#grpc_full_nameString

Fully qualified proto name of the method (namespace.PascalCase)

Returns:

  • (String)


75
76
77
# File 'lib/gapic/presenters/method_rest_presenter.rb', line 75

def grpc_full_name
  @main_method.grpc.full_name
end

#is_deprecated?Boolean

Whether the method is marked as deprecated.

Returns:

  • (Boolean)


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

def is_deprecated?
  @main_method.is_deprecated?
end

#lro?Boolean

Returns:

  • (Boolean)


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

def lro?
  @main_method.lro?
end

#nameString

Method's name

Returns:

  • (String)


66
67
68
# File 'lib/gapic/presenters/method_rest_presenter.rb', line 66

def name
  @main_method.name
end

#nonstandard_lro?Boolean

Whether this method uses nonstandard LROs

Returns:

  • (Boolean)


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

def nonstandard_lro?
  @main_method.nonstandard_lro?
end

#nonstandard_lro_clientGapic::Presenters::Service::LroClientPresenter?

The presenter for the nonstandard LRO client of the kind this method uses

Returns:

  • (Gapic::Presenters::Service::LroClientPresenter, nil)


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

def nonstandard_lro_client
  return unless nonstandard_lro?
  @main_method.service.rest.nonstandard_lros.find { |model| model.service == @main_method.lro.service_full_name }
end

#paged?Boolean

Whether the REGAPIC method should be rendered as paged

Returns:

  • (Boolean)


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

def paged?
  compute_pagination ? compute_pagination.paged? : @main_method.paged?
end

#paged_response_repeated_field_nameString

Name of the repeated field in paginated responses For Compute the pagination is different from GRPC and cannot be looked up in GRPC method presenter

Returns:

  • (String)


119
120
121
122
123
124
125
# File 'lib/gapic/presenters/method_rest_presenter.rb', line 119

def paged_response_repeated_field_name
  if compute_pagination
    compute_pagination.response_repeated_field_name
  else
    @main_method.paged_response_repeated_field_name
  end
end

#request_typeString

Full class name of the request type

Returns:

  • (String)


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

def request_type
  @main_method.request_type
end

#return_typeString

Full class name of the raw return type of the RPC

Returns:

  • (String)


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

def return_type
  @main_method.return_type
end

#server_streaming?Boolean

Whether this method is a server-streaming method

Returns:

  • (Boolean)


177
178
179
# File 'lib/gapic/presenters/method_rest_presenter.rb', line 177

def server_streaming?
  @main_method.server_streaming?
end

#transcoding_helper_nameString

Name for the GRPC transcoding helper method

Returns:

  • (String)


57
58
59
# File 'lib/gapic/presenters/method_rest_presenter.rb', line 57

def transcoding_helper_name
  "transcode_#{name}_request"
end