From: František Dvořák Date: Wed, 8 Jun 2016 12:17:29 +0000 (+0200) Subject: Simplify the API - HTTP code is the error code. X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=821443f2c671071587def3584c96a9484cdad9de;p=now.git Simplify the API - HTTP code is the error code. --- diff --git a/.rubocop.yml b/.rubocop.yml index 390750c..a238658 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -3,7 +3,7 @@ AllCops: DisplayStyleGuide: true Exclude: # exclude generated code (maybe we'll rewrite it anyway one day) - - models/*.rb + - models/network.rb # Assignment Branch Condition size for initialize is too high # Perceived complexity for deep_merge is too high diff --git a/config.ru b/config.ru index 0531ef3..c7ba665 100644 --- a/config.ru +++ b/config.ru @@ -4,6 +4,7 @@ Dir['./models/*.rb'].each do |file| require file end require './version.rb' +require './lib/error.rb' require './lib/nebula.rb' require './lib/api.rb' diff --git a/lib/error.rb b/lib/error.rb new file mode 100644 index 0000000..219b5ae --- /dev/null +++ b/lib/error.rb @@ -0,0 +1,14 @@ +module Now + + # The main exception class for NOW. + class NowError < StandardError + attr_accessor :code, :message + + def initialize(code, message) + @code = code + @message = message + end + + end + +end diff --git a/lib/nebula.rb b/lib/nebula.rb index 2d6f2cf..284a6a7 100644 --- a/lib/nebula.rb +++ b/lib/nebula.rb @@ -115,7 +115,7 @@ module Now end code = error_one2http(return_code.errno) - raise NowError.new(code: code, message: return_code.message) + raise NowError.new(code, return_code.message) end end diff --git a/models/error.rb b/models/error.rb deleted file mode 100644 index 029c111..0000000 --- a/models/error.rb +++ /dev/null @@ -1,208 +0,0 @@ -=begin -Network Orchestrator API - -OpenAPI spec version: 0.0.0 - -Partially generated by: https://github.com/swagger-api/swagger-codegen.git - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -=end - -require 'date' - -module Now - - class NowError < StandardError - attr_accessor :code - - attr_accessor :message - - - # Attribute mapping from ruby-style variable name to JSON key. - def self.attribute_map - { - :'code' => :'code', - :'message' => :'message' - } - end - - # Attribute type mapping. - def self.swagger_types - { - :'code' => :'Integer', - :'message' => :'String' - } - end - - # Initializes the object - # @param [Hash] attributes Model attributes in the form of hash - def initialize(attributes = {}) - return unless attributes.is_a?(Hash) - - # convert string to symbol for hash key - attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v} - - if attributes.has_key?(:'code') - self.code = attributes[:'code'] - end - - if attributes.has_key?(:'message') - self.message = attributes[:'message'] - end - - end - - # Show invalid properties with the reasons. Usually used together with valid? - # @return Array for valid properies with the reasons - def list_invalid_properties - invalid_properties = Array.new - return invalid_properties - end - - # Check to see if the all the properties in the model are valid - # @return true if the model is valid - def valid? - return false if @code.nil? - return false if @message.nil? - return true - end - - # Checks equality by comparing each attribute. - # @param [Object] Object to be compared - def ==(o) - return true if self.equal?(o) - self.class == o.class && - code == o.code && - message == o.message - end - - # @see the `==` method - # @param [Object] Object to be compared - def eql?(o) - self == o - end - - # Calculates hash code according to all attributes. - # @return [Fixnum] Hash code - def hash - [code, message].hash - end - - # Builds the object from hash - # @param [Hash] attributes Model attributes in the form of hash - # @return [Object] Returns the model itself - def build_from_hash(attributes) - return nil unless attributes.is_a?(Hash) - self.class.swagger_types.each_pair do |key, type| - if type =~ /^Array<(.*)>/i - # check to ensure the input is an array given that the the attribute - # is documented as an array but the input is not - if attributes[self.class.attribute_map[key]].is_a?(Array) - self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } ) - end - elsif !attributes[self.class.attribute_map[key]].nil? - self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) - end # or else data not found in attributes(hash), not an issue as the data can be optional - end - - self - end - - # Deserializes the data based on type - # @param string type Data type - # @param string value Value to be deserialized - # @return [Object] Deserialized data - def _deserialize(type, value) - case type.to_sym - when :DateTime - DateTime.parse(value) - when :Date - Date.parse(value) - when :String - value.to_s - when :Integer - value.to_i - when :Float - value.to_f - when :BOOLEAN - if value.to_s =~ /^(true|t|yes|y|1)$/i - true - else - false - end - when :Object - # generic object (usually a Hash), return directly - value - when /\AArray<(?.+)>\z/ - inner_type = Regexp.last_match[:inner_type] - value.map { |v| _deserialize(inner_type, v) } - when /\AHash<(?.+), (?.+)>\z/ - k_type = Regexp.last_match[:k_type] - v_type = Regexp.last_match[:v_type] - {}.tap do |hash| - value.each do |k, v| - hash[_deserialize(k_type, k)] = _deserialize(v_type, v) - end - end - else # model - temp_model = Now.const_get(type).new - temp_model.build_from_hash(value) - end - end - - # Returns the string representation of the object - # @return [String] String presentation of the object - def to_s - to_hash.to_s - end - - # to_body is an alias to to_hash (backward compatibility) - # @return [Hash] Returns the object in the form of hash - def to_body - to_hash - end - - # Returns the object in the form of hash - # @return [Hash] Returns the object in the form of hash - def to_hash - hash = {} - self.class.attribute_map.each_pair do |attr, param| - value = self.send(attr) - next if value.nil? - hash[param] = _to_hash(value) - end - hash - end - - # Outputs non-array value in the form of hash - # For object, use to_hash. Otherwise, just return the value - # @param [Object] value Any valid value - # @return [Hash] Returns the value in the form of hash - def _to_hash(value) - if value.is_a?(Array) - value.compact.map{ |v| _to_hash(v) } - elsif value.is_a?(Hash) - {}.tap do |hash| - value.each { |k, v| hash[k] = _to_hash(v) } - end - elsif value.respond_to? :to_hash - value.to_hash - else - value - end - end - - end - -end diff --git a/swagger.yaml b/swagger.yaml index 292710b..bb2d3fb 100644 --- a/swagger.yaml +++ b/swagger.yaml @@ -16,7 +16,7 @@ paths: default: description: "KO" schema: - $ref: "#/definitions/Error" + type: "string" /list: get: parameters: [] @@ -30,7 +30,7 @@ paths: default: description: "KO" schema: - $ref: "#/definitions/Error" + type: "string" /network/{id}: get: parameters: @@ -48,7 +48,7 @@ paths: default: description: "KO" schema: - $ref: "#/definitions/Error" + type: "string" definitions: Network: type: "object" @@ -62,14 +62,3 @@ definitions: type: "string" user: type: "string" - Error: - type: "object" - required: - - "code" - - "message" - properties: - code: - type: "integer" - format: "int32" - message: - type: "string"