Class: CFoundry::V2::Base

Inherits:
BaseClient show all
Defined in:
lib/cfoundry/v2/base.rb

Constant Summary

Constants inherited from BaseClient

BaseClient::LOG_LENGTH

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from BaseClient

#request_path, #token_data

Constructor Details

#initialize(target = "https://api.cloudfoundry.com", token = nil) ⇒ Base

Returns a new instance of Base.



13
14
15
16
17
# File 'lib/cfoundry/v2/base.rb', line 13

def initialize(
    target = "https://api.cloudfoundry.com",
    token = nil)
  super
end

Instance Attribute Details

#backtraceObject

Returns the value of attribute backtrace.



11
12
13
# File 'lib/cfoundry/v2/base.rb', line 11

def backtrace
  @backtrace
end

#logObject

Returns the value of attribute log.



11
12
13
# File 'lib/cfoundry/v2/base.rb', line 11

def log
  @log
end

#proxyObject

Returns the value of attribute proxy.



11
12
13
# File 'lib/cfoundry/v2/base.rb', line 11

def proxy
  @proxy
end

#targetObject

Returns the value of attribute target.



11
12
13
# File 'lib/cfoundry/v2/base.rb', line 11

def target
  @target
end

#tokenObject

Returns the value of attribute token.



11
12
13
# File 'lib/cfoundry/v2/base.rb', line 11

def token
  @token
end

#traceObject

Returns the value of attribute trace.



11
12
13
# File 'lib/cfoundry/v2/base.rb', line 11

def trace
  @trace
end

Instance Method Details

#all_pages(paginated) ⇒ Object



155
156
157
158
159
160
161
162
163
164
# File 'lib/cfoundry/v2/base.rb', line 155

def all_pages(paginated)
  payload = paginated[:resources]

  while next_page = paginated[:next_url]
    paginated = request_path(Net::HTTP::Get, next_page, :accept => :json)
    payload += paginated[:resources]
  end

  payload
end

#crashes(guid) ⇒ Object



133
134
135
# File 'lib/cfoundry/v2/base.rb', line 133

def crashes(guid)
  get("v2", "apps", guid, "crashes", :accept => :json)
end

#files(guid, instance, *path) ⇒ Object Also known as: file



99
100
101
# File 'lib/cfoundry/v2/base.rb', line 99

def files(guid, instance, *path)
  get("v2", "apps", guid, "instances", instance, "files", *path)
end

#infoObject

Cloud metadata



37
38
39
# File 'lib/cfoundry/v2/base.rb', line 37

def info
  get("info", :accept => :json)
end

#instances(guid) ⇒ Object



129
130
131
# File 'lib/cfoundry/v2/base.rb', line 129

def instances(guid)
  get("v2", "apps", guid, "instances", :accept => :json)
end

#params_from(args) ⇒ Object



142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/cfoundry/v2/base.rb', line 142

def params_from(args)
  depth, query = args
  depth ||= 1

  params = { :"inline-relations-depth" => depth }

  if query
    params[:q] = "#{query.keys.first}:#{query.values.first}"
  end

  params
end

#resource_match(fingerprints) ⇒ Object



76
77
78
79
# File 'lib/cfoundry/v2/base.rb', line 76

def resource_match(fingerprints)
  put(fingerprints, "v2", "resource_match",
      :content => :json, :accept => :json)
end

#stats(guid) ⇒ Object



137
138
139
# File 'lib/cfoundry/v2/base.rb', line 137

def stats(guid)
  get("v2", "apps", guid, "stats", :accept => :json)
end

#stream_file(guid, instance, *path) ⇒ Object



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/cfoundry/v2/base.rb', line 104

def stream_file(guid, instance, *path)
  redirect =
    request_with_options(
      Net::HTTP::Get,
      ["v2", "apps", guid, "instances", instance, "files", *path],
      :return_response => true)

  if loc = redirect["location"]
    uri = URI.parse(loc + "&tail")

    Net::HTTP.start(uri.host, uri.port) do |http|
      req = Net::HTTP::Get.new(uri.request_uri)
      req["Authorization"] = @token

      http.request(req) do |response|
        response.read_body do |chunk|
          yield chunk
        end
      end
    end
  else
    yield redirect.body
  end
end

#uaaObject

The UAA used for this client.

‘false` if no UAA (legacy)



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/cfoundry/v2/base.rb', line 23

def uaa
  return @uaa unless @uaa.nil?

  endpoint = info[:authorization_endpoint]
  return @uaa = false unless endpoint

  @uaa = CFoundry::UAAClient.new(endpoint)
  @uaa.trace = @trace
  @uaa.token = @token
  @uaa
end

#upload_app(guid, zipfile, resources = []) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/cfoundry/v2/base.rb', line 81

def upload_app(guid, zipfile, resources = [])
  payload = {
    :resources => MultiJson.dump(resources),
    :application =>
      UploadIO.new(
        if zipfile.is_a? File
          zipfile
        elsif zipfile.is_a? String
          File.new(zipfile, "rb")
        end,
        "application/zip")
  }

  put(payload, "v2", "apps", guid, "bits")
rescue EOFError
  retry
end