easy-api 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 268ee94d1fdf0ef384698634c0c05dd0a5ccbee7
4
- data.tar.gz: 5e141d6be92a8057deb78e9b16a6e92e179caeff
3
+ metadata.gz: 6225c8e362543f69674de074583414734e53bab0
4
+ data.tar.gz: 5b0c791d62a1df723f0768dd629e6881bcc3fb3d
5
5
  SHA512:
6
- metadata.gz: 58ad4b566af8b7b38729cf4b02ff383a4d605bae4bf7d36acf1b3f6d10195fb70e0e8db78064f87a5425663f1a75ed875cac7c2f97f021c2ea4f3a40af8e5779
7
- data.tar.gz: 510983ca09db8d08e30086d8105dce0b28e0af56bb939c97d37a65138c8975a4ee44b99766529158d38911b063a56f21530e4a042987bb4fb951dc38bd51c561
6
+ metadata.gz: 99b7b389382b946f208ddf5f9a19f096c0f4be6a8fc6cc8e8278a0a8f2222de803813d6cd98be0e2b8aaff78e9258287fe92441cf485617b09207592ee2432a0
7
+ data.tar.gz: f50f43b54d728207ef406c5cb588c90e8f0d701974862ff17e793ffa570e57d1ca135e4ed559004b70b04fff5979e26ff9949108991e807fb7a914d52a885649
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.2
6
+ - jruby-19mode # JRuby in 1.9 mode
data/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # EasyAPI 0.2.0 (July 28, 2014) #
2
+
3
+ * Add support for new block-style syntax
4
+ * Add support for JRuby
5
+
6
+ # ActiveAttr 0.1.3 (April 16, 2014) #
7
+
8
+ * Return correct content_type for jsonp requests
9
+
10
+ # ActiveAttr 0.1.2 (March 11, 2013) #
11
+
12
+ * Genericize error messages
13
+ * Add support for Ruby 1.8.7
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Easy::Api
2
2
 
