zenbe-flareshow 0.2.1 → 0.2.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.
- data/Flareshow.gemspec +2 -1
- data/README.txt +62 -1
- data/TODO +1 -0
- data/VERSION +1 -1
- data/lib/cache.rb +20 -10
- data/lib/comment.rb +2 -0
- data/lib/file_attachment.rb +2 -0
- data/lib/flareshow.rb +1 -0
- data/lib/flow.rb +2 -2
- data/lib/post.rb +4 -2
- data/lib/resource.rb +6 -4
- data/lib/searchable.rb +9 -0
- metadata +2 -1
data/Flareshow.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{flareshow}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Will Bailey"]
|
@@ -34,6 +34,7 @@ Gem::Specification.new do |s|
|
|
34
34
|
"lib/membership.rb",
|
35
35
|
"lib/post.rb",
|
36
36
|
"lib/resource.rb",
|
37
|
+
"lib/searchable.rb",
|
37
38
|
"lib/server.rb",
|
38
39
|
"lib/service.rb",
|
39
40
|
"lib/user.rb",
|
data/README.txt
CHANGED
@@ -6,4 +6,65 @@
|
|
6
6
|
\ \_\ /\____\ \__/.\_\\ \_\\ \____\/\____/ \ \_\ \_\ \____/\ \___x___/'
|
7
7
|
\/_/ \/____/\/__/\/_/ \/_/ \/____/\/___/ \/_/\/_/\/___/ \/__//__/
|
8
8
|
|
9
|
-
~ Client Library For the Zenbe Shareflow API
|
9
|
+
~ Client Library For the Zenbe Shareflow API
|
10
|
+
|
11
|
+
== OVERVIEW
|
12
|
+
|
13
|
+
Flareshow provides a ruby wrapper around the shareflow json rpc wire protocol. For more information about the Shareflow API see:
|
14
|
+
<Shareflow API Docs Link>
|
15
|
+
|
16
|
+
== AUTHENTICATION
|
17
|
+
|
18
|
+
All actions in Flareshow require authenticationFlareshow can automatically authenticate you against your shareflow server. Just create a YAML formatted .flareshowrc file in your home directory with the following keys
|
19
|
+
|
20
|
+
subdomain : demo.zenbe.com
|
21
|
+
login : demo
|
22
|
+
password : password
|
23
|
+
|
24
|
+
To authenticate manually do the following:
|
25
|
+
|
26
|
+
Flareshow::Service.configure(<subdomain>)
|
27
|
+
Flareshow.authenticate(<login>, <password>)
|
28
|
+
|
29
|
+
== USAGE
|
30
|
+
|
31
|
+
Once you've authenticated you can choose to use either interact directly with the Flareshow::Service or use the Flareshow::Resource domain models which encapsulate the domain logic of Shareflow providing a friendlier development environment.
|
32
|
+
|
33
|
+
== EXAMPLES
|
34
|
+
|
35
|
+
= Reading Posts
|
36
|
+
|
37
|
+
# the following code will read all posts on the server in a loop
|
38
|
+
|
39
|
+
per_request = 30 # 30 is the default returned by the server -- max is 100
|
40
|
+
results = []
|
41
|
+
loop do
|
42
|
+
offset ||= 0
|
43
|
+
results << Post.find(:offset => offset, :limit => per_request)
|
44
|
+
offset += per_request
|
45
|
+
end
|
46
|
+
|
47
|
+
= Upload a file to a Post
|
48
|
+
p=Post.new()
|
49
|
+
p.save
|
50
|
+
p.create_file("/path/to/your/file")
|
51
|
+
|
52
|
+
= Searching for a post
|
53
|
+
|
54
|
+
# posts, files, comments include the searchable mixin
|
55
|
+
# and can be searched using full text search capabilities
|
56
|
+
# on the server
|
57
|
+
results = Post.search("some keywords")
|
58
|
+
|
59
|
+
= deleting a post or comment
|
60
|
+
Post.find(:limit => 1).first.destroy
|
61
|
+
Comment.find(:limit => 1).first.destroy
|
62
|
+
|
63
|
+
= Renaming a flow
|
64
|
+
f=Flow.find_by_name('test')
|
65
|
+
f.name = 'a different name'
|
66
|
+
f.save
|
67
|
+
|
68
|
+
== Caching
|
69
|
+
|
70
|
+
If you choose to use the Flareshow::Resource objects to manage requests through the Service a caching layer is built in. Currently this cache is in memory only; however, the API is designed to allow developers to plugin alternate caches as desired. For example if you wanted to persist shareflow data in a sql lite database you just need to create a SQLLite cache class implementing the Flareshow cache interface.
|
data/TODO
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/lib/cache.rb
CHANGED
@@ -7,20 +7,25 @@ class Flareshow::CacheManager
|
|
7
7
|
def assimilate_resources(data)
|
8
8
|
# process each resource key and generate a new object
|
9
9
|
# or merge the object data with an existing object
|
10
|
-
data.
|
10
|
+
data.inject({}) do |memo,resource_pair|
|
11
11
|
resource_key, resources = resource_pair[0], resource_pair[1]
|
12
|
+
|
13
|
+
fs_resource_array = memo[resource_key] ||= []
|
14
|
+
|
12
15
|
klass = Kernel.const_get(Flareshow::ResourceToClassMap[resource_key])
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
if klass
|
17
|
+
resources.each do |resource_data|
|
18
|
+
item = cache.get_resource(resource_key, resource_data["id"])
|
19
|
+
if item
|
20
|
+
item.update(resource_data, :server)
|
21
|
+
else
|
22
|
+
item = klass.new(resource_data, :server)
|
23
|
+
end
|
24
|
+
cache.set_resource(resource_key, item.id, item)
|
25
|
+
fs_resource_array << item
|
20
26
|
end
|
21
|
-
cache.set_resource(resource_key, item.id, item)
|
22
|
-
item
|
23
27
|
end
|
28
|
+
memo
|
24
29
|
end
|
25
30
|
end
|
26
31
|
|
@@ -47,6 +52,10 @@ class Flareshow::Cache
|
|
47
52
|
resource_cache(resource_key)[id] = object
|
48
53
|
end
|
49
54
|
|
55
|
+
def list_resource(resource_key)
|
56
|
+
resource_cache(resource_key)
|
57
|
+
end
|
58
|
+
|
50
59
|
# remove all cached objects
|
51
60
|
def flush
|
52
61
|
data = {}
|
@@ -58,6 +67,7 @@ class Flareshow::Cache
|
|
58
67
|
end
|
59
68
|
|
60
69
|
private
|
70
|
+
# data store for the cache
|
61
71
|
def data
|
62
72
|
@cache ||= {}
|
63
73
|
end
|
data/lib/comment.rb
CHANGED
data/lib/file_attachment.rb
CHANGED
data/lib/flareshow.rb
CHANGED
data/lib/flow.rb
CHANGED
@@ -13,9 +13,9 @@ class Flow < Flareshow::Resource
|
|
13
13
|
# permalink for this flow
|
14
14
|
def permalink(mobile=false)
|
15
15
|
if mobile
|
16
|
-
"http://#{Flareshow::
|
16
|
+
"http://#{Flareshow::Service.server.host}/#{Flareshow::Service.server.domain}/shareflow/mobile/flows/#{id}"
|
17
17
|
else
|
18
|
-
"http://#{Flareshow::
|
18
|
+
"http://#{Flareshow::Service.server.host}/#{Flareshow::Service.server.domain}/shareflow/c/#{id}"
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
data/lib/post.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
class Post < Flareshow::Resource
|
2
2
|
|
3
|
+
extend Flareshow::Searchable
|
4
|
+
|
3
5
|
# permalink to this post
|
4
6
|
def permalink(mobile=false)
|
5
7
|
if mobile
|
6
|
-
"http://#{Flareshow::
|
8
|
+
"http://#{Flareshow::Service.server.host}/#{Flareshow::Service.server.domain}/shareflow/mobile/post/#{id}"
|
7
9
|
else
|
8
|
-
"http://#{Flareshow::
|
10
|
+
"http://#{Flareshow::Service.server.host}/#{Flareshow::Service.server.domain}/shareflow/p/#{id}"
|
9
11
|
end
|
10
12
|
end
|
11
13
|
|
data/lib/resource.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
class Flareshow::Resource
|
2
2
|
|
3
3
|
class << self
|
4
|
+
attr_accessor :read_only, :attr_accessible
|
5
|
+
|
4
6
|
# return the resource key for this resource
|
5
7
|
def resource_key
|
6
8
|
Flareshow::ClassToResourceMap[self.name]
|
@@ -26,10 +28,9 @@ class Flareshow::Resource
|
|
26
28
|
# the keyed resources for the model performing the query
|
27
29
|
def find(params={})
|
28
30
|
response = Flareshow::Service.query({resource_key => params})
|
29
|
-
cache_response(response)
|
30
|
-
(response["resources"] || {})[resource_key]
|
31
|
+
(cache_response(response) || {})[resource_key]
|
31
32
|
end
|
32
|
-
|
33
|
+
|
33
34
|
# create a resource local and sync it to the server
|
34
35
|
def create(params={})
|
35
36
|
new(params).save
|
@@ -80,7 +81,7 @@ class Flareshow::Resource
|
|
80
81
|
|
81
82
|
# destroy the resource on the server
|
82
83
|
def destroy
|
83
|
-
response =
|
84
|
+
response = Flareshow::Service.commit({resource_key => [{"id" => id, "_removed" => true}]})
|
84
85
|
cache_response(response)
|
85
86
|
mark_destroyed!
|
86
87
|
self
|
@@ -93,6 +94,7 @@ class Flareshow::Resource
|
|
93
94
|
|
94
95
|
private
|
95
96
|
|
97
|
+
# clear the element of the cache
|
96
98
|
def mark_destroyed!
|
97
99
|
self.freeze
|
98
100
|
self._removed=true
|
data/lib/searchable.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zenbe-flareshow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Will Bailey
|
@@ -99,6 +99,7 @@ files:
|
|
99
99
|
- lib/membership.rb
|
100
100
|
- lib/post.rb
|
101
101
|
- lib/resource.rb
|
102
|
+
- lib/searchable.rb
|
102
103
|
- lib/server.rb
|
103
104
|
- lib/service.rb
|
104
105
|
- lib/user.rb
|