Simplify the API - HTTP code is the error code.
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Wed, 8 Jun 2016 12:17:29 +0000 (14:17 +0200)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Wed, 8 Jun 2016 12:17:29 +0000 (14:17 +0200)
.rubocop.yml
config.ru
lib/error.rb [new file with mode: 0644]
lib/nebula.rb
models/error.rb [deleted file]
swagger.yaml

index 390750c..a238658 100644 (file)
@@ -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
index 0531ef3..c7ba665 100644 (file)
--- 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 (file)
index 0000000..219b5ae
--- /dev/null
@@ -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
index 2d6f2cf..284a6a7 100644 (file)
@@ -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 (file)
index 029c111..0000000
+++ /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<(?<inner_type>.+)>\z/
-        inner_type = Regexp.last_match[:inner_type]
-        value.map { |v| _deserialize(inner_type, v) }
-      when /\AHash<(?<k_type>.+), (?<v_type>.+)>\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
index 292710b..bb2d3fb 100644 (file)
@@ -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"