pnut 0.2.0 → 0.3.0
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/Gemfile.lock +10 -1
- data/README.md +43 -1
- data/bin/console +1 -0
- data/lib/pnut/app_stream.rb +37 -0
- data/lib/pnut/version.rb +1 -1
- data/pnut.gemspec +2 -0
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df8ddb8b8afd3f309b107e75077557f702b9aac158517cd27a17fa68c183fd77
|
4
|
+
data.tar.gz: 53baea2c228eea35f677943f635a229d320ce9bdc5c9535bbada3f8f29c28131
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5a7ef1a212fe9fa8d6b2aa5b8d97787b5ae0cde08fca84786926a4ea93262a1577c2a9beb39c775d620812d034817c395bdcac7d1b93eae79ac66c2f080081b
|
7
|
+
data.tar.gz: df5548a115f2a0219815c4e015e16dcd6ffefe586776d15ecdc8af80a092a2ea78446e529667600548d062a256b0b14a2b4fc39360fadedfc329c7c508657e53
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pnut (0.
|
4
|
+
pnut (0.2.0)
|
5
5
|
addressable (~> 2.5)
|
6
|
+
eventmachine (~> 1.2)
|
6
7
|
faraday
|
8
|
+
faye-websocket (~> 0.10)
|
7
9
|
webmock (~> 3.4)
|
8
10
|
|
9
11
|
GEM
|
@@ -14,8 +16,12 @@ GEM
|
|
14
16
|
coderay (1.1.2)
|
15
17
|
crack (0.4.3)
|
16
18
|
safe_yaml (~> 1.0.0)
|
19
|
+
eventmachine (1.2.7)
|
17
20
|
faraday (0.15.2)
|
18
21
|
multipart-post (>= 1.2, < 3)
|
22
|
+
faye-websocket (0.10.7)
|
23
|
+
eventmachine (>= 0.12.0)
|
24
|
+
websocket-driver (>= 0.5.1)
|
19
25
|
hashdiff (0.3.7)
|
20
26
|
method_source (0.9.0)
|
21
27
|
minitest (5.11.3)
|
@@ -30,6 +36,9 @@ GEM
|
|
30
36
|
addressable (>= 2.3.6)
|
31
37
|
crack (>= 0.3.2)
|
32
38
|
hashdiff
|
39
|
+
websocket-driver (0.7.0)
|
40
|
+
websocket-extensions (>= 0.1.0)
|
41
|
+
websocket-extensions (0.1.3)
|
33
42
|
|
34
43
|
PLATFORMS
|
35
44
|
ruby
|
data/README.md
CHANGED
@@ -48,7 +48,7 @@ pnut = Pnut::Client.new
|
|
48
48
|
pnut.request("/posts/streams/global")
|
49
49
|
```
|
50
50
|
|
51
|
-
For POST, DELETE, etc. request, the method signature provides the following:
|
51
|
+
For POST, DELETE, etc. request, the method signature provides the following, with the data parameter defaulting to JSON:
|
52
52
|
|
53
53
|
```ruby
|
54
54
|
pnut.request(
|
@@ -60,6 +60,48 @@ pnut.request(
|
|
60
60
|
)
|
61
61
|
```
|
62
62
|
|
63
|
+
As a more thorough example, one can request an AppStream access token (where the endpoint expects form-data instead of JSON) and get the body of the response unparsed as a string like this:
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
pnut.request(
|
67
|
+
"/oauth/access_token",
|
68
|
+
json: false,
|
69
|
+
method: "POST",
|
70
|
+
raw_response: true,
|
71
|
+
data: {
|
72
|
+
client_id: "YOUR_CLIENT_ID",
|
73
|
+
client_secret: "YOUR_CLIENT_SECRET",
|
74
|
+
grant_type: "client_credentials"
|
75
|
+
}
|
76
|
+
)
|
77
|
+
```
|
78
|
+
|
79
|
+
## App Streams
|
80
|
+
|
81
|
+
We support a light abstraction over pnut's App Streams, standing on the shoulders of EventMachine and faye-websocket. Given you already have a valid app access token and created a stream with corresponding stream key, you can start it like this:
|
82
|
+
|
83
|
+
```ruby
|
84
|
+
require "pnut/app_stream"
|
85
|
+
|
86
|
+
Pnut::AppStream.start(access_token: "…", stream_key: "…")
|
87
|
+
```
|
88
|
+
|
89
|
+
Having every stream message printed to STDOUT is not that useful in itself, therefor you can provide a custom handler to react to them yourself:
|
90
|
+
|
91
|
+
```ruby
|
92
|
+
require "pnut/app_stream"
|
93
|
+
|
94
|
+
def my_handler(msg)
|
95
|
+
p JSON.parse(msg)
|
96
|
+
end
|
97
|
+
|
98
|
+
Pnut::AppStream.start(
|
99
|
+
access_token: "…",
|
100
|
+
stream_key: "…",
|
101
|
+
handler: method(my_handler)
|
102
|
+
)
|
103
|
+
```
|
104
|
+
|
63
105
|
## Development
|
64
106
|
|
65
107
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/bin/console
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require "eventmachine"
|
4
|
+
require "faye/websocket"
|
5
|
+
|
6
|
+
module Pnut
|
7
|
+
module AppStream
|
8
|
+
extend self
|
9
|
+
|
10
|
+
def start(access_token: nil, stream_key: nil, handler: method(:puts))
|
11
|
+
EM.run do
|
12
|
+
ws = Faye::WebSocket::Client.new(
|
13
|
+
"wss://stream.pnut.io/v0/app/stream?access_token=#{access_token}&key=#{stream_key}"
|
14
|
+
)
|
15
|
+
|
16
|
+
EM.add_periodic_timer 45 do
|
17
|
+
ws.ping "ping"
|
18
|
+
end
|
19
|
+
|
20
|
+
ws.on :open do |event|
|
21
|
+
p [:open]
|
22
|
+
ws.send("Hello, pnut!")
|
23
|
+
end
|
24
|
+
|
25
|
+
ws.on :message do |event|
|
26
|
+
handler.call(event.data)
|
27
|
+
end
|
28
|
+
|
29
|
+
ws.on :close do |event|
|
30
|
+
p [:close, event.code, event.reason]
|
31
|
+
|
32
|
+
ws = nil
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/pnut/version.rb
CHANGED
data/pnut.gemspec
CHANGED
@@ -25,6 +25,8 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_dependency "faraday"
|
26
26
|
spec.add_dependency "webmock", "~> 3.4"
|
27
27
|
spec.add_dependency "addressable", "~> 2.5"
|
28
|
+
spec.add_dependency "eventmachine", "~> 1.2"
|
29
|
+
spec.add_dependency "faye-websocket", "~> 0.10"
|
28
30
|
|
29
31
|
spec.add_development_dependency "bundler", "~> 1.16"
|
30
32
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pnut
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kai Wood
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-08-
|
11
|
+
date: 2018-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -52,6 +52,34 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.5'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: eventmachine
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.2'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.2'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: faye-websocket
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.10'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.10'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: bundler
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -125,6 +153,7 @@ files:
|
|
125
153
|
- bin/console
|
126
154
|
- bin/setup
|
127
155
|
- lib/pnut.rb
|
156
|
+
- lib/pnut/app_stream.rb
|
128
157
|
- lib/pnut/posts.rb
|
129
158
|
- lib/pnut/version.rb
|
130
159
|
- pnut.gemspec
|