Module: Useless::Doc::Serialization::Dump

Defined in:
lib/useless/doc/serialization/dump.rb

Class Method Summary collapse

Class Method Details

.api(api) ⇒ String

Converts Core::API instance to a JSON representation.

Parameters:

  • api (Core::API)

    the API to be converted to JSON.

Returns:

  • (String)

    a JSON representation of the specified API.



44
45
46
47
48
49
50
51
52
53
# File 'lib/useless/doc/serialization/dump.rb', line 44

def self.api(api)
  if api
    hash_to_json \
      'name' => api.name,
      'url' => api.url,
      'description' => api.description,
      'timestamp' => api.timestamp ? api.timestamp.iso8601 : nil,
      'resources' => api.resources.map { |resource| resource(resource) }
  end
end

.body(body) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



126
127
128
129
130
131
132
# File 'lib/useless/doc/serialization/dump.rb', line 126

def self.body(body)
  if body
    hash_to_json \
      'content_type' => body.content_type,
      'attributes' => body.attributes.map { |attribute| body_attribute(attribute) }
  end
end

.body_attribute(attribute) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



135
136
137
138
139
140
141
142
143
144
# File 'lib/useless/doc/serialization/dump.rb', line 135

def self.body_attribute(attribute)
  if attribute
    hash_to_json \
      'key' => attribute.key,
      'type' => attribute.type,
      'required' => attribute.required,
      'default' => attribute.default,
      'description' => attribute.description
  end
end

.domain(domain) ⇒ String

Converts Core::Domain instance to a JSON representation.

Parameters:

  • domain (Core::Domain)

    the domain to be converted to JSON.

Returns:

  • (String)

    a JSON representation of the specified domain.



27
28
29
30
31
32
33
34
35
36
# File 'lib/useless/doc/serialization/dump.rb', line 27

def self.domain(domain)
  if domain
    hash_to_json \
      'name' => domain.name,
      'url' => domain.url,
      'description' => domain.description,
      'timestamp' => domain.timestamp ? domain.timestamp.iso8601 : nil,
      'apis' => domain.apis.map { |api| api(api) }
  end
end

.hash_to_json(hash) ⇒ String

Converts a hash to a JSON representation.

Parameters:

  • hash (Hash, String)

    the hash to be converted.

Returns:

  • (String)

    a JSON representation corresponding to the specified hash.

Raises:

  • (ArgumentError)

    if json is not a Hash, String or IO.



17
18
19
# File 'lib/useless/doc/serialization/dump.rb', line 17

def self.hash_to_json(hash)
  hash.is_a?(String) ? hash : Oj.dump(hash)
end

.header(header) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



108
109
110
111
112
113
114
# File 'lib/useless/doc/serialization/dump.rb', line 108

def self.header(header)
  if header
    hash_to_json \
      'key' => header.key,
      'description' => header.description
  end
end

.request(request) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/useless/doc/serialization/dump.rb', line 71

def self.request(request)
  if request
    hash_to_json \
      'method' => request.method,
      'description' => request.description,
      'authentication_required' => request.authentication_required,
      'parameters' => request.parameters.map { |parameter| request_parameter(parameter) },
      'headers' => request.headers.map { |header| header(header) },
      'body' => body(request.body),
      'responses' => request.responses.map { |response| response(response) }
  end
end

.request_parameter(parameter) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



96
97
98
99
100
101
102
103
104
105
# File 'lib/useless/doc/serialization/dump.rb', line 96

def self.request_parameter(parameter)
  if parameter
    hash_to_json \
      'type' => parameter.type,
      'key' => parameter.key,
      'required' => parameter.required,
      'default' => parameter.default,
      'description' => parameter.description
  end
end

.resource(resource) ⇒ String

Converts a Core::Resource instance to a JSON representation.

Parameters:

Returns:

  • (String)

    a JSON representation of the specified resource.



61
62
63
64
65
66
67
68
# File 'lib/useless/doc/serialization/dump.rb', line 61

def self.resource(resource)
  if resource
    hash_to_json \
      'path' => resource.path,
      'description' => resource.description,
      'requests' => resource.requests.map { |request| request(request) }
  end
end

.response(response) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



85
86
87
88
89
90
91
92
93
# File 'lib/useless/doc/serialization/dump.rb', line 85

def self.response(response)
  if response
    hash_to_json \
      'code' => response.code,
      'description' => response.description,
      'headers' => response.headers.map { |header| header(header) },
      'body' => body(response.body)
  end
end

.response_status(status) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



117
118
119
120
121
122
123
# File 'lib/useless/doc/serialization/dump.rb', line 117

def self.response_status(status)
  if status
    hash_to_json \
      'code' => status.code,
      'description' => status.description
  end
end