lib/fieldview/field.rb in fieldview-0.0.1 vs lib/fieldview/field.rb in fieldview-0.0.2
- old
+ new
@@ -1,14 +1,54 @@
module FieldView
class Field < Requestable
+ PATH = "fields"
attr_accessor :id
attr_accessor :name
attr_accessor :boundary_id
def initialize(json_object, auth_token = nil)
self.id = json_object[:id]
self.name = json_object[:name]
self.boundary_id = json_object[:boundaryId]
super(auth_token)
+ end
+
+ def self.retrieve(auth_token, id)
+ response = auth_token.execute_request!(:get, "#{PATH}/#{id}")
+
+ Util.verify_response_with_code("Field retrieve", response, 200)
+
+ return new(response.data, auth_token)
+ end
+
+ def self.list(auth_token, limit: nil, next_token: nil)
+ limit ||= FieldView.default_page_limit
+ response = auth_token.execute_request!(:get, PATH,
+ headers: {
+ FieldView::NEXT_TOKEN_HEADER_KEY => next_token,
+ FieldView::PAGE_LIMIT_HEADER_KEY => limit
+ })
+ next_token = response.http_headers[FieldView::NEXT_TOKEN_HEADER_KEY]
+
+ if (response.http_status == 200 || response.http_status == 206) then
+ # 206: Partial result, will have more data
+ # 200: When all the results were in the list
+ return_data = response.data[:results]
+ elsif (response.http_status == 304)
+ # 304: Nothing modified since last request
+ return_data = []
+ else
+ # This should never happen
+ raise UnexpectedResponseError.new("Fields list expects 200,206, or 304 for codes",
+ fieldview_response: response)
+ end
+
+ return ListObject.new(
+ self,
+ auth_token,
+ return_data.collect { |i| Field.new(i, auth_token) },
+ response.http_status,
+ next_token: next_token,
+ limit: limit)
end
def boundary
@boundary ||= nil
if @boundary.nil?
\ No newline at end of file