passety 0.0.7 → 0.0.8
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 +1 -1
- data/lib/passety/exceptions/not_authorized_error.rb +4 -0
- data/lib/passety/exceptions/not_found_error.rb +4 -0
- data/lib/passety/exceptions/read_only_error.rb +4 -0
- data/lib/passety/item.rb +15 -2
- data/lib/passety/nested_item.rb +3 -3
- data/lib/passety/photo.rb +11 -0
- data/lib/passety/response.rb +37 -0
- data/lib/passety/thing.rb +4 -0
- data/lib/passety/version.rb +1 -1
- data/lib/passety/wrapper.rb +17 -20
- data/lib/passety.rb +6 -1
- data/spec/wrapper_spec.rb +1 -4
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 133b4abe3e0bff51650678790c3df2c545dc4983
|
4
|
+
data.tar.gz: 5b03dce74c6ed7ca46092edb900b169a1a058eec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26e9498d470b726519e5102578888ee53e06fafd15b61a90f0d1b41ea4d8c48d8f2ea27e5e53564482614b7e6d6850a6db446840eb86b57c0968d55aaaa1a954
|
7
|
+
data.tar.gz: 2b6529739271c288b94b579c20573dbb887bcce37b3edc2f9c69790265247bd5f73a916cba5984069e33d28029d01b84b1d0ff65552f9b490dfcd10ca2ac618e
|
data/Gemfile.lock
CHANGED
data/lib/passety/item.rb
CHANGED
@@ -14,11 +14,11 @@ module Passety
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def update(id, params)
|
17
|
-
@wrapper.perform_request { |c| c.put(url(id),
|
17
|
+
@wrapper.perform_request { |c| c.put(url(id), encode_params(params)) }
|
18
18
|
end
|
19
19
|
|
20
20
|
def create(params)
|
21
|
-
@wrapper.perform_request { |c| c.post(@uri,
|
21
|
+
@wrapper.perform_request { |c| c.post(@uri, encode_params(params)) }
|
22
22
|
end
|
23
23
|
|
24
24
|
def destroy(id)
|
@@ -29,5 +29,18 @@ module Passety
|
|
29
29
|
def url(id)
|
30
30
|
'/' + [ @uri, id ].join('/')
|
31
31
|
end
|
32
|
+
|
33
|
+
def encode_params(params)
|
34
|
+
has_multipart?(params) ? params : JSON.generate(params)
|
35
|
+
end
|
36
|
+
|
37
|
+
def has_multipart?(obj)
|
38
|
+
if obj.respond_to?(:each) && !obj.is_a?(String)
|
39
|
+
(obj.respond_to?(:values) ? obj.values : obj).each do |val|
|
40
|
+
return true if (val.respond_to?(:content_type) || has_multipart?(val))
|
41
|
+
end
|
42
|
+
end
|
43
|
+
false
|
44
|
+
end
|
32
45
|
end
|
33
46
|
end
|
data/lib/passety/nested_item.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Passety
|
2
|
-
class NestedItem
|
2
|
+
class NestedItem < Item
|
3
3
|
def initialize(wrapper, parent, uri)
|
4
4
|
@wrapper = wrapper
|
5
5
|
@parent = parent
|
@@ -15,11 +15,11 @@ module Passety
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def update(pid, id, params)
|
18
|
-
@wrapper.perform_request { |c| c.put(url(pid, id),
|
18
|
+
@wrapper.perform_request { |c| c.put(url(pid, id), encode_params(params)) }
|
19
19
|
end
|
20
20
|
|
21
21
|
def create(pid, params)
|
22
|
-
@wrapper.perform_request { |c| c.post(url(pid),
|
22
|
+
@wrapper.perform_request { |c| c.post(url(pid), encode_params(params)) }
|
23
23
|
end
|
24
24
|
|
25
25
|
def destroy(pid, id)
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Passety
|
2
|
+
class Response
|
3
|
+
attr_reader :response
|
4
|
+
|
5
|
+
def initialize(response)
|
6
|
+
@response = response
|
7
|
+
end
|
8
|
+
|
9
|
+
def content_type
|
10
|
+
((response.headers.values_at('content-type', 'Content-Type').compact.first || '').split(';').first || '').strip
|
11
|
+
end
|
12
|
+
|
13
|
+
def parsed
|
14
|
+
parse_body(response)
|
15
|
+
end
|
16
|
+
|
17
|
+
def headers
|
18
|
+
response.headers
|
19
|
+
end
|
20
|
+
|
21
|
+
def status
|
22
|
+
response.status
|
23
|
+
end
|
24
|
+
|
25
|
+
def body
|
26
|
+
response.body || ''
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def parse_body(response)
|
31
|
+
body = response.env[:body].strip
|
32
|
+
JSON[body]
|
33
|
+
rescue
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/passety/thing.rb
CHANGED
data/lib/passety/version.rb
CHANGED
data/lib/passety/wrapper.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
module Passety
|
2
2
|
class Wrapper
|
3
|
-
def initialize(
|
4
|
-
@token =
|
3
|
+
def initialize(token, options = {})
|
4
|
+
@token = token
|
5
|
+
@raise_errors = options.fetch(:raise_errors, true)
|
5
6
|
end
|
6
7
|
|
7
8
|
def authorized?
|
@@ -24,28 +25,24 @@ module Passety
|
|
24
25
|
perform_request { |c| c.get('/') }
|
25
26
|
end
|
26
27
|
|
27
|
-
def perform_request
|
28
|
-
|
29
|
-
response = yield(connection)
|
30
|
-
parse_body(response)
|
31
|
-
end
|
28
|
+
def perform_request
|
29
|
+
response = Response.new(yield(connection))
|
32
30
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
nil
|
39
|
-
end
|
31
|
+
if @raise_errors
|
32
|
+
raise NotAuthorizedError.new if response.status == 401
|
33
|
+
raise ReadOnlyError.new if response.status == 403
|
34
|
+
raise NotFoundError.new if response.status == 404
|
35
|
+
end
|
40
36
|
|
41
|
-
|
42
|
-
@connection ||= Faraday.new(url: API_URL, headers: { 'Accept' => 'application/json; version=1', 'Authorization' => "Bearer #{@token}" })
|
37
|
+
response
|
43
38
|
end
|
44
39
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
40
|
+
private
|
41
|
+
def connection
|
42
|
+
@connection ||= Faraday.new(url: API_URL, headers: { 'Accept' => 'application/json; version=1', 'Authorization' => "Bearer #{@token}" }) do |f|
|
43
|
+
f.request :multipart
|
44
|
+
f.adapter Faraday.default_adapter
|
45
|
+
end
|
49
46
|
end
|
50
47
|
end
|
51
48
|
end
|
data/lib/passety.rb
CHANGED
@@ -3,6 +3,7 @@ require 'json'
|
|
3
3
|
|
4
4
|
require 'passety/version'
|
5
5
|
require 'passety/wrapper'
|
6
|
+
require 'passety/response'
|
6
7
|
|
7
8
|
require 'passety/item'
|
8
9
|
require 'passety/nested_item'
|
@@ -11,8 +12,12 @@ require 'passety/collections/thing'
|
|
11
12
|
require 'passety/collection'
|
12
13
|
require 'passety/property'
|
13
14
|
require 'passety/thing'
|
15
|
+
require 'passety/photo'
|
16
|
+
|
17
|
+
require 'passety/exceptions/not_found_error'
|
18
|
+
require 'passety/exceptions/read_only_error'
|
19
|
+
require 'passety/exceptions/not_authorized_error'
|
14
20
|
|
15
21
|
module Passety
|
16
|
-
OAUTH_URL = ENV['PASSETY_OAUTH_URL'] || 'https://passety.com'
|
17
22
|
API_URL = ENV['PASSETY_API_URL'] || 'https://api.passety.com/'
|
18
23
|
end
|
data/spec/wrapper_spec.rb
CHANGED
@@ -4,14 +4,11 @@ describe Passety::Wrapper do
|
|
4
4
|
let(:app_id) { 'app_id' }
|
5
5
|
let(:secret) { 'secret' }
|
6
6
|
let(:token) { 'w32vd234231rr' }
|
7
|
-
let(:response) { "{\"token\": \"#{token}\"}" }
|
8
7
|
|
9
|
-
let(:wrapper) { Passety::Wrapper.new(
|
8
|
+
let(:wrapper) { Passety::Wrapper.new(token) }
|
10
9
|
let(:tid) { 'AABAJ' }
|
11
10
|
|
12
11
|
before do
|
13
|
-
stub_request(:post, "#{Passety::OAUTH_URL}/oauth/token").
|
14
|
-
to_return(:status => 200, :body => response, :headers => {})
|
15
12
|
stub_request(:post, "#{Passety::API_URL}/things/")
|
16
13
|
stub_request(:post, "#{Passety::API_URL}/things/#{tid}")
|
17
14
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: passety
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Passety Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -154,9 +154,14 @@ files:
|
|
154
154
|
- lib/passety.rb
|
155
155
|
- lib/passety/collection.rb
|
156
156
|
- lib/passety/collections/thing.rb
|
157
|
+
- lib/passety/exceptions/not_authorized_error.rb
|
158
|
+
- lib/passety/exceptions/not_found_error.rb
|
159
|
+
- lib/passety/exceptions/read_only_error.rb
|
157
160
|
- lib/passety/item.rb
|
158
161
|
- lib/passety/nested_item.rb
|
162
|
+
- lib/passety/photo.rb
|
159
163
|
- lib/passety/property.rb
|
164
|
+
- lib/passety/response.rb
|
160
165
|
- lib/passety/thing.rb
|
161
166
|
- lib/passety/version.rb
|
162
167
|
- lib/passety/wrapper.rb
|