restafari 0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "restafari/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "restafari"
7
+ s.version = Restafari::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Danni Friedland"]
10
+ s.email = [%w(dannifriedland@gmail.com)]
11
+ s.homepage = "https://github.com/TheGiftsProject/restafari"
12
+ s.summary = %q{A DSL for consuming RESTful apis}
13
+ s.description = %q{Helper class to work with the restful apis}
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {spec}/*`.split("\n")
17
+ s.require_paths = %w("lib")
18
+
19
+ s.add_dependency "faraday"
20
+
21
+ s.add_development_dependency "webmock"
22
+ s.add_development_dependency "spork"
23
+ s.add_development_dependency "rack-test"
24
+ s.add_development_dependency "rspec"
25
+ s.add_development_dependency "rake"
26
+
27
+ end
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
19
+ .idea
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source "http://rubygems.org"
2
+
3
+ #gemspec
4
+
5
+
6
+ gem 'faraday'
7
+
8
+ group :test do
9
+ gem 'rake'
10
+ gem 'rspec'
11
+ gem 'webmock'
12
+ gem 'spork'
13
+ gem 'rack-test'
14
+ end
15
+
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ restafari
2
+ =========
3
+
4
+ A ruby DSL for consuming RESTful APIs
@@ -0,0 +1,41 @@
1
+ require "faraday"
2
+
3
+ module Restafari
4
+ module Action
5
+
6
+ def self.included(base)
7
+ base.extend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ def action(name, *args)
12
+ case args.length
13
+ when 1
14
+ if args[0].is_a? String
15
+ path = args[0]
16
+ else
17
+ path = "/#{name}"
18
+ default_params = args[0]
19
+ end
20
+ else
21
+ path = args[0]
22
+ default_params = args[1]
23
+ end
24
+
25
+ default_params ||= {}
26
+
27
+ define_singleton_method(name) { |params={}|
28
+ execute!(path, default_params.merge(params))
29
+ }
30
+ end
31
+
32
+ private
33
+ def execute!(path, params)
34
+ params = Restafari.config.run_before_request_hook(params)
35
+ conn = Faraday.new(url: Restafari.config.url)
36
+ result = conn.send(Restafari.config.http_method, path, params)
37
+ Restafari::Response.new(result)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,3 @@
1
+ module Restafari
2
+ VERSION = 0.1
3
+ end
@@ -0,0 +1,39 @@
1
+ require "spec_helper"
2
+ describe Restafari::Action do
3
+
4
+ it "should be able to pass default parameters without path" do
5
+ class SomeAction
6
+ include Restafari::Action
7
+ action :some_method, { b: 1 }
8
+ end
9
+
10
+ SomeAction.should_receive(:execute!).with(kind_of(String), { b: 1 }).once
11
+ SomeAction.some_method()
12
+ end
13
+
14
+ it "should be able to receive a path to an action" do
15
+ class SomeAction
16
+ include Restafari::Action
17
+ action :some_method, "/action"
18
+ end
19
+
20
+ SomeAction.should_receive(:execute!).with("/action", kind_of(Hash)).once
21
+ SomeAction.some_method()
22
+ end
23
+
24
+ it "should should run the before_request hook before each request" do
25
+ class SomeAction
26
+ include Restafari::Action
27
+ action :some_method
28
+ end
29
+
30
+ Restafari.config.before_request do |params|
31
+ params[:test] = true
32
+ end
33
+
34
+
35
+ Restafari.config.should_receive(:run_before_request_hook).once.and_return({test: true})
36
+ SomeAction.some_method()
37
+ end
38
+
39
+ end
metadata ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: restafari
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Danni Friedland
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-13 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: faraday
16
+ requirement: &70133075400800 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70133075400800
25
+ - !ruby/object:Gem::Dependency
26
+ name: webmock
27
+ requirement: &70133075400040 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70133075400040
36
+ - !ruby/object:Gem::Dependency
37
+ name: spork
38
+ requirement: &70133075399120 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70133075399120
47
+ - !ruby/object:Gem::Dependency
48
+ name: rack-test
49
+ requirement: &70133075398360 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70133075398360
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &70133075397380 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70133075397380
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: &70133075396380 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70133075396380
80
+ description: Helper class to work with the restful apis
81
+ email:
82
+ - - dannifriedland@gmail.com
83
+ executables: []
84
+ extensions: []
85
+ extra_rdoc_files: []
86
+ files:
87
+ - .gemspec
88
+ - .gitignore
89
+ - Gemfile
90
+ - README.md
91
+ - lib/restafari/action.rb
92
+ - lib/restafari/version.rb
93
+ - spec/restafari/action_spec.rb
94
+ homepage: https://github.com/TheGiftsProject/restafari
95
+ licenses: []
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - ! '"lib"'
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ requirements: []
113
+ rubyforge_project:
114
+ rubygems_version: 1.8.10
115
+ signing_key:
116
+ specification_version: 3
117
+ summary: A DSL for consuming RESTful apis
118
+ test_files: []