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 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: []