apicake 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 +4 -4
- data/README.md +93 -0
- data/lib/apicake/base.rb +16 -25
- data/lib/apicake/payload.rb +1 -2
- data/lib/apicake/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e430833ce1d205a599a9790cf91c76c752f950b
|
4
|
+
data.tar.gz: 7329dbbb5fab3f75498ae43c2c93e74557a92ef1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 772410ef64c4a957267f2b33e37e21565bc7e684e05cf5e7f695abdaeca5cf73b86237b213bf3ad41bfa530f0725bec7e1e2a20beea9b41bc02131828f82b447
|
7
|
+
data.tar.gz: e0bd4acf2f34a15aee3879468aef787ab7d958aa02342a6ed5e047459a5b1c810d4a0c37e90bd98da6c1b06345f12b4731038726c317b5380d839a99156120bb
|
data/README.md
CHANGED
@@ -1,6 +1,21 @@
|
|
1
1
|
API Cake - Build Dynamic API Wrappers
|
2
2
|
==================================================
|
3
3
|
|
4
|
+
[](https://rubygems.org/gems/apicake)
|
5
|
+
[](https://travis-ci.org/DannyBen/apicake)
|
6
|
+
[](https://codeclimate.com/github/DannyBen/apicake)
|
7
|
+
[](https://gemnasium.com/DannyBen/apicake)
|
8
|
+
|
9
|
+
|
10
|
+
---
|
11
|
+
|
12
|
+
This gem allows you to easily build rich API wrappers with minimal code.
|
13
|
+
|
14
|
+
It is HTTParty with a Cake.
|
15
|
+
|
16
|
+
---
|
17
|
+
|
18
|
+
|
4
19
|
Install
|
5
20
|
--------------------------------------------------
|
6
21
|
|
@@ -13,3 +28,81 @@ Or with bundler:
|
|
13
28
|
```ruby
|
14
29
|
gem 'apicake'
|
15
30
|
```
|
31
|
+
|
32
|
+
|
33
|
+
TL;DR
|
34
|
+
--------------------------------------------------
|
35
|
+
|
36
|
+
Turn this hypothetical API URL:
|
37
|
+
|
38
|
+
```
|
39
|
+
http://api.recipies.com/cakes?layers=3
|
40
|
+
```
|
41
|
+
|
42
|
+
To this:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
Recipies.cakes layers:3
|
46
|
+
```
|
47
|
+
|
48
|
+
Using this code only:
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
class Recipies < APICake::Base
|
52
|
+
base_url 'api.recipies.com'
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
|
57
|
+
Features
|
58
|
+
--------------------------------------------------
|
59
|
+
|
60
|
+
- Uses HTTParty
|
61
|
+
- Built in caching
|
62
|
+
- Built in save to file
|
63
|
+
- Built in response parsing (part of HTTParty)
|
64
|
+
- Designed for GET-only APIs (e.g., data services)
|
65
|
+
|
66
|
+
|
67
|
+
Usage
|
68
|
+
--------------------------------------------------
|
69
|
+
|
70
|
+
Create a class and inherit from `APICake::Base`.
|
71
|
+
|
72
|
+
This class automatically includes HTTParty, so you can do whatever you do in
|
73
|
+
HTTParty. In addition, the `APICake::Base` class defines a `method_missing`
|
74
|
+
method, so any call to an undefined method, will simply be converted to a
|
75
|
+
URL.
|
76
|
+
|
77
|
+
For example:
|
78
|
+
|
79
|
+
```ruby
|
80
|
+
class Recipies << APICake::Base
|
81
|
+
base_url 'api.recipies.com/v1'
|
82
|
+
end
|
83
|
+
|
84
|
+
recipies = Rcipies.new
|
85
|
+
|
86
|
+
# This will access http://api.recipies.com/v1/cakes
|
87
|
+
recipies.cakes
|
88
|
+
|
89
|
+
# This will access http://api.recipies.com/v1/cakes/chocolate
|
90
|
+
recipies.cakes 'chocolate'
|
91
|
+
|
92
|
+
# This will access http://api.recipies.com/v1/cakes/chocolate?layers=3
|
93
|
+
recipies.cakes 'chocolate', layers: 3
|
94
|
+
```
|
95
|
+
|
96
|
+
|
97
|
+
Caching
|
98
|
+
--------------------------------------------------
|
99
|
+
|
100
|
+
Documentation to be completed
|
101
|
+
|
102
|
+
|
103
|
+
Method Reference
|
104
|
+
--------------------------------------------------
|
105
|
+
|
106
|
+
Documentation to be completed
|
107
|
+
|
108
|
+
|
data/lib/apicake/base.rb
CHANGED
@@ -5,21 +5,10 @@ module APICake
|
|
5
5
|
class Base
|
6
6
|
include HTTParty
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
# Disable dynamic methods. This is enabled by default.
|
11
|
-
# The main reason you may want to disable it sometimes is for easier
|
12
|
-
# debugging.
|
13
|
-
def self.disable_dynamic_methods
|
14
|
-
@@disable_dynamic_methods = true
|
15
|
-
end
|
8
|
+
attr_reader :last_payload
|
16
9
|
|
17
10
|
def method_missing(method_sym, *arguments, &_block)
|
18
|
-
|
19
|
-
super
|
20
|
-
else
|
21
|
-
get "/#{method_sym}", *arguments
|
22
|
-
end
|
11
|
+
get "/#{method_sym}", *arguments
|
23
12
|
end
|
24
13
|
|
25
14
|
def cache
|
@@ -30,6 +19,18 @@ module APICake
|
|
30
19
|
def default_params; {}; end
|
31
20
|
def default_query; {}; end
|
32
21
|
|
22
|
+
def get(path, extra=nil, params={})
|
23
|
+
get!(path, extra, params).parsed_response
|
24
|
+
end
|
25
|
+
|
26
|
+
def get!(path, extra=nil, params={})
|
27
|
+
key = "#{self.class.base_uri}+#{path}+#{extra}+#{params}"
|
28
|
+
|
29
|
+
@last_payload = cache.get key do
|
30
|
+
http_get(path, extra, params)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
33
34
|
def url(path, extra=nil, params={})
|
34
35
|
payload = get! path, extra, params
|
35
36
|
payload.request.last_uri.to_s
|
@@ -40,17 +41,7 @@ module APICake
|
|
40
41
|
File.write filename, payload.response.body
|
41
42
|
end
|
42
43
|
|
43
|
-
|
44
|
-
get!(path, extra, params).parsed_response
|
45
|
-
end
|
46
|
-
|
47
|
-
def get!(path, extra=nil, params={})
|
48
|
-
key = "#{path}+#{extra}+#{params}"
|
49
|
-
|
50
|
-
cache.get key do
|
51
|
-
http_get(path, extra, params)
|
52
|
-
end
|
53
|
-
end
|
44
|
+
private
|
54
45
|
|
55
46
|
def http_get(path, extra=nil, params={})
|
56
47
|
if extra.is_a?(Hash) and params.empty?
|
@@ -68,4 +59,4 @@ module APICake
|
|
68
59
|
APICake::Payload.new payload
|
69
60
|
end
|
70
61
|
end
|
71
|
-
end
|
62
|
+
end
|
data/lib/apicake/payload.rb
CHANGED
@@ -9,11 +9,10 @@ module APICake
|
|
9
9
|
@parsed_response = response.parsed_response
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
12
|
+
def to_h
|
13
13
|
{ request: request, response: response, headers: headers,
|
14
14
|
parsed_response: parsed_response }
|
15
15
|
end
|
16
|
-
alias_method :to_h, :inspect
|
17
16
|
|
18
17
|
def to_s
|
19
18
|
parsed_response.to_s
|
data/lib/apicake/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apicake
|
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
|
- Danny Ben Shitrit
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lightly
|