likeno 0.0.1.rc

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7ef9a80e1d55bc4f8beff12ce4374c3d82b504a8
4
+ data.tar.gz: ba88b1423ef0bf7d3bb3c500ff3a1719fa553dfc
5
+ SHA512:
6
+ metadata.gz: 8eddd05258a3aa3cb471167e702363acaabf4db0040951678ac1f2a17acd239bdf8834b0eb40327ae09cfa6674c4a0cb133037d1331b4d5cc8780e8452c06e3b
7
+ data.tar.gz: 2ffa02133f413f5286a695dd9c93057ef750a9fa0da9ab57b3a8c7adeef37f2c97da7e63cb145ae3d47bbed480302fb5ef0be45192dd550713f1bd28d3395c99
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ likeno
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.2.3
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.3
4
+ before_install: gem install bundler -v 1.10.6
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in likeno.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # Likeno
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/likeno`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'likeno'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install likeno
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/likeno.
36
+
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "likeno"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,19 @@
1
+ module Likeno
2
+ module Errors
3
+ class RecordInvalid < Standard
4
+ attr_reader :record
5
+
6
+ def initialize(record = nil)
7
+ if record
8
+ @record = record
9
+ errors = @record.likeno_errors.join(', ')
10
+ message = "Record invalid: #{errors}"
11
+ else
12
+ message = 'Record invalid'
13
+ end
14
+
15
+ super(message)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,6 @@
1
+ module Likeno
2
+ module Errors
3
+ class RecordNotFound < RequestError
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,11 @@
1
+ module Likeno
2
+ module Errors
3
+ class RequestError < Standard
4
+ attr_reader :response
5
+
6
+ def initialize(attributes = {})
7
+ @response = attributes[:response]
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ module Likeno
2
+ module Errors
3
+ class Standard < StandardError
4
+ end
5
+ end
6
+ end
data/lib/errors.rb ADDED
@@ -0,0 +1,20 @@
1
+ # This file is part of KalibroClient
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require 'errors/standard'
18
+ require 'errors/request_error'
19
+ require 'errors/record_not_found'
20
+ require 'errors/record_invalid'
@@ -0,0 +1,25 @@
1
+ # This file is part of KalibroClient
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ module AggregationOptions
18
+ #TODO: internationalization
19
+ def all_with_label
20
+ [
21
+ ["Mean","mean"], ["Median", "MEDIAN"], ["Maximum", "max"], ["Minimum", "min"],
22
+ ["Count", "COUNT"], ["Standard Deviation", "STANDARD_DEVIATION"]
23
+ ]
24
+ end
25
+ end
@@ -0,0 +1,64 @@
1
+ # This file is part of KalibroClient
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ module CRUDRequestParameters
18
+ def save_params
19
+ { instance_entity_name.underscore.to_sym => to_hash }
20
+ end
21
+
22
+ def save_action
23
+ ''
24
+ end
25
+
26
+ def save_prefix
27
+ ''
28
+ end
29
+
30
+ def destroy_action
31
+ ':id'
32
+ end
33
+ alias_method :update_action, :destroy_action
34
+
35
+ def destroy_params
36
+ { id: id }
37
+ end
38
+
39
+ def destroy_prefix
40
+ ''
41
+ end
42
+
43
+ def update_params
44
+ { instance_entity_name.underscore.to_sym => to_hash, :id => id }
45
+ end
46
+
47
+ def update_prefix
48
+ ''
49
+ end
50
+
51
+ module ClassMethods
52
+ def exists_action
53
+ ':id/exists'
54
+ end
55
+
56
+ def id_params(id)
57
+ { id: id }
58
+ end
59
+
60
+ def find_action
61
+ ':id'
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,11 @@
1
+ module DateAttributes
2
+ attr_reader :created_at, :updated_at
3
+
4
+ def created_at=(value)
5
+ @created_at = DateTime.parse(value)
6
+ end
7
+
8
+ def updated_at=(value)
9
+ @updated_at = DateTime.parse(value)
10
+ end
11
+ end
@@ -0,0 +1,25 @@
1
+ require 'date'
2
+
3
+ module HashConverters
4
+ def date_time_to_s(date)
5
+ milliseconds = '.' + (date.sec_fraction * 60 * 60 * 24 * 1000).to_s
6
+ date.to_s[0..18] + milliseconds + date.to_s[19..-1]
7
+ end
8
+
9
+ def convert_to_hash(value)
10
+ return value if value.nil?
11
+ return value.collect { |element| convert_to_hash(element) } if value.is_a? Array
12
+ return value.to_hash if value.is_a?(Likeno::Entity)
13
+ return date_time_to_s(value) if value.is_a? DateTime
14
+ return 'INF' if value.is_a?(Float) && value.infinite? == 1
15
+ return '-INF' if value.is_a?(Float) && value.infinite? == -1
16
+ value.to_s
17
+ end
18
+
19
+ def field_to_hash(field)
20
+ hash = {}
21
+ field_value = send(field)
22
+ hash[field] = convert_to_hash(field_value) unless field_value.nil?
23
+ hash
24
+ end
25
+ end
@@ -0,0 +1,14 @@
1
+ module RangeMethods
2
+ def range
3
+ @range ||= Range.new(Float(beginning), Float(self.end), exclude_end: true)
4
+ end
5
+
6
+ def beginning=(value)
7
+ @beginning = (value == "-INF") ? -Float::INFINITY : value
8
+ end
9
+
10
+ def end=(value)
11
+ @end = (value == "INF") ? Float::INFINITY : value
12
+ end
13
+ end
14
+
@@ -0,0 +1,160 @@
1
+ require 'active_support/inflector'
2
+ require 'faraday_middleware'
3
+ require 'errors'
4
+ require 'helpers/hash_converters'
5
+ require 'helpers/crud_request_parameters'
6
+ require 'likeno/request_methods'
7
+
8
+ module Likeno
9
+ class Entity
10
+ attr_accessor :likeno_errors, :persisted
11
+
12
+ def initialize(attributes = {}, persisted = false)
13
+ attributes.each { |field, value| send("#{field}=", value) if self.class.valid?(field) }
14
+ @likeno_errors = []
15
+ @persisted = persisted
16
+ end
17
+
18
+ def to_hash(options = {})
19
+ hash = {}
20
+ excepts = options[:except].nil? ? [] : options[:except]
21
+ excepts << 'likeno_errors'
22
+ excepts << 'persisted'
23
+ fields.each { |field| field_to_hash(field).merge!(hash) unless excepts.include? field }
24
+ hash
25
+ end
26
+
27
+ extend Likeno::RequestMethods
28
+
29
+ def self.to_object(value)
30
+ value.is_a?(Hash) ? new(value, true) : value
31
+ end
32
+
33
+ def self.to_objects_array(value)
34
+ array = value.is_a?(Array) ? value : [value]
35
+ array.map { |element| to_object element }
36
+ end
37
+
38
+ def save
39
+ if persisted?
40
+ update
41
+ else
42
+ without_request_error? do
43
+ response = self.class.request(save_action, save_params, :post, save_prefix)
44
+
45
+ self.id = response[instance_entity_name]["id"]
46
+ self.created_at = response[instance_entity_name]["created_at"] unless response[instance_entity_name]["created_at"].nil?
47
+ self.updated_at = response[instance_entity_name]["updated_at"] unless response[instance_entity_name]["updated_at"].nil?
48
+ @persisted = true
49
+ end
50
+ end
51
+ end
52
+
53
+ def save!
54
+ return true if save
55
+ raise Likeno::Errors::RecordInvalid.new(self)
56
+ end
57
+
58
+ def self.create(attributes = {})
59
+ new_model = new attributes
60
+ new_model.save
61
+ new_model
62
+ end
63
+
64
+ def update(attributes = {})
65
+ attributes.each { |field, value| send("#{field}=", value) if self.class.valid?(field) }
66
+ without_request_error? do
67
+ self.class.request(update_action, update_params, :put, update_prefix)
68
+ end
69
+ end
70
+
71
+ def ==(other)
72
+ return false unless self.class == other.class
73
+ variable_names.each do |name|
74
+ next if %w(created_at updated_at persisted).include? name
75
+ return false unless send("#{name}") == other.send("#{name}")
76
+ end
77
+ true
78
+ end
79
+
80
+ def self.exists?(id)
81
+ request(exists_action, id_params(id), :get)['exists']
82
+ end
83
+
84
+ def self.find(id)
85
+ response = request(find_action, id_params(id), :get)
86
+ new(response[entity_name], true)
87
+ end
88
+
89
+ def destroy
90
+ without_request_error? do
91
+ response = self.class.request(destroy_action, destroy_params, :delete, destroy_prefix)
92
+ @persisted = false
93
+ end
94
+ end
95
+
96
+ def self.create_objects_array_from_hash (response)
97
+ create_array_from_hash(response[entity_name.pluralize]).map { |hash| new(hash, true) }
98
+ end
99
+
100
+ def self.create_array_from_hash (response)
101
+ response = [] if response.nil?
102
+ response = [response] if response.is_a?(Hash)
103
+ response
104
+ end
105
+
106
+ alias_method :persisted?, :persisted
107
+
108
+ def instance_entity_name
109
+ self.class.entity_name
110
+ end
111
+
112
+ protected
113
+
114
+ def instance_variable_names
115
+ instance_variables.map { |var| var.to_s }
116
+ end
117
+
118
+ def fields
119
+ instance_variable_names.each.collect { |variable| variable.to_s.sub(/@/, '') }
120
+ end
121
+
122
+ def variable_names
123
+ instance_variable_names.each.collect { |variable| variable.to_s.sub(/@/, '') }
124
+ end
125
+
126
+ def self.valid?(field)
127
+ field.to_s[0] != '@' && (field =~ /attributes!/).nil? && (field.to_s =~ /errors/).nil?
128
+ end
129
+
130
+ include CRUDRequestParameters
131
+ extend CRUDRequestParameters::ClassMethods
132
+
133
+ def add_error(exception)
134
+ @likeno_errors << exception
135
+ end
136
+
137
+ def without_request_error?(&block)
138
+ block.call
139
+ true
140
+ rescue Likeno::Errors::RecordNotFound => error
141
+ raise error
142
+ rescue Likeno::Errors::RequestError => error
143
+ raise error if error.response.status.between?(500, 599)
144
+
145
+ response_errors = error.response.body['errors']
146
+ if response_errors.is_a?(Array)
147
+ response_errors.each { |error_msg| add_error(error_msg) }
148
+ elsif !response_errors.nil?
149
+ add_error response_errors
150
+ else
151
+ add_error error
152
+ end
153
+
154
+ false
155
+ end
156
+
157
+ include HashConverters
158
+ end
159
+ end
160
+
@@ -0,0 +1,53 @@
1
+ module Likeno
2
+ module RequestMethods
3
+ def request(action, params = {}, method = :post, prefix = '')
4
+ response = client.send(method) do |request|
5
+ url = "/#{endpoint}/#{action}".gsub(':id', params[:id].to_s)
6
+ url = "/#{prefix}#{url}" unless prefix.empty?
7
+ request.url url
8
+ request.body = params unless method == :get || params.empty?
9
+ request.options.timeout = 300
10
+ request.options.open_timeout = 300
11
+ end
12
+
13
+ if response.success?
14
+ response.body
15
+ elsif response.status == 404
16
+ raise Likeno::Errors::RecordNotFound.new(response: response)
17
+ else
18
+ raise Likeno::Errors::RequestError.new(response: response)
19
+ end
20
+ end
21
+
22
+ def address
23
+ raise NotImplementedError
24
+ end
25
+
26
+ # TODO: probably the connection could be a class static variable.
27
+ def client
28
+ Faraday.new(url: address) do |conn|
29
+ conn.request :json
30
+ conn.response :json, content_type: /\bjson$/
31
+ conn.adapter Faraday.default_adapter # make requests with Net::HTTP
32
+ end
33
+ end
34
+
35
+ def endpoint
36
+ entity_name.pluralize
37
+ end
38
+
39
+ def module_name
40
+ raise NotImplementedError
41
+ end
42
+
43
+ def entity_name
44
+ # This loop is a generic way to make this work even when the children class has a different name
45
+ entity_class = self
46
+ until entity_class.name.include?("#{module_name}::")
47
+ entity_class = entity_class.superclass
48
+ end
49
+
50
+ entity_class.name.split('::').last.underscore.downcase
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,3 @@
1
+ module Likeno
2
+ VERSION = '0.0.1.rc'
3
+ end
data/lib/likeno.rb ADDED
@@ -0,0 +1,29 @@
1
+ require 'yaml'
2
+ require 'logger'
3
+ require 'likeno/entity'
4
+
5
+ module Likeno
6
+ @config = {}
7
+
8
+ # Configure through hash
9
+ def self.configure(opts = {})
10
+ @config = Hash[opts.map { |name, address| [name.to_sym, address] }]
11
+ end
12
+
13
+ # Configure through yaml file
14
+ def self.configure_with(path_to_yaml_file)
15
+ begin
16
+ @config = Psych.load_file path_to_yaml_file
17
+ rescue Errno::ENOENT
18
+ raise Errno::ENOENT, "YAML configuration file couldn't be found."
19
+ rescue Psych::Exception
20
+ raise Psych::Exception, 'YAML configuration file contains invalid syntax.'
21
+ end
22
+
23
+ configure(@config)
24
+ end
25
+
26
+ def self.config
27
+ @config
28
+ end
29
+ end
data/likeno.gemspec ADDED
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'likeno/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'likeno'
8
+ spec.version = Likeno::VERSION
9
+ spec.authors = ['Heitor Reis', 'Diego de Araújo Martinez Camarinha', 'Rafael Reggiani Manzo']
10
+ spec.email = ['mezurometrics@gmail.com']
11
+
12
+ spec.summary = 'Symbiotic connection between organisms'
13
+ spec.description = 'Connects services through a RESTful API'
14
+ spec.homepage = 'https://github.com/mezuro/likeno'
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = 'exe'
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.10'
22
+ spec.add_development_dependency 'rake', '~> 10.0'
23
+ spec.add_development_dependency 'rspec'
24
+ spec.add_development_dependency 'mocha'
25
+ spec.add_development_dependency 'factory_girl', '~> 4.5.0'
26
+ spec.add_development_dependency 'simplecov'
27
+
28
+ spec.add_dependency 'faraday_middleware'
29
+ spec.add_dependency 'activesupport', '>= 2.2.1'
30
+ end
metadata ADDED
@@ -0,0 +1,182 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: likeno
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.rc
5
+ platform: ruby
6
+ authors:
7
+ - Heitor Reis
8
+ - Diego de Araújo Martinez Camarinha
9
+ - Rafael Reggiani Manzo
10
+ autorequire:
11
+ bindir: exe
12
+ cert_chain: []
13
+ date: 2016-01-18 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.10'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.10'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rake
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '10.0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '10.0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rspec
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: mocha
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: factory_girl
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: 4.5.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: 4.5.0
85
+ - !ruby/object:Gem::Dependency
86
+ name: simplecov
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: faraday_middleware
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :runtime
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: activesupport
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: 2.2.1
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 2.2.1
127
+ description: Connects services through a RESTful API
128
+ email:
129
+ - mezurometrics@gmail.com
130
+ executables: []
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - ".gitignore"
135
+ - ".rspec"
136
+ - ".ruby-gemset"
137
+ - ".ruby-version"
138
+ - ".travis.yml"
139
+ - Gemfile
140
+ - README.md
141
+ - Rakefile
142
+ - bin/console
143
+ - bin/setup
144
+ - lib/errors.rb
145
+ - lib/errors/record_invalid.rb
146
+ - lib/errors/record_not_found.rb
147
+ - lib/errors/request_error.rb
148
+ - lib/errors/standard.rb
149
+ - lib/helpers/aggregation_options.rb
150
+ - lib/helpers/crud_request_parameters.rb
151
+ - lib/helpers/date_attributes.rb
152
+ - lib/helpers/hash_converters.rb
153
+ - lib/helpers/range_methods.rb
154
+ - lib/likeno.rb
155
+ - lib/likeno/entity.rb
156
+ - lib/likeno/request_methods.rb
157
+ - lib/likeno/version.rb
158
+ - likeno.gemspec
159
+ homepage: https://github.com/mezuro/likeno
160
+ licenses: []
161
+ metadata: {}
162
+ post_install_message:
163
+ rdoc_options: []
164
+ require_paths:
165
+ - lib
166
+ required_ruby_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ required_rubygems_version: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">"
174
+ - !ruby/object:Gem::Version
175
+ version: 1.3.1
176
+ requirements: []
177
+ rubyforge_project:
178
+ rubygems_version: 2.4.8
179
+ signing_key:
180
+ specification_version: 4
181
+ summary: Symbiotic connection between organisms
182
+ test_files: []