pebble_timeline 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b9f963dfdcfe444374718db5508c0642afb794d0
4
- data.tar.gz: 7f4201115b6e339698823d7c880edc55c2ac6154
3
+ metadata.gz: 39ea03fd9c14fd853cda3e9c23da0633546052c1
4
+ data.tar.gz: 3eadd2e606c098795a77764392bce11122c88a6c
5
5
  SHA512:
6
- metadata.gz: 8466a192ee66f3b3cb3dc90b101fd97742bc15d0ddaeb61a902fa7fe12ccbef495a047958803aadafaac2843c44c51df71dc2e9789d02f3757a48e1e61665eeb
7
- data.tar.gz: eda34eb53e0dd988fddd88dc6a1df9b7b6082c06bd581a8247e0e2e1779310f2da10459a1d0150928d034302a8ec218157ec5486da38f7efa3ed03244fa4f0cf
6
+ metadata.gz: 16dbc4acd357bd4563909c0e51a9a9c4f8f45aa3573c318d2129ddd9ed3568c198b907adfd5df7d9601cf6c1ff353f622ec4365264094cfde84c4f61445da07b
7
+ data.tar.gz: e6f2a2a840b30e3ffe1ad9acbbd445206cbc30c6b1e687466b89199c53b48aaa2cea726ed5b44b93c5a5ca8ef4c4c089012e69cbc9a34a2a35110d75df208417
data/README.md CHANGED
@@ -23,22 +23,23 @@ Or install it yourself as:
23
23
  ```
24
24
  require 'pebble_timeline'
25
25
 
26
- api = PebbleTimeline::API.new(API_KEY)
26
+ PebbleTimeline.configure do |config|
27
+ config.api_key = API_KEY
28
+ end
27
29
 
28
30
  # Shared pins
29
- pins = PebbleTimeline::Pins.new(api)
31
+ pins = PebbleTimeline::Pins.new
30
32
  pins.create(id: "test-1", topics: 'test', time: "2015-06-19T20:00:00Z", layout: { type: 'genericPin', title: 'test 1' })
31
33
  pins.update("test-1", topics: 'test', time: "2015-06-19T20:00:00Z", layout: { type: 'genericPin', title: 'test 1' })
32
34
  pins.delete("test-1")
33
35
 
34
36
  # User pins
35
- user_pins = PebbleTimeline::Pins.new(api, 'user', USER_TOKEN)
37
+ user_pins = PebbleTimeline::Pins.new('user', USER_TOKEN)
36
38
  user_pins.create(id: "test-1", time: "2015-06-12T16:42:00Z", layout: { type: 'genericPin', title: 'test 1' })
37
39
  user_pins.delete("test-1")
38
40
 
39
41
  # Subscriptions
40
- subscriptions = PebbleTimeline::Subscriptions.new(api)
41
- subscriptions.get(USER_TOKEN)
42
+ PebbleTimeline::Subscriptions.get(USER_TOKEN)
42
43
  ```
43
44
 
44
45
  ## Contributing
@@ -1,28 +1,29 @@
1
1
  module PebbleTimeline
2
2
  class API
3
- def initialize(api_key = nil)
4
- raise ConfigMissingAPIKeyError, 'You must provide an API Key' unless PebbleTimeline.config.api_key || api_key
3
+ def initialize
4
+ raise ConfigMissingAPIKeyError, 'You must provide an API Key' unless PebbleTimeline.config.api_key
5
5
 
6
- @api_key = PebbleTimeline.config.api_key || api_key
6
+ @api_key = PebbleTimeline.config.api_key
7
7
  @base_url = PebbleTimeline.config.base_url
8
8
  end
9
9
 
10
- def call(url, http_method, params={})
11
- response = send(http_method, url, params)
10
+ def self.call(url, http_method, params={})
11
+ @api ||= self.new
12
+ response = @api.send(http_method, url, params)
12
13
  response.body
13
14
  end
14
15
 
15
- def connection
16
- @connection ||= Faraday.new(url: @api_url) do |faraday|
17
- faraday.headers['Content-Type'] = 'application/json'
18
- faraday.headers['X-API-Key'] = @api_key
19
- faraday.adapter Faraday.default_adapter
20
- faraday.use PebbleTimeline::Middleware::ErrorDetector
21
- end
22
- end
23
-
24
16
  private
25
17
 
18
+ def connection
19
+ @connection ||= Faraday.new(url: @api_url) do |faraday|
20
+ faraday.headers['Content-Type'] = 'application/json'
21
+ faraday.headers['X-API-Key'] = @api_key
22
+ faraday.adapter Faraday.default_adapter
23
+ faraday.use PebbleTimeline::Middleware::ErrorDetector
24
+ end
25
+ end
26
+
26
27
  def post(path, params)
27
28
  connection.post do |req|
28
29
  req.url resource_url(path)
@@ -1,6 +1,7 @@
1
1
  module PebbleTimeline
2
2
 
3
3
  class APIError < StandardError
4
+ attr_accessor :code
4
5
  end
5
6
 
6
7
  class ConfigError < StandardError
@@ -5,7 +5,15 @@ module PebbleTimeline
5
5
  def call(env)
6
6
  @app.call(env).on_complete do |env|
7
7
  unless (200..299).include? env[:status]
8
- raise APIError, env[:body]
8
+ error = APIError.new env[:body]
9
+
10
+ begin
11
+ response = JSON.load env[:body]
12
+ error = APIError.new response['errorMessage']
13
+ error.code = response['errorCode']
14
+ ensure
15
+ raise error
16
+ end
9
17
  end
10
18
  end
11
19
  end
@@ -1,24 +1,23 @@
1
1
  module PebbleTimeline
2
2
  class Pins
3
- def initialize(master, scope = 'shared', user_token = nil)
4
- @master = master
3
+ def initialize(scope = 'shared', user_token = nil)
5
4
  @scope = scope
6
5
  @user_token = user_token if @scope == 'user'
7
6
  end
8
7
 
9
8
  def create(params = {})
10
9
  params.merge!(user_token: @user_token) if @user_token
11
- @master.call("#{@scope}/pins/#{params[:id]}", :put, params)
10
+ API.call("#{@scope}/pins/#{params[:id]}", :put, params)
12
11
  end
13
12
 
14
13
  def update(id, params = {})
15
14
  params.merge!(user_token: @user_token) if @user_token
16
- @master.call("#{@scope}/pins/#{id}.json", :put, params)
15
+ API.call("#{@scope}/pins/#{id}.json", :put, params)
17
16
  end
18
17
 
19
18
  def delete(id, params = {})
20
19
  params.merge!(user_token: @user_token) if @user_token
21
- @master.call("#{@scope}/pins/#{id}", :delete, params)
20
+ API.call("#{@scope}/pins/#{id}", :delete, params)
22
21
  end
23
22
  end
24
23
  end
@@ -1,11 +1,7 @@
1
1
  module PebbleTimeline
2
2
  class Subscriptions
3
- def initialize(master)
4
- @master = master
5
- end
6
-
7
- def get(user_token)
8
- JSON.load @master.call("user/subscriptions", :get, { user_token: user_token })
3
+ def self.get(user_token)
4
+ JSON.load API.call("user/subscriptions", :get, { user_token: user_token })
9
5
  end
10
6
  end
11
7
  end
@@ -1,3 +1,3 @@
1
1
  module PebbleTimeline
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pebble_timeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Salim Hbeiliny
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-19 00:00:00.000000000 Z
11
+ date: 2015-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport