api_recipes 0.0.1 → 0.0.2
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 +8 -8
- data/README.md +10 -12
- data/api_recipes.png +0 -0
- data/lib/api_recipes/resource.rb +26 -9
- data/lib/api_recipes/settings.rb +5 -1
- data/lib/api_recipes/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjgxODFjMzU4NzQwMjdkMWEyYTBlMmY1NWFjZTFkNmUwMTZhZDY5MQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MzljOTgzNWUxNDYyOTZhYjljMGYzM2FkZWY5YzI0NjQwYTU2ZWI5OQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZThhMzdmYTY0YWNmZDU3NDVmN2M4ZTQ1YzhkYTQ5MTA0MWU4OGY2ZGFlM2Nj
|
10
|
+
Y2JmN2Y3MmIwNDM2YjY3MTc0NWEyYzc1ODVlZWYzNDk4NDI5YmI5OGIxOTRm
|
11
|
+
ZmIzYmViNWI1YzU4MjA1YmZkMjE5NzFlYmJiMjQxY2EzMGM5MjU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Mjc0Y2MyNzFkNTY4Y2FjZjJmNWIwOTNjYmI0MmNmMWNhN2E0NjY3ZDUwNzU1
|
14
|
+
YjRhZmZmNjExZTZkNzg0N2Y0NzdkZjVjMzhhMGJkNzUzNGY0OWFkNDlmMDlk
|
15
|
+
YTg4ZTNlMGM5Zjg3MmRhZmM1YTE4NTgwMTI5NDExOTc3NDM2MmM=
|
data/README.md
CHANGED
@@ -2,7 +2,13 @@
|
|
2
2
|
|
3
3
|
# ApiRecipes
|
4
4
|
|
5
|
-
|
5
|
+
<p align="center">
|
6
|
+
<img width="300" height="160" src="api_recipes.png"/>
|
7
|
+
</p>
|
8
|
+
|
9
|
+
Create your HTTP APIs recipes and tastefully consume it!
|
10
|
+
|
11
|
+
Api recipes lets you easily describe and consume an HTTP API.
|
6
12
|
|
7
13
|
## Installation
|
8
14
|
|
@@ -26,26 +32,18 @@ Ruby 1.9.3 or higher.
|
|
26
32
|
|
27
33
|
## Usage
|
28
34
|
|
29
|
-
|
35
|
+
Help needed.
|
30
36
|
|
31
37
|
In the meantime take a look at the ``` examples ``` folder. Thank you.
|
32
38
|
|
33
39
|
## TODO
|
34
40
|
|
35
|
-
* Write specs
|
41
|
+
* Write specs (I know... this code has been wrote down on a hurry so please do not beat me)
|
36
42
|
* Write a good Usage
|
37
43
|
* Add more examples
|
44
|
+
* Add documentation
|
38
45
|
* Delete this TODO section
|
39
46
|
|
40
|
-
## Development
|
41
|
-
|
42
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests.
|
43
|
-
You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
44
|
-
|
45
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update
|
46
|
-
the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for
|
47
|
-
the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
48
|
-
|
49
47
|
## Contributing
|
50
48
|
|
51
49
|
Bug reports and pull requests are welcome on GitHub at https://github.com/madAle/api_recipes.
|
data/api_recipes.png
ADDED
Binary file
|
data/lib/api_recipes/resource.rb
CHANGED
@@ -62,6 +62,21 @@ module ApiRecipes
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
def encode_residual_params(route_attributes, residual_params)
|
66
|
+
# If :encode_params_as is specified and avalable use it
|
67
|
+
if Settings::AVAILABLE_PARAMS_ENCODINGS.include? route_attributes[:encode_params_as].to_s
|
68
|
+
{ route_attributes[:encode_params_as].to_sym => residual_params }
|
69
|
+
else
|
70
|
+
# default to query string params (get) or json (other methods)
|
71
|
+
case route_attributes[:method].to_sym
|
72
|
+
when :get
|
73
|
+
{ params: residual_params }
|
74
|
+
when :post, :put, :patch, :delete
|
75
|
+
{ json: residual_params }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
65
80
|
def extract_headers
|
66
81
|
settings[:default_headers] || {}
|
67
82
|
end
|
@@ -70,6 +85,9 @@ module ApiRecipes
|
|
70
85
|
# e.g. webapp.alarms.index
|
71
86
|
def generate_routes
|
72
87
|
@routes.each do |route, attrs|
|
88
|
+
if attrs.is_a? Hash
|
89
|
+
attrs.deep_symbolize_keys!
|
90
|
+
end
|
73
91
|
if route.eql? @name
|
74
92
|
raise RouteNameClashError.new(route, @name)
|
75
93
|
end
|
@@ -90,11 +108,11 @@ module ApiRecipes
|
|
90
108
|
|
91
109
|
def port
|
92
110
|
settings[:port] || case settings[:protocol]
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
111
|
+
when 'http'
|
112
|
+
80
|
113
|
+
when 'https'
|
114
|
+
443
|
115
|
+
end
|
98
116
|
end
|
99
117
|
|
100
118
|
def request
|
@@ -128,16 +146,15 @@ module ApiRecipes
|
|
128
146
|
unless route_attributes
|
129
147
|
route_attributes = {}
|
130
148
|
end
|
131
|
-
|
132
|
-
|
133
|
-
end
|
149
|
+
# Merge route attributes with defaults
|
150
|
+
route_attributes = Settings::DEFAULT_ROUTE_ATTRIBUTES.merge route_attributes
|
134
151
|
|
135
152
|
params = pars.extract_options!
|
136
153
|
path, residual_params = build_path(route, route_attributes, params)
|
137
154
|
residual_params = nil unless residual_params.any?
|
138
155
|
uri = build_uri_from path
|
139
156
|
|
140
|
-
response = build_request.send(method
|
157
|
+
response = build_request.send(route_attributes[:method], uri, encode_residual_params(route_attributes, residual_params))
|
141
158
|
check_response_code route, route_attributes, response
|
142
159
|
|
143
160
|
if block_given?
|
data/lib/api_recipes/settings.rb
CHANGED
data/lib/api_recipes/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api_recipes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alessandro Verlato
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oj
|
@@ -83,6 +83,7 @@ files:
|
|
83
83
|
- README.md
|
84
84
|
- Rakefile
|
85
85
|
- api_recipes.gemspec
|
86
|
+
- api_recipes.png
|
86
87
|
- bin/console
|
87
88
|
- bin/setup
|
88
89
|
- examples/authorization.rb
|