restafari 0.1
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.
- data/.gemspec +27 -0
- data/.gitignore +19 -0
- data/Gemfile +15 -0
- data/README.md +4 -0
- data/lib/restafari/action.rb +41 -0
- data/lib/restafari/version.rb +3 -0
- data/spec/restafari/action_spec.rb +39 -0
- metadata +118 -0
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
data/Gemfile
ADDED
data/README.md
ADDED
@@ -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,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: []
|