Module: Etna::JsonSerializableStruct

Included in:
Clients::Janus::AddProjectRequest, Clients::Janus::AddUserRequest, Clients::Janus::GetProjectRequest, Clients::Janus::GetStatsRequest, Clients::Janus::UpdatePermissionRequest, Clients::Janus::UpdateProjectRequest, Clients::Magma::AddAttributeAction, Clients::Magma::AddLinkAction, Clients::Magma::AddLinkDefinition, Clients::Magma::AddModelAction, Clients::Magma::AddProjectAction, Clients::Magma::AttributeValidation, Clients::Magma::QueryRequest, Clients::Magma::RenameAttributeAction, Clients::Magma::RetrievalRequest, Clients::Magma::SetDateShiftRootAction, Clients::Magma::SetModelTemplateAction, Clients::Magma::UpdateAttributeAction, Clients::Magma::UpdateModelRequest, Clients::Magma::UpdateRequest, Clients::Metis::AuthorizeDownloadRequest, Clients::Metis::AuthorizeUploadRequest, Clients::Metis::CopyFilesRequest, Clients::Metis::CopyRevision, Clients::Metis::CreateFolderRequest, Clients::Metis::DeleteFileRequest, Clients::Metis::DeleteFolderRequest, Clients::Metis::FindParam, Clients::Metis::FindRequest, Clients::Metis::GetByteCountByProjectRequest, Clients::Metis::GetFileCountByProjectRequest, Clients::Metis::ListFolderByIdRequest, Clients::Metis::ListFolderRequest, Clients::Metis::ListFoldersRequest, Clients::Metis::RenameFileRequest, Clients::Metis::RenameFolderRequest, Clients::Metis::TailBucketRequest, Clients::Metis::TouchFileRequest, Clients::Metis::TouchFolderRequest, Clients::Metis::UploadStartRequest, Clients::Polyphemus::RedcapJobRequest
Defined in:
lib/etna/json_serializable_struct.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(cls) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/etna/json_serializable_struct.rb', line 3

def self.included(cls)
  cls.instance_eval do
    def self.as_json(v)
      if v.respond_to? :as_json
        return v.as_json
      end

      if v.is_a? Hash
        return v.map { |k, v| [k, as_json(v)] }.to_h
      end

      if v.class.include? Enumerable
        return v.map { |v| as_json(v) }
      end

      v
    end
  end
end

Instance Method Details

#as_json(keep_nils: false) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/etna/json_serializable_struct.rb', line 23

def as_json(keep_nils: false)
  inner_json = members.map do |k|
    v = self.class.as_json(send(k))
    [k, v]
  end.to_h

  return inner_json if keep_nils
  inner_json.delete_if { |k, v| v.nil? }
end

#to_jsonObject



33
34
35
# File 'lib/etna/json_serializable_struct.rb', line 33

def to_json
  as_json.to_json
end