pnut 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eeeda2c2c3813e67bd8446308e0688fc7949fa15c2fabe79f36b37f96a7f9c93
4
- data.tar.gz: 2e5372cdd14dde4c2282993558e4e3c7aad38ed4d71e49ebf0a3190e2c1a3872
3
+ metadata.gz: df8ddb8b8afd3f309b107e75077557f702b9aac158517cd27a17fa68c183fd77
4
+ data.tar.gz: 53baea2c228eea35f677943f635a229d320ce9bdc5c9535bbada3f8f29c28131
5
5
  SHA512:
6
- metadata.gz: 4c985932c944530094910d7b143b49bbad0afe29c989ba36c66d53ea15baf7d9ddd692d761ad837c948111b561634f738e292f21dd9593497d52af32083bcee5
7
- data.tar.gz: 94472f946a9caaae19758e332e0308227a28be77b42194f940c4c11081410f4fc85dd7ca53d500c032abcd0e7c307fcfbf21b579b4b1999b7678596a695190d5
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.1.2)
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
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "bundler/setup"
4
4
  require "pnut"
5
+ require "pnut/app_stream"
5
6
 
6
7
  @pnut = Pnut::Client.new(authorization_token: ENV["PNUT_TOKEN"])
7
8
 
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Pnut
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
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.2.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-15 00:00:00.000000000 Z
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