layer-api 0.4.0 → 0.4.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.
- checksums.yaml +4 -4
- data/MIGRATING.md +1 -1
- data/README.md +1 -1
- data/lib/layer/platform/client.rb +12 -6
- data/lib/layer/resource.rb +14 -18
- data/lib/layer/resource_proxy.rb +3 -2
- data/lib/layer/resources/block.rb +10 -8
- data/lib/layer/resources/conversation.rb +1 -1
- data/lib/layer/resources/user.rb +5 -5
- data/lib/layer/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6ab8370a2e62e08d609cec42258773e8513f9d8
|
4
|
+
data.tar.gz: 84cb431cb17c4a4f7056c960c07e194e3b3b87b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d423646475953f4ef3d8c420abe8d7b663223c3a0e33fd5d1702648761efd4e10cb89b3d7d3e242020ea2cdc252f78af3dfe9ee0ef5a7e3010a2a7d4970debbf
|
7
|
+
data.tar.gz: 266871324eb01f3bde7faa784f07d0b7a2995d70c9cf27b01fa49732a49722851e083b279bbab41a9f94880725f06074c6cc6a1464e62cee7243aa1c3c470b7d
|
data/MIGRATING.md
CHANGED
@@ -28,7 +28,7 @@ In `0.3.x`, each function returned a Hash containing a parsed JSON representatio
|
|
28
28
|
|
29
29
|
`0.4` introduced `Resource` - A base class used to encapsulate each JSON response.
|
30
30
|
|
31
|
-
`Resource` can allow attributes to be accessed
|
31
|
+
`Resource` can allow attributes to be accessed by calling the attribute name on the instance. Alternatively, you can return a Hashed version of the resource using `Resource.attributes`. For example:
|
32
32
|
|
33
33
|
```ruby
|
34
34
|
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ Or install it yourself as:
|
|
28
28
|
## Usage
|
29
29
|
|
30
30
|
### Resources
|
31
|
-
All client methods return `Resource` objects or a collection of `Resource` objects. Every attribute from a resource can be accessed calling attribute methods:
|
31
|
+
All client methods return `Resource` objects or a collection of `Resource` objects. Every attribute from a resource can be accessed by calling attribute methods:
|
32
32
|
|
33
33
|
```ruby
|
34
34
|
conversation = platform.conversations.find("fb2f3a48-523d-4449-a57f-c6651fc6612c")
|
@@ -4,13 +4,13 @@ module Layer
|
|
4
4
|
attr_accessor :api_token, :app_id
|
5
5
|
|
6
6
|
def initialize(options = {})
|
7
|
+
id = options[:app_id] || ENV['LAYER_APP_ID']
|
7
8
|
@api_token = options[:api_token] || ENV['LAYER_API_TOKEN']
|
8
|
-
@app_id =
|
9
|
-
strip_layer_prefix(@app_id)
|
9
|
+
@app_id = strip_layer_prefix(id)
|
10
10
|
end
|
11
11
|
|
12
12
|
def client
|
13
|
-
@http_client ||= Layer::HttpClient.new(app_id, api_token)
|
13
|
+
@http_client ||= Layer::HttpClient.new(@app_id, @api_token)
|
14
14
|
end
|
15
15
|
|
16
16
|
def get(url, *args)
|
@@ -38,20 +38,26 @@ module Layer
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def announcements
|
41
|
-
Layer::ResourceProxy.new(nil, Layer::Resources::Announcement)
|
41
|
+
Layer::ResourceProxy.new(client, nil, Layer::Resources::Announcement)
|
42
42
|
end
|
43
43
|
|
44
44
|
def conversations
|
45
|
-
Layer::ResourceProxy.new(nil, Layer::Resources::Conversation)
|
45
|
+
Layer::ResourceProxy.new(client, nil, Layer::Resources::Conversation)
|
46
46
|
end
|
47
47
|
|
48
48
|
def users
|
49
|
-
Layer::ResourceProxy.new(nil, Layer::Resources::User)
|
49
|
+
Layer::ResourceProxy.new(client, nil, Layer::Resources::User)
|
50
50
|
end
|
51
51
|
|
52
52
|
def generate_identity_token(options = {})
|
53
53
|
Layer::IdentityToken.new(options)
|
54
54
|
end
|
55
|
+
|
56
|
+
def inspect
|
57
|
+
"#<#{self.class} api_token=\"#{@api_token}\" app_id=\"#{@app_id}\">"
|
58
|
+
end
|
59
|
+
|
60
|
+
alias_method :to_s, :inspect
|
55
61
|
end
|
56
62
|
end
|
57
63
|
end
|
data/lib/layer/resource.rb
CHANGED
@@ -2,8 +2,9 @@ module Layer
|
|
2
2
|
class Resource
|
3
3
|
attr_reader :attributes, :client
|
4
4
|
|
5
|
-
def initialize(attributes)
|
5
|
+
def initialize(attributes, client)
|
6
6
|
@attributes = attributes
|
7
|
+
@client = client
|
7
8
|
end
|
8
9
|
|
9
10
|
def update(params)
|
@@ -18,10 +19,6 @@ module Layer
|
|
18
19
|
client.delete(url)
|
19
20
|
end
|
20
21
|
|
21
|
-
def client
|
22
|
-
self.class.client
|
23
|
-
end
|
24
|
-
|
25
22
|
def method_missing(method, *args, &block)
|
26
23
|
method_key = method.to_s
|
27
24
|
attributes.has_key?(method_key) ? attributes[method_key] : super
|
@@ -36,6 +33,12 @@ module Layer
|
|
36
33
|
attributes["id"].split("/").last if attributes["id"]
|
37
34
|
end
|
38
35
|
|
36
|
+
def inspect
|
37
|
+
"#<#{self.class} attributes=#{@attributes}>"
|
38
|
+
end
|
39
|
+
|
40
|
+
alias_method :to_s, :inspect
|
41
|
+
|
39
42
|
class << self
|
40
43
|
def class_name
|
41
44
|
name.split("::").last
|
@@ -49,28 +52,21 @@ module Layer
|
|
49
52
|
pluralized_name.downcase
|
50
53
|
end
|
51
54
|
|
52
|
-
def client
|
53
|
-
Layer::HttpClient.new(
|
54
|
-
ENV['LAYER_APP_ID'],
|
55
|
-
ENV['LAYER_API_TOKEN']
|
56
|
-
)
|
57
|
-
end
|
58
|
-
|
59
|
-
def create(url, params = {})
|
55
|
+
def create(client, url, params = {})
|
60
56
|
response = client.post(url, body: params.to_json)
|
61
|
-
new(response)
|
57
|
+
new(response, client)
|
62
58
|
end
|
63
59
|
|
64
|
-
def find(url, id)
|
60
|
+
def find(client, url, id)
|
65
61
|
response = client.get("#{url}/#{id}")
|
66
|
-
new(response)
|
62
|
+
new(response, client)
|
67
63
|
end
|
68
64
|
|
69
|
-
def list(url, params = {})
|
65
|
+
def list(client, url, params = {})
|
70
66
|
collection = client.get(url, body: params.to_json)
|
71
67
|
|
72
68
|
if collection.any?
|
73
|
-
collection.map{ |resource| new(resource) }
|
69
|
+
collection.map{ |resource| new(resource, client) }
|
74
70
|
else
|
75
71
|
[]
|
76
72
|
end
|
data/lib/layer/resource_proxy.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Layer
|
2
2
|
class ResourceProxy
|
3
|
-
def initialize(base, resource)
|
3
|
+
def initialize(client, base, resource)
|
4
|
+
@client = client
|
4
5
|
@base = base
|
5
6
|
@resource = resource
|
6
7
|
end
|
@@ -10,7 +11,7 @@ module Layer
|
|
10
11
|
end
|
11
12
|
|
12
13
|
def method_missing(method, *args, &block)
|
13
|
-
@resource.public_send(method, *([url] + args), &block)
|
14
|
+
@resource.public_send(method, *([@client, url] + args), &block)
|
14
15
|
end
|
15
16
|
|
16
17
|
def respond_to_missing?(method, include_private = false)
|
@@ -1,30 +1,32 @@
|
|
1
1
|
module Layer
|
2
2
|
module Resources
|
3
3
|
class Block < Layer::Resource
|
4
|
-
def self.find(url, user)
|
4
|
+
def self.find(client, url, user)
|
5
5
|
user_id = user.instance_of?(User) ? user.id : user
|
6
|
-
new_abstract_instance(url, user_id)
|
6
|
+
new_abstract_instance(url, user_id, client)
|
7
7
|
end
|
8
8
|
|
9
|
-
def self.list(url, params = {})
|
9
|
+
def self.list(client, url, params = {})
|
10
10
|
collection = client.get(url, body: params.to_json)
|
11
11
|
|
12
12
|
if collection.any?
|
13
|
-
collection.map
|
13
|
+
collection.map do |resource|
|
14
|
+
new_abstract_instance(url, resource['user_id'], client)
|
15
|
+
end
|
14
16
|
else
|
15
17
|
[]
|
16
18
|
end
|
17
19
|
end
|
18
20
|
|
19
|
-
def self.create(url, params = {})
|
21
|
+
def self.create(client, url, params = {})
|
20
22
|
user_params = params.instance_of?(User) ? {user_id: params.id} : params
|
21
23
|
|
22
24
|
client.post(url, body: user_params.to_json)
|
23
|
-
new_abstract_instance(url, user_params[:user_id])
|
25
|
+
new_abstract_instance(url, user_params[:user_id], client)
|
24
26
|
end
|
25
27
|
|
26
|
-
def self.new_abstract_instance(url, id)
|
27
|
-
new({"id" => id, "url" => "#{url}/#{id}"})
|
28
|
+
def self.new_abstract_instance(url, id, client)
|
29
|
+
new({"id" => id, "url" => "#{url}/#{id}"}, client)
|
28
30
|
end
|
29
31
|
end
|
30
32
|
end
|
data/lib/layer/resources/user.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
module Layer
|
2
2
|
module Resources
|
3
3
|
class User < Layer::Resource
|
4
|
-
def self.find(url, id)
|
5
|
-
new({"id" => id, "url" => "users/#{id}"})
|
4
|
+
def self.find(client, url, id)
|
5
|
+
new({"id" => id, "url" => "users/#{id}"}, client)
|
6
6
|
end
|
7
7
|
|
8
8
|
def blocks
|
9
|
-
Layer::ResourceProxy.new(self, Layer::Resources::Block)
|
9
|
+
Layer::ResourceProxy.new(client, self, Layer::Resources::Block)
|
10
10
|
end
|
11
11
|
|
12
12
|
def conversations
|
13
|
-
Layer::ResourceProxy.new(self, Layer::Resources::Conversation)
|
13
|
+
Layer::ResourceProxy.new(client, self, Layer::Resources::Conversation)
|
14
14
|
end
|
15
15
|
|
16
16
|
def messages
|
17
|
-
Layer::ResourceProxy.new(self, Layer::Resources::Message)
|
17
|
+
Layer::ResourceProxy.new(client, self, Layer::Resources::Message)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
data/lib/layer/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: layer-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jake Kelly
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -191,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
191
|
version: '0'
|
192
192
|
requirements: []
|
193
193
|
rubyforge_project:
|
194
|
-
rubygems_version: 2.
|
194
|
+
rubygems_version: 2.5.2
|
195
195
|
signing_key:
|
196
196
|
specification_version: 4
|
197
197
|
summary: A ruby toolkit for Layer's Web API's (https://developer.layer.com/docs)
|