apihub 0.0.2 → 0.0.3
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 +1 -1
- data/lib/apihub.rb +6 -8
- data/lib/apihub/base.rb +6 -0
- data/lib/apihub/company.rb +2 -6
- data/lib/apihub/mash.rb +180 -0
- data/lib/apihub/person.rb +2 -6
- data/lib/apihub/resource.rb +64 -0
- data/lib/apihub/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7fcd2e39fb3f5ab4c9b47a7a9d04da231f994ea
|
4
|
+
data.tar.gz: e1652e4f2d388b899629ff272948f7124ac77b36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a5710248e6297795a27b5229c839443046ad598c50e649da888786759e54ed6c0dfeaebdbd056e7d0ca85498a22f16b1eda1581875866281bad17a4c3456045
|
7
|
+
data.tar.gz: 88738052c23d0804d0c49bb0a79366cd70e80d9ab8480b27999f0ce1763adf975357548ab261536326b9d10f63595b614e530dc3c1bf89cd79a33bf37f186e27
|
data/README.md
CHANGED
@@ -20,7 +20,7 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
First authorize requests by setting the API key found on your [account's settings page](https://apihub.co/profile).
|
22
22
|
|
23
|
-
APIHub.api_key = ENV['
|
23
|
+
APIHub.api_key = ENV['APIHUB_KEY']
|
24
24
|
|
25
25
|
Then you can lookup people by email address:
|
26
26
|
|
data/lib/apihub.rb
CHANGED
@@ -4,8 +4,8 @@ require 'apihub/version'
|
|
4
4
|
module APIHub
|
5
5
|
def self.api_key=(value)
|
6
6
|
Base.options Base.options.merge(
|
7
|
-
:
|
8
|
-
:
|
7
|
+
auth_type: :bearer,
|
8
|
+
password: value
|
9
9
|
)
|
10
10
|
end
|
11
11
|
|
@@ -13,11 +13,9 @@ module APIHub
|
|
13
13
|
self.api_key = value
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
endpoint 'https://api.apihub.co'
|
18
|
-
options :format => :json
|
19
|
-
end
|
20
|
-
|
21
|
-
autoload :Person, 'apihub/person'
|
16
|
+
autoload :Base, 'apihub/base'
|
22
17
|
autoload :Company, 'apihub/company'
|
18
|
+
autoload :Mash, 'apihub/mash'
|
19
|
+
autoload :Person, 'apihub/person'
|
20
|
+
autoload :Resource, 'apihub/resource'
|
23
21
|
end
|
data/lib/apihub/base.rb
ADDED
data/lib/apihub/company.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module APIHub
|
2
2
|
class Company < Base
|
3
|
-
endpoint 'https://company.apihub.co'
|
3
|
+
endpoint 'https://company-stream.apihub.co'
|
4
4
|
path '/v1/companies'
|
5
5
|
|
6
6
|
def self.find(values, options = {})
|
@@ -21,11 +21,7 @@ module APIHub
|
|
21
21
|
raise ArgumentError, 'Invalid values'
|
22
22
|
end
|
23
23
|
|
24
|
-
|
25
|
-
self.new(pending: true)
|
26
|
-
else
|
27
|
-
self.new(response)
|
28
|
-
end
|
24
|
+
self.new(response)
|
29
25
|
|
30
26
|
rescue Nestful::ResourceNotFound
|
31
27
|
end
|
data/lib/apihub/mash.rb
ADDED
@@ -0,0 +1,180 @@
|
|
1
|
+
module APIHub
|
2
|
+
class Mash < Hash
|
3
|
+
def self.new(value = nil, *args)
|
4
|
+
if value.respond_to?(:each) &&
|
5
|
+
!value.respond_to?(:each_pair)
|
6
|
+
value.map {|v| super(v) }
|
7
|
+
else
|
8
|
+
super
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
alias_method :to_s, :inspect
|
13
|
+
|
14
|
+
def initialize(source_hash = nil, default = nil, &blk)
|
15
|
+
deep_update(source_hash.to_hash) if source_hash
|
16
|
+
default ? super(default) : super(&blk)
|
17
|
+
end
|
18
|
+
|
19
|
+
class << self; alias [] new; end
|
20
|
+
|
21
|
+
def id #:nodoc:
|
22
|
+
self['id']
|
23
|
+
end
|
24
|
+
|
25
|
+
def type #:nodoc:
|
26
|
+
self['type']
|
27
|
+
end
|
28
|
+
|
29
|
+
alias_method :regular_reader, :[]
|
30
|
+
alias_method :regular_writer, :[]=
|
31
|
+
|
32
|
+
# Retrieves an attribute set in the Mash. Will convert
|
33
|
+
# any key passed in to a string before retrieving.
|
34
|
+
def custom_reader(key)
|
35
|
+
value = regular_reader(convert_key(key))
|
36
|
+
yield value if block_given?
|
37
|
+
value
|
38
|
+
end
|
39
|
+
|
40
|
+
# Sets an attribute in the Mash. Key will be converted to
|
41
|
+
# a string before it is set, and Hashes will be converted
|
42
|
+
# into Mashes for nesting purposes.
|
43
|
+
def custom_writer(key,value) #:nodoc:
|
44
|
+
regular_writer(convert_key(key), convert_value(value))
|
45
|
+
end
|
46
|
+
|
47
|
+
alias_method :[], :custom_reader
|
48
|
+
alias_method :[]=, :custom_writer
|
49
|
+
|
50
|
+
# This is the bang method reader, it will return a new Mash
|
51
|
+
# if there isn't a value already assigned to the key requested.
|
52
|
+
def initializing_reader(key)
|
53
|
+
ck = convert_key(key)
|
54
|
+
regular_writer(ck, self.class.new) unless key?(ck)
|
55
|
+
regular_reader(ck)
|
56
|
+
end
|
57
|
+
|
58
|
+
# This is the under bang method reader, it will return a temporary new Mash
|
59
|
+
# if there isn't a value already assigned to the key requested.
|
60
|
+
def underbang_reader(key)
|
61
|
+
ck = convert_key(key)
|
62
|
+
if key?(ck)
|
63
|
+
regular_reader(ck)
|
64
|
+
else
|
65
|
+
self.class.new
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def fetch(key, *args)
|
70
|
+
super(convert_key(key), *args)
|
71
|
+
end
|
72
|
+
|
73
|
+
def delete(key)
|
74
|
+
super(convert_key(key))
|
75
|
+
end
|
76
|
+
|
77
|
+
alias_method :regular_dup, :dup
|
78
|
+
# Duplicates the current mash as a new mash.
|
79
|
+
def dup
|
80
|
+
self.class.new(self, self.default)
|
81
|
+
end
|
82
|
+
|
83
|
+
def key?(key)
|
84
|
+
super(convert_key(key))
|
85
|
+
end
|
86
|
+
alias_method :has_key?, :key?
|
87
|
+
alias_method :include?, :key?
|
88
|
+
alias_method :member?, :key?
|
89
|
+
|
90
|
+
# Performs a deep_update on a duplicate of the
|
91
|
+
# current mash.
|
92
|
+
def deep_merge(other_hash, &blk)
|
93
|
+
dup.deep_update(other_hash, &blk)
|
94
|
+
end
|
95
|
+
alias_method :merge, :deep_merge
|
96
|
+
|
97
|
+
# Recursively merges this mash with the passed
|
98
|
+
# in hash, merging each hash in the hierarchy.
|
99
|
+
def deep_update(other_hash, &blk)
|
100
|
+
other_hash.each_pair do |k,v|
|
101
|
+
key = convert_key(k)
|
102
|
+
if regular_reader(key).is_a?(Mash) and v.is_a?(::Hash)
|
103
|
+
custom_reader(key).deep_update(v, &blk)
|
104
|
+
else
|
105
|
+
value = convert_value(v, true)
|
106
|
+
value = blk.call(key, self[k], value) if blk
|
107
|
+
custom_writer(key, value)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
self
|
111
|
+
end
|
112
|
+
alias_method :deep_merge!, :deep_update
|
113
|
+
alias_method :update, :deep_update
|
114
|
+
alias_method :merge!, :update
|
115
|
+
|
116
|
+
# Performs a shallow_update on a duplicate of the current mash
|
117
|
+
def shallow_merge(other_hash)
|
118
|
+
dup.shallow_update(other_hash)
|
119
|
+
end
|
120
|
+
|
121
|
+
# Merges (non-recursively) the hash from the argument,
|
122
|
+
# changing the receiving hash
|
123
|
+
def shallow_update(other_hash)
|
124
|
+
other_hash.each_pair do |k,v|
|
125
|
+
regular_writer(convert_key(k), convert_value(v, true))
|
126
|
+
end
|
127
|
+
self
|
128
|
+
end
|
129
|
+
|
130
|
+
def replace(other_hash)
|
131
|
+
(keys - other_hash.keys).each { |key| delete(key) }
|
132
|
+
other_hash.each { |key, value| self[key] = value }
|
133
|
+
self
|
134
|
+
end
|
135
|
+
|
136
|
+
# Will return true if the Mash has had a key
|
137
|
+
# set in addition to normal respond_to? functionality.
|
138
|
+
def respond_to?(method_name, include_private=false)
|
139
|
+
return true if key?(method_name) || method_name.to_s.slice(/[=?!_]\Z/)
|
140
|
+
super
|
141
|
+
end
|
142
|
+
|
143
|
+
def method_missing(method_name, *args, &blk)
|
144
|
+
return self.[](method_name, &blk) if key?(method_name)
|
145
|
+
match = method_name.to_s.match(/(.*?)([?=!_]?)$/)
|
146
|
+
case match[2]
|
147
|
+
when "="
|
148
|
+
self[match[1]] = args.first
|
149
|
+
when "?"
|
150
|
+
!!self[match[1]]
|
151
|
+
when "!"
|
152
|
+
initializing_reader(match[1])
|
153
|
+
when "_"
|
154
|
+
underbang_reader(match[1])
|
155
|
+
else
|
156
|
+
default(method_name, *args, &blk)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
protected
|
161
|
+
|
162
|
+
def convert_key(key) #:nodoc:
|
163
|
+
key.to_s
|
164
|
+
end
|
165
|
+
|
166
|
+
def convert_value(val, duping=false) #:nodoc:
|
167
|
+
case val
|
168
|
+
when self.class
|
169
|
+
val.dup
|
170
|
+
when ::Hash
|
171
|
+
val = val.dup if duping
|
172
|
+
Mash.new(val)
|
173
|
+
when ::Array
|
174
|
+
val.map {|e| convert_value(e) }
|
175
|
+
else
|
176
|
+
val
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
data/lib/apihub/person.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module APIHub
|
2
2
|
class Person < Base
|
3
|
-
endpoint 'https://person.apihub.co'
|
3
|
+
endpoint 'https://person-stream.apihub.co'
|
4
4
|
path '/v1/people'
|
5
5
|
|
6
6
|
def self.find(values, options = {})
|
@@ -27,11 +27,7 @@ module APIHub
|
|
27
27
|
raise ArgumentError, 'Invalid values'
|
28
28
|
end
|
29
29
|
|
30
|
-
|
31
|
-
self.new(pending: true)
|
32
|
-
else
|
33
|
-
self.new(response)
|
34
|
-
end
|
30
|
+
self.new(response)
|
35
31
|
|
36
32
|
rescue Nestful::ResourceNotFound
|
37
33
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module APIHub
|
2
|
+
class Resource < Mash
|
3
|
+
def self.endpoint(value = nil)
|
4
|
+
@endpoint = value if value
|
5
|
+
return @endpoint if @endpoint
|
6
|
+
superclass.respond_to?(:endpoint) ? superclass.endpoint : nil
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.path(value = nil)
|
10
|
+
@path = value if value
|
11
|
+
return @path if @path
|
12
|
+
superclass.respond_to?(:path) ? superclass.path : nil
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.options(value = nil)
|
16
|
+
@options = value if value
|
17
|
+
return @options if @options
|
18
|
+
superclass.respond_to?(:options) ? superclass.options : {}
|
19
|
+
end
|
20
|
+
|
21
|
+
class << self
|
22
|
+
alias_method :endpoint=, :endpoint
|
23
|
+
alias_method :path=, :path
|
24
|
+
alias_method :options=, :options
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.url
|
28
|
+
URI.join(endpoint.to_s, path.to_s).to_s
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.uri(*parts)
|
32
|
+
# If an absolute URI already
|
33
|
+
if (uri = parts.first) && uri.is_a?(URI)
|
34
|
+
return uri if uri.host
|
35
|
+
end
|
36
|
+
|
37
|
+
URI.parse(Nestful::Helpers.to_path(url, *parts))
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.get(action = '', params = {}, options = {})
|
41
|
+
request(uri(action), options.merge(method: :get, params: params))
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.put(action = '', params = {}, options = {})
|
45
|
+
request(uri(action), options.merge(method: :put, params: params))
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.post(action = '', params = {}, options = {})
|
49
|
+
request(uri(action), options.merge(method: :post, params: params))
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.delete(action = '', params = {}, options = {})
|
53
|
+
request(uri(action), options.merge(method: :delete, params: params))
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.request(url, options = {})
|
57
|
+
options = Nestful::Helpers.deep_merge(self.options, options)
|
58
|
+
|
59
|
+
self.new Nestful::Request.new(
|
60
|
+
url, options
|
61
|
+
).execute
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/apihub/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apihub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex MacCaw
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -69,8 +69,11 @@ files:
|
|
69
69
|
- bin/apihub
|
70
70
|
- examples/email.rb
|
71
71
|
- lib/apihub.rb
|
72
|
+
- lib/apihub/base.rb
|
72
73
|
- lib/apihub/company.rb
|
74
|
+
- lib/apihub/mash.rb
|
73
75
|
- lib/apihub/person.rb
|
76
|
+
- lib/apihub/resource.rb
|
74
77
|
- lib/apihub/version.rb
|
75
78
|
homepage: https://github.com/maccman/apihub-ruby
|
76
79
|
licenses:
|