3
+ [<img src="https://travis-ci.org/AbleTech/easy-api.png" />](https://travis-ci.org/AbleTech/easy-api)
4
+
3
5
  A repository of common, reusable API code. Its purpose is to make all of Abletech's APIs respond in a consistent manner.
4
6
 
5
7
  ## Installation
@@ -31,16 +33,59 @@ To initialise an error, pass in the type you want, e.g.
31
33
  If you want to override the default error message, pass in a custom message, e.g.
32
34
 
33
35
  Easy::Api::Error.new(:invalid, @user.errors.full_messages.join(', '))
34
-
36
+
35
37
  Easy::Api::Error objects have a code (e.g. 404) and a message (e.g. 'Resource not found')
36
38
 
39
+ ### Using Easy::Api
40
+
41
+ Add the following line to all Api Controllers:
42
+
43
+ include Easy::Api
44
+
45
+ Then in your Api actions, do your logic inside a block:
46
+
47
+ easy_api do |api|
48
+ api.parcel = Parcel.first
49
+ api.status_code = 200
50
+ api.success = true
51
+ api.render_result(format: params[:format])
52
+ end
53
+
54
+ If the request is a success, you must set
55
+
56
+ api.status_code = 200
57
+ api.success = true
58
+
59
+ and you can also set any other values you want to send back, e.g.
60
+
61
+ api.parcel = Parcel.first
62
+
63
+ If the request is unsuccessful, you must set the status_code, e.g.
64
+
65
+ api.status_code = 401
66
+
67
+ and you also need to set error to be an instance of Easy::Api::Error, e.g.
68
+
69
+ api.error = Easy::Api::Error.new(:unauthorized)
70
+
71
+ Then render the result
72
+
73
+ api.render_result(format: params[:format])
74
+
75
+ If your API supports callbacks these can also be passed
76
+
77
+ api.render_result(format: params[:format], callback: params[:callback])
78
+
37
79
  ### Using Easy::Api::ControllerMethods
80
+
81
+ **Depricated**
82
+
38
83
  Add the following line to all Api Controllers:
39
-
84
+
40
85
  include Easy::Api::ControllerMethods
41
86
 
42
- then in your Api actions, add values to the @result (Easy::Api::Result) object.
43
- If the request is a success, you must set
87
+ then in your Api actions, add values to the @result (Easy::Api::Result) object.
88
+ If the request is a success, you must set
44
89
 
45
90
  @result.status_code = 200
46
91
  @result.success = true
@@ -57,6 +102,10 @@ and you also need to set error to be an instance of Easy::Api::Error, e.g.
57
102
 
58
103
  @result.error = Easy::Api::Error.new(:unauthorized)
59
104
 
105
+ Then render the result
106
+
107
+ render_format
108
+
60
109
  ## Contributing
61
110
 
62
111
  1. Fork it
data/easy-api.gemspec CHANGED
@@ -1,25 +1,26 @@
1
1
  # -*- encoding: utf-8 -*-
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'easy/api/version'
2
+ require File.expand_path('../lib/easy/api/version', __FILE__)
5
3
 
6
4
  Gem::Specification.new do |gem|
7
5
  gem.name = "easy-api"
8
6
  gem.version = Easy::Api::VERSION
9
- gem.authors = ["Shevaun Coker"]
10
- gem.email = ["shevaun.coker@abletech.co.nz"]
11
- gem.description = %q{A repository of common, reusable API code}
12
- gem.summary = %q{Provides consistent responses for Abletech APIs}
13
- gem.homepage = ""
7
+ gem.authors = ["Shevaun Coker", "Joseph Leniston", "Nigel Ramsay"]
8
+ gem.email = ["shevaun.coker@abletech.co.nz", "joseph.leniston@abletech.co.nz", "nigel.ramsay@abletech.co.nz"]
9
+ gem.description = %q{Enables consistent responses for API calls}
10
+ gem.summary = %q{Facilitates standard success and error behaviour in API responses}
11
+ gem.homepage = "https://github.com/AbleTech/easy-api"
14
12
 
15
13
  gem.files = `git ls-files`.split($/)
16
14
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
15
  gem.test_files = gem.files.grep(%r{^(spec|features)/})
18
16
  gem.require_paths = ["lib"]
19
17
 
20
- gem.add_runtime_dependency 'rails', '>= 3.0.0'
21
-
18
+ gem.add_development_dependency 'activemodel', '>= 3.0.0'
19
+ gem.add_development_dependency 'actionpack', '>= 3.0.0'
20
+ gem.add_development_dependency 'activesupport', '>= 3.0.0'
21
+ gem.add_development_dependency 'multi_json', '~> 1.0'
22
22
  gem.add_development_dependency 'bundler'
23
23
  gem.add_development_dependency 'pry'
24
- gem.add_development_dependency 'rspec', '~> 2.0'
24
+ gem.add_development_dependency 'rspec', '>= 2.14'
25
+ gem.add_development_dependency 'rspec-rails'
25
26
  end
@@ -0,0 +1,42 @@
1
+ # Include this module in all API controllers to get consistent responses
2
+ module Easy::Api::BlockWrapper
3
+ module InstanceMethods
4
+
5
+ # Initialises a new Easy::Api::Wrapper object takes a block of code to be rendered using the formatter
6
+ def easy_api &block
7
+ wrapper ||= Wrapper.new(self)
8
+ yield(wrapper)
9
+ end
10
+
11
+ end
12
+
13
+ def self.included(base)
14
+ base.send :include, InstanceMethods
15
+ end
16
+
17
+ # A class to encapulate the API code so it can be called from the block.
18
+ class Wrapper
19
+
20
+ def initialize(controller)
21
+ @controller = controller
22
+ @result ||= Easy::Api::Result.new
23
+ end
24
+
25
+ # use the controller to render the response
26
+ def render_result(render_params)
27
+ format = (render_params[:format] || 'json').try(:to_sym)
28
+ if render_params[:callback].blank?
29
+ @controller.render(format => @result, :status => @result.status_code)
30
+ else
31
+ @controller.render(format => @result, :status => @result.status_code, :callback => render_params[:callback], :content_type => 'application/javascript')
32
+ end
33
+ end
34
+
35
+ # Delegate other method calls to the result object
36
+ def method_missing(name, *args, &block)
37
+ @result.send(name, *args, &block)
38
+ end
39
+
40
+ end
41
+
42
+ end
@@ -1,5 +1,5 @@
1
1
  module Easy
2
2
  module Api
3
- VERSION = "0.1.3"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
data/lib/easy/api.rb CHANGED
@@ -1,4 +1,11 @@
1
1
  require 'easy/api/version'
2
2
  require 'easy/api/controller_methods'
3
+ require 'easy/api/block_wrapper'
3
4
  require 'easy/api/result'
4
5
  require 'easy/api/error'
6
+
7
+ module Easy::Api
8
+ def self.included(base)
9
+ base.send :include, Easy::Api::BlockWrapper
10
+ end
11
+ end
data/lib/easy-api.rb ADDED
@@ -0,0 +1,5 @@
1
+ require File.dirname(__FILE__) + '/easy/api/version'
2
+ require File.dirname(__FILE__) + '/easy/api/controller_methods'
3
+ require File.dirname(__FILE__) + '/easy/api/block_wrapper'
4
+ require File.dirname(__FILE__) + '/easy/api/result'
5
+ require File.dirname(__FILE__) + '/easy/api/error'
@@ -0,0 +1,22 @@
1
+ require 'active_support/all'
2
+ require 'action_controller'
3
+ require 'action_dispatch'
4
+
5
+ module Rails
6
+ class App
7
+ def env_config; {} end
8
+ def routes
9
+ return @routes if defined?(@routes)
10
+ @routes = ActionDispatch::Routing::RouteSet.new
11
+ @routes.draw do
12
+ resources :customers
13
+ resources :users
14
+ end
15
+ @routes
16
+ end
17
+ end
18
+
19
+ def self.application
20
+ @app ||= App.new
21
+ end
22
+ end
@@ -0,0 +1,43 @@
1
+ class TestController < ActionController::Base
2
+ include Rails.application.routes.url_helpers
3
+ end
4
+
5
+ class UsersController < TestController
6
+ include Easy::Api::ControllerMethods
7
+
8
+ def index
9
+ @result.users = [User.new("bob", 25), User.new('sally',40)]
10
+ @result.success = true
11
+ @result.status_code = 200
12
+ render_format
13
+ end
14
+
15
+ def show
16
+ @result.user = User.new("bob", 25)
17
+ @result.success = true
18
+ @result.status_code = 200
19
+ render_format
20
+ end
21
+ end
22
+
23
+ class CustomersController < TestController
24
+ include Easy::Api
25
+
26
+ def index
27
+ easy_api do |api|
28
+ api.customers = [Customer.new("fred", 19), Customer.new('jackie',21)]
29
+ api.success = true
30
+ api.status_code = 200
31
+ api.render_result(format: params[:format], callback: params[:callback])
32
+ end
33
+ end
34
+
35
+ def show
36
+ easy_api do |api|
37
+ api.customer = Customer.new("fred", 21)
38
+ api.success = true
39
+ api.status_code = 200
40
+ api.render_result(format: params[:format], callback: params[:callback])
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,38 @@
1
+ class User
2
+ attr_reader :age, :name
3
+
4
+ def initialize(name, age)
5
+ @name = name
6
+ @age = age
7
+ end
8
+
9
+ def to_xml(options = {})
10
+ require 'builder'
11
+ options[:indent] ||= 2
12
+ xml = options[:builder] ||= ::Builder::XmlMarkup.new(indent: options[:indent])
13
+ xml.instruct! unless options[:skip_instruct]
14
+ xml.user do
15
+ xml.tag!(:name, name)
16
+ xml.tag!(:age, age)
17
+ end
18
+ end
19
+ end
20
+
21
+ class Customer
22
+ attr_reader :age, :name
23
+
24
+ def initialize(name, age)
25
+ @name = name
26
+ @age = age
27
+ end
28
+
29
+ def to_xml(options = {})
30
+ require 'builder'
31
+ xml = options[:builder] ||= ::Builder::XmlMarkup.new(indent: options[:indent])
32
+ xml.instruct! unless options[:skip_instruct]
33
+ xml.customer do
34
+ xml.tag!(:name, name)
35
+ xml.tag!(:age, age)
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+ require 'fixtures/application'
3
+ require 'fixtures/controllers'
4
+ require 'fixtures/models'
5
+ require 'rspec/rails'
6
+ require 'multi_json'
7
+
8
+ RSpec.describe CustomersController, :type => :controller do
9
+
10
+ context 'GET #index' do
11
+
12
+ it "gets the index in json format" do
13
+ get :index, :format => 'json'
14
+
15
+ parsed_response = MultiJson.load(response.body)
16
+ expect(parsed_response['customers'].size).to eq(2)
17
+
18
+ customer_names = parsed_response['customers'].collect{|c| c['name']}
19
+ expect(customer_names).to include('fred')
20
+ expect(customer_names).to include('jackie')
21
+
22
+ customer_ages = parsed_response['customers'].collect{|c| c['age']}
23
+ expect(customer_ages).to include(19)
24
+ expect(customer_ages).to include(21)
25
+
26
+ expect(parsed_response['success']).to eq(true)
27
+ end
28
+
29
+ it "gets the index in xml format" do
30
+ get :index, :format => 'xml'
31
+ expect(response.body).to eql("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n <customers type=\"array\">\n <customer>\n <name>fred</name>\n <age>19</age>\n </customer>\n <customer>\n <name>jackie</name>\n <age>21</age>\n </customer>\n </customers>\n <success type=\"boolean\">true</success>\n</hash>\n")
32
+ end
33
+
34
+ end
35
+
36
+ context 'GET #show' do
37
+
38
+ it "gets show in json format" do
39
+ get :show, :format => 'json', id: 1
40
+
41
+ parsed_response = MultiJson.load(response.body)
42
+ expect(parsed_response['customer']).to_not be(nil)
43
+ expect(parsed_response['customer']['name']).to eq('fred')
44
+ expect(parsed_response['customer']['age']).to eq(21)
45
+ expect(parsed_response['success']).to eq(true)
46
+ end
47
+
48
+ it "gets show in xml format" do
49
+ get :show, :format => 'xml', id: 1
50
+ expect(response.body).to eql("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n <customer>\n <name>fred</name>\n <age>21</age>\n </customer>\n <success type=\"boolean\">true</success>\n</hash>\n")
51
+ end
52
+
53
+ end
54
+
55
+ end
@@ -6,20 +6,31 @@ describe Easy::Api::Error do
6
6
 
7
7
  context "when a message is passed in" do
8
8
  let(:message) { "Hello, world!" }
9
- its(:message) { should == message }
9
+
10
+ it "has sets the message" do
11
+ expect(subject.message).to eql message
12
+ end
10
13
  end
11
14
 
12
15
  context "when no message is passed in" do
13
16
  let(:message) { nil }
14
- its(:message) { should == Easy::Api::Error.messages[:invalid] }
17
+
18
+ it "the message is invalid" do
19
+ expect(subject.message).to eql Easy::Api::Error.messages[:invalid]
20
+ end
15
21
  end
16
22
  end
17
23
 
18
24
  describe "#as_json" do
19
- subject { Easy::Api::Error.new(:unexpected, msg).as_json }
20
- let(:msg) { 'uh, oh' }
25
+ subject { Easy::Api::Error.new(:unexpected, message).as_json }
26
+ let(:message) { 'uh, oh' }
21
27
 
22
- its([:code]) { should == Easy::Api::Error.codes[:unexpected] }
23
- its([:message]) { should == msg }
28
+ it "the code is returned" do
29
+ expect(subject[:code]).to eql Easy::Api::Error.codes[:unexpected]
30
+ end
31
+
32
+ it "the message is returned" do
33
+ expect(subject[:message]).to eql message
34
+ end
24
35
  end
25
36
  end
@@ -7,36 +7,68 @@ describe Easy::Api::Result do
7
7
 
8
8
  context "when result is unsuccessful" do
9
9
  let(:api_error) { Easy::Api::Error.new(:unauthorized) }
10
-
10
+
11
11
  before do
12
12
  result.error = api_error
13
13
  end
14
14
 
15
- it { should have_key :success }
16
- its([:success]) { should be_false }
17
- it { should_not have_key :status_code }
18
-
19
- it { should have_key :error }
15
+ it "has a success key" do
16
+ expect(subject).to have_key(:success)
17
+ end
18
+
19
+ it "is not successful" do
20
+ expect(subject[:success]).to be(false)
21
+ end
22
+
23
+ it "has no status code" do
24
+ expect(subject).to_not have_key(:status_code)
25
+ end
26
+
27
+ it "has an error" do
28
+ expect(subject).to have_key(:error)
29
+ end
20
30
 
21
- context "[:error]" do
31
+ context "json error" do
22
32
  subject { result.as_json[:error] }
23
- its(:code) { should == api_error.code }
24
- its(:message) { should == api_error.message }
33
+
34
+ it "has an error" do
35
+ expect(subject.code).to eql api_error.code
36
+ end
37
+
38
+ it "has an error code" do
39
+ expect(subject.message).to eql api_error.message
40
+ end
41
+
25
42
  end
26
43
  end
27
44
 
28
45
  context "when result is successful" do
46
+
29
47
  before do
30
48
  result.success = true
31
49
  result.customer = "Bob Loblaw"
32
50
  end
33
51
 
34
- it { should have_key :success }
35
- its([:success]) { should be_true }
52
+ it "has a success key" do
53
+ expect(subject).to have_key(:success)
54
+ end
55
+
56
+ it "is successful" do
57
+ expect(subject[:success]).to be(true)
58
+ end
59
+
60
+ it "has a customer key" do
61
+ expect(subject).to have_key(:customer)
62
+ end
63
+
64
+ it "has a customer name" do
65
+ expect(subject[:customer]).to eql "Bob Loblaw"
66
+ end
67
+
68
+ it "has no status code" do
69
+ expect(subject).to_not have_key(:status_code)
70
+ end
36
71
 
37
- it { should have_key :customer }
38
- its([:customer]) { should == "Bob Loblaw" }
39
- it { should_not have_key :status_code }
40
72
  end
41
73
 
42
74
  end
@@ -44,10 +76,10 @@ describe Easy::Api::Result do
44
76
  describe "#status_code" do
45
77
  let(:result) { Easy::Api::Result.new }
46
78
  subject { result.status_code }
47
-
79
+
48
80
  context "when it doesn't get set" do
49
81
  it "should throw an exception" do
50
- lambda { subject }.should raise_error "Easy::Api::Result needs a status_code!"
82
+ expect { subject }.to raise_error("Easy::Api::Result needs a status_code!")
51
83
  end
52
84
  end
53
85
 
@@ -55,7 +87,10 @@ describe Easy::Api::Result do
55
87
  before do
56
88
  result.status_code = 200
57
89
  end
58
- it { should == 200 }
90
+
91
+ it "should reuturn the code" do
92
+ expect(subject).to eql 200
93
+ end
59
94
  end
60
95
  end
61
96
  end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+ require 'fixtures/application'
3
+ require 'fixtures/controllers'
4
+ require 'fixtures/models'
5
+ require 'rspec/rails'
6
+
7
+ RSpec.describe UsersController, :type => :controller do
8
+ context 'depricated render_format method' do
9
+
10
+ context 'GET #index' do
11
+
12
+ it "gets the index in json format" do
13
+ get :index, :format => 'json'
14
+
15
+ parsed_response = MultiJson.load(response.body)
16
+ expect(parsed_response['users'].size).to eq(2)
17
+
18
+ user_names = parsed_response['users'].collect{|c| c['name']}
19
+ expect(user_names).to include('bob')
20
+ expect(user_names).to include('sally')
21
+
22
+ user_ages = parsed_response['users'].collect{|c| c['age']}
23
+ expect(user_ages).to include(25)
24
+ expect(user_ages).to include(40)
25
+
26
+ expect(parsed_response['success']).to eq(true)
27
+ end
28
+
29
+ it "gets the index in xml format" do
30
+ get :index, :format => 'xml'
31
+ expect(response.body).to eql("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<response>\n <users>\n <user>\n <name>bob</name>\n <age>25</age>\n </user>\n <user>\n <name>sally</name>\n <age>40</age>\n </user>\n </users>\n <success>true</success>\n</response>\n")
32
+ end
33
+ end
34
+
35
+ context 'GET #show' do
36
+ it "gets show in json format" do
37
+ get :show, :format => 'json', id: 1
38
+
39
+ parsed_response = MultiJson.load(response.body)
40
+ expect(parsed_response['user']).to_not be(nil)
41
+ expect(parsed_response['user']['name']).to eq('bob')
42
+ expect(parsed_response['user']['age']).to eq(25)
43
+ expect(parsed_response['success']).to eq(true)
44
+ end
45
+
46
+ it "gets show in xml format" do
47
+ get :show, :format => 'xml', id: 1
48
+ expect(response.body).to eql("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<response>\n <user>\n <name>bob</name>\n <age>25</age>\n </user>\n <success>true</success>\n</response>\n")
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+
55
+ end
metadata CHANGED
@@ -1,93 +1,162 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shevaun Coker
8
+ - Joseph Leniston
9
+ - Nigel Ramsay
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2014-04-16 00:00:00.000000000 Z
13
+ date: 2014-07-28 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
- name: rails
16
+ name: activemodel
15
17
  requirement: !ruby/object:Gem::Requirement
16
18
  requirements:
17
- - - ">="
19
+ - - '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: 3.0.0
20
- type: :runtime
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '>='
27
+ - !ruby/object:Gem::Version
28
+ version: 3.0.0
29
+ - !ruby/object:Gem::Dependency
30
+ name: actionpack
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - '>='
34
+ - !ruby/object:Gem::Version
35
+ version: 3.0.0
36
+ type: :development
21
37
  prerelease: false
22
38
  version_requirements: !ruby/object:Gem::Requirement
23
39
  requirements:
24
- - - ">="
40
+ - - '>='
25
41
  - !ruby/object:Gem::Version
26
42
  version: 3.0.0
43
+ - !ruby/object:Gem::Dependency
44
+ name: activesupport
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: 3.0.0
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '>='
55
+ - !ruby/object:Gem::Version
56
+ version: 3.0.0
57
+ - !ruby/object:Gem::Dependency
58
+ name: multi_json
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: '1.0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: '1.0'
27
71
  - !ruby/object:Gem::Dependency
28
72
  name: bundler
29
73
  requirement: !ruby/object:Gem::Requirement
30
74
  requirements:
31
- - - ">="
75
+ - - '>='
32
76
  - !ruby/object:Gem::Version
33
77
  version: '0'
34
78
  type: :development
35
79
  prerelease: false
36
80
  version_requirements: !ruby/object:Gem::Requirement
37
81
  requirements:
38
- - - ">="
82
+ - - '>='
39
83
  - !ruby/object:Gem::Version
40
84
  version: '0'
41
85
  - !ruby/object:Gem::Dependency
42
86
  name: pry
43
87
  requirement: !ruby/object:Gem::Requirement
44
88
  requirements:
45
- - - ">="
89
+ - - '>='
46
90
  - !ruby/object:Gem::Version
47
91
  version: '0'
48
92
  type: :development
49
93
  prerelease: false
50
94
  version_requirements: !ruby/object:Gem::Requirement
51
95
  requirements:
52
- - - ">="
96
+ - - '>='
53
97
  - !ruby/object:Gem::Version
54
98
  version: '0'
55
99
  - !ruby/object:Gem::Dependency
56
100
  name: rspec
57
101
  requirement: !ruby/object:Gem::Requirement
58
102
  requirements:
59
- - - "~>"
103
+ - - '>='
60
104
  - !ruby/object:Gem::Version
61
- version: '2.0'
105
+ version: '2.14'
62
106
  type: :development
63
107
  prerelease: false
64
108
  version_requirements: !ruby/object:Gem::Requirement
65
109
  requirements:
66
- - - "~>"
110
+ - - '>='
67
111
  - !ruby/object:Gem::Version
68
- version: '2.0'
69
- description: A repository of common, reusable API code
112
+ version: '2.14'
113
+ - !ruby/object:Gem::Dependency
114
+ name: rspec-rails
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ description: Enables consistent responses for API calls
70
128
  email:
71
129
  - shevaun.coker@abletech.co.nz
130
+ - joseph.leniston@abletech.co.nz
131
+ - nigel.ramsay@abletech.co.nz
72
132
  executables: []
73
133
  extensions: []
74
134
  extra_rdoc_files: []
75
135
  files:
76
- - ".gitignore"
136
+ - .gitignore
137
+ - .travis.yml
138
+ - CHANGELOG.md
77
139
  - Gemfile
78
140
  - LICENSE
79
141
  - README.md
80
142
  - Rakefile
81
143
  - easy-api.gemspec
144
+ - lib/easy-api.rb
82
145
  - lib/easy/api.rb
146
+ - lib/easy/api/block_wrapper.rb
83
147
  - lib/easy/api/controller_methods.rb
84
148
  - lib/easy/api/error.rb
85
149
  - lib/easy/api/result.rb
86
150
  - lib/easy/api/version.rb
151
+ - spec/fixtures/application.rb
152
+ - spec/fixtures/controllers.rb
153
+ - spec/fixtures/models.rb
154
+ - spec/lib/easy/api/customers_controller_spec.rb
87
155
  - spec/lib/easy/api/error_spec.rb
88
156
  - spec/lib/easy/api/result_spec.rb
157
+ - spec/lib/easy/api/users_controller_spec.rb
89
158
  - spec/spec_helper.rb
90
- homepage: ''
159
+ homepage: https://github.com/AbleTech/easy-api
91
160
  licenses: []
92
161
  metadata: {}
93
162
  post_install_message:
@@ -96,22 +165,26 @@ require_paths:
96
165
  - lib
97
166
  required_ruby_version: !ruby/object:Gem::Requirement
98
167
  requirements:
99
- - - ">="
168
+ - - '>='
100
169
  - !ruby/object:Gem::Version
101
170
  version: '0'
102
171
  required_rubygems_version: !ruby/object:Gem::Requirement
103
172
  requirements:
104
- - - ">="
173
+ - - '>='
105
174
  - !ruby/object:Gem::Version
106
175
  version: '0'
107
176
  requirements: []
108
177
  rubyforge_project:
109
- rubygems_version: 2.2.2
178
+ rubygems_version: 2.0.6
110
179
  signing_key:
111
180
  specification_version: 4
112
- summary: Provides consistent responses for Abletech APIs
181
+ summary: Facilitates standard success and error behaviour in API responses
113
182
  test_files:
183
+ - spec/fixtures/application.rb
184
+ - spec/fixtures/controllers.rb
185
+ - spec/fixtures/models.rb
186
+ - spec/lib/easy/api/customers_controller_spec.rb
114
187
  - spec/lib/easy/api/error_spec.rb
115
188
  - spec/lib/easy/api/result_spec.rb
189
+ - spec/lib/easy/api/users_controller_spec.rb
116
190
  - spec/spec_helper.rb
117
- has_rdoc: