thumbtack 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/thumbtack.rb +6 -0
- data/lib/thumbtack/client.rb +70 -24
- data/lib/thumbtack/note.rb +68 -8
- data/lib/thumbtack/note_summary.rb +66 -11
- data/lib/thumbtack/notes.rb +30 -6
- data/lib/thumbtack/post.rb +82 -8
- data/lib/thumbtack/posts.rb +143 -85
- data/lib/thumbtack/specification.rb +12 -8
- data/lib/thumbtack/suggestion.rb +59 -0
- data/lib/thumbtack/tags.rb +41 -11
- data/lib/thumbtack/types.rb +4 -3
- data/lib/thumbtack/types/boolean.rb +20 -12
- data/lib/thumbtack/types/date.rb +20 -13
- data/lib/thumbtack/types/date_time.rb +21 -14
- data/lib/thumbtack/types/identity.rb +11 -6
- data/lib/thumbtack/types/integer.rb +12 -8
- data/lib/thumbtack/types/md5.rb +12 -9
- data/lib/thumbtack/types/tags.rb +23 -18
- data/lib/thumbtack/types/text.rb +11 -7
- data/lib/thumbtack/types/title.rb +11 -7
- data/lib/thumbtack/types/url.rb +12 -7
- data/lib/thumbtack/user.rb +26 -5
- data/lib/thumbtack/version.rb +1 -1
- data/test/test_helper.rb +4 -10
- data/test/thumbtack/client_test.rb +1 -1
- data/test/thumbtack/integration/client_test.rb +5 -2
- data/test/thumbtack/note_summary_test.rb +1 -1
- data/test/thumbtack/notes_test.rb +1 -7
- data/test/thumbtack/posts_test.rb +6 -13
- data/test/thumbtack/suggestion_test.rb +16 -0
- data/test/thumbtack/tags_test.rb +0 -6
- data/test/thumbtack/user_test.rb +0 -6
- metadata +15 -11
data/lib/thumbtack/user.rb
CHANGED
@@ -1,21 +1,42 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Thumbtack
|
4
|
-
#
|
4
|
+
# Wraps API calls related to users
|
5
5
|
class User
|
6
|
-
#
|
6
|
+
# Initialize a User
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# @param [Client] client
|
9
|
+
# client to communicate with the Pinboard API
|
10
|
+
#
|
11
|
+
# @api private
|
9
12
|
def initialize(client)
|
10
13
|
@client = client
|
11
14
|
end
|
12
15
|
|
13
|
-
#
|
16
|
+
# Fetch the secret RSS key for viewing private feeds
|
17
|
+
#
|
18
|
+
# @example
|
19
|
+
# rss_key = user.secret
|
20
|
+
#
|
21
|
+
# @return [String]
|
22
|
+
#
|
23
|
+
# @api public
|
24
|
+
#
|
25
|
+
# @see https://pinboard.in/api/#user_secret
|
14
26
|
def secret
|
15
27
|
@client.get('/user/secret').fetch('result')
|
16
28
|
end
|
17
29
|
|
18
|
-
#
|
30
|
+
# Fetch the API token for making calls without a password
|
31
|
+
#
|
32
|
+
# @example
|
33
|
+
# api_token = user.api_token
|
34
|
+
#
|
35
|
+
# @return [String]
|
36
|
+
#
|
37
|
+
# @api public
|
38
|
+
#
|
39
|
+
# @see https://pinboard.in/api/#user_api_token
|
19
40
|
def api_token
|
20
41
|
@client.get('/user/api_token').fetch('result')
|
21
42
|
end
|
data/lib/thumbtack/version.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -5,16 +5,10 @@ CodeClimate::TestReporter.start
|
|
5
5
|
require 'thumbtack'
|
6
6
|
require 'minitest/autorun'
|
7
7
|
|
8
|
-
def
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
def username
|
13
|
-
auth_token.split(':').first
|
14
|
-
end
|
15
|
-
|
16
|
-
def token
|
17
|
-
auth_token.split(':').last
|
8
|
+
def mock_client(url, params, response)
|
9
|
+
client = Minitest::Mock.new
|
10
|
+
client.expect(:get, response, [url, params].compact)
|
11
|
+
client
|
18
12
|
end
|
19
13
|
|
20
14
|
include Thumbtack
|
@@ -5,12 +5,15 @@ require 'test_helper'
|
|
5
5
|
module Integration
|
6
6
|
class ClientTest < Minitest::Test
|
7
7
|
def setup
|
8
|
-
|
8
|
+
path = File.expand_path('../../../auth_token.txt', __FILE__)
|
9
|
+
auth_token = File.open(path).read.strip
|
10
|
+
@username, @token = auth_token.split(':')
|
11
|
+
@client = Client.new(@username, @token)
|
9
12
|
end
|
10
13
|
|
11
14
|
def test_requests_return_parsed_json
|
12
15
|
response = @client.get('/user/api_token')
|
13
|
-
assert_equal({ 'result' => token }, response)
|
16
|
+
assert_equal({ 'result' => @token }, response)
|
14
17
|
end
|
15
18
|
|
16
19
|
def test_request_query_parameters
|
@@ -16,7 +16,7 @@ class NoteSummaryTest < Minitest::Test
|
|
16
16
|
|
17
17
|
assert_equal '8e5d6964bb810e0050b0', note.id
|
18
18
|
assert_equal 'StarCraft beta coming this week!', note.title
|
19
|
-
assert_equal '0c9c30f60cadabd31415', note.
|
19
|
+
assert_equal '0c9c30f60cadabd31415', note.digest
|
20
20
|
assert_equal '2010-02-11 03:46:56', note.created_at
|
21
21
|
assert_equal '2010-02-11 03:47:47', note.updated_at
|
22
22
|
assert_equal 19, note.length
|
@@ -3,12 +3,6 @@
|
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
5
|
class NotesTest < Minitest::Test
|
6
|
-
def mock_client(url, params, response)
|
7
|
-
client = Minitest::Mock.new
|
8
|
-
client.expect(:get, response, [url, params].compact)
|
9
|
-
client
|
10
|
-
end
|
11
|
-
|
12
6
|
def test_list
|
13
7
|
client = mock_client('/notes/list',
|
14
8
|
nil,
|
@@ -41,7 +35,7 @@ class NotesTest < Minitest::Test
|
|
41
35
|
assert_equal '8e5d6964bb810e0050b0', result[1].id
|
42
36
|
end
|
43
37
|
|
44
|
-
def
|
38
|
+
def test_get
|
45
39
|
client = mock_client('/notes/8e5d6964bb810e0050b0',
|
46
40
|
nil,
|
47
41
|
{
|
@@ -3,12 +3,6 @@
|
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
5
|
class PostsTest < Minitest::Test
|
6
|
-
def mock_client(url, params, response)
|
7
|
-
client = Minitest::Mock.new
|
8
|
-
client.expect(:get, response, [url, params].compact)
|
9
|
-
client
|
10
|
-
end
|
11
|
-
|
12
6
|
def test_update
|
13
7
|
client = mock_client('/posts/update',
|
14
8
|
nil,
|
@@ -130,16 +124,15 @@ class PostsTest < Minitest::Test
|
|
130
124
|
def test_suggest
|
131
125
|
client = mock_client('/posts/suggest',
|
132
126
|
{url: 'http://blog.com'},
|
133
|
-
|
134
|
-
'popular' => ['blog', 'blogs', 'people'
|
135
|
-
'recommended' => ['blog', 'writing', 'weblog']
|
136
|
-
|
127
|
+
[
|
128
|
+
{ 'popular' => ['blog', 'blogs', 'people'] },
|
129
|
+
{ 'recommended' => ['blog', 'writing', 'weblog'] }
|
130
|
+
])
|
137
131
|
posts = Posts.new(client)
|
138
132
|
response = posts.suggest('http://blog.com')
|
139
133
|
|
140
|
-
assert_equal
|
141
|
-
assert_equal '
|
142
|
-
assert_equal 'weblog', response[:recommended].last
|
134
|
+
assert_equal 'blog', response.popular.first
|
135
|
+
assert_equal 'weblog', response.recommended.last
|
143
136
|
client.verify
|
144
137
|
end
|
145
138
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class NoteSummaryTest < Minitest::Test
|
6
|
+
def test_from_array
|
7
|
+
array = [
|
8
|
+
{ 'popular' => ['ifttt'] },
|
9
|
+
{ 'recommended' => ['ifttt', 'twitter'] }
|
10
|
+
]
|
11
|
+
suggestion = Suggestion.from_array(array)
|
12
|
+
|
13
|
+
assert_equal ['ifttt'], suggestion.popular
|
14
|
+
assert_equal ['ifttt', 'twitter'], suggestion.recommended
|
15
|
+
end
|
16
|
+
end
|
data/test/thumbtack/tags_test.rb
CHANGED
@@ -3,12 +3,6 @@
|
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
5
|
class TagsTest < Minitest::Test
|
6
|
-
def mock_client(url, params, response)
|
7
|
-
client = Minitest::Mock.new
|
8
|
-
client.expect(:get, response, [url, params].compact)
|
9
|
-
client
|
10
|
-
end
|
11
|
-
|
12
6
|
def test_update
|
13
7
|
client = mock_client('/tags/get',
|
14
8
|
nil,
|
data/test/thumbtack/user_test.rb
CHANGED
@@ -3,12 +3,6 @@
|
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
5
|
class UserTest < Minitest::Test
|
6
|
-
def mock_client(url, params, response)
|
7
|
-
client = Minitest::Mock.new
|
8
|
-
client.expect(:get, response, [url, params].compact)
|
9
|
-
client
|
10
|
-
end
|
11
|
-
|
12
6
|
def test_secret
|
13
7
|
client = mock_client('/user/secret',
|
14
8
|
nil,
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thumbtack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nate Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,20 +53,20 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 10.3.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: yard
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.8.7.4
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
69
|
-
description: Thumbtack is a simple
|
68
|
+
version: 0.8.7.4
|
69
|
+
description: Thumbtack is a simple client for the Pinboard API
|
70
70
|
email:
|
71
71
|
- nwjsmith@gmail.com
|
72
72
|
executables: []
|
@@ -81,6 +81,7 @@ files:
|
|
81
81
|
- lib/thumbtack/post.rb
|
82
82
|
- lib/thumbtack/posts.rb
|
83
83
|
- lib/thumbtack/specification.rb
|
84
|
+
- lib/thumbtack/suggestion.rb
|
84
85
|
- lib/thumbtack/tags.rb
|
85
86
|
- lib/thumbtack/types.rb
|
86
87
|
- lib/thumbtack/types/boolean.rb
|
@@ -104,6 +105,7 @@ files:
|
|
104
105
|
- test/thumbtack/post_test.rb
|
105
106
|
- test/thumbtack/posts_test.rb
|
106
107
|
- test/thumbtack/specification_test.rb
|
108
|
+
- test/thumbtack/suggestion_test.rb
|
107
109
|
- test/thumbtack/tags_test.rb
|
108
110
|
- test/thumbtack/types/boolean_test.rb
|
109
111
|
- test/thumbtack/types/date_test.rb
|
@@ -128,7 +130,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
128
130
|
requirements:
|
129
131
|
- - ">="
|
130
132
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
133
|
+
version: 1.9.2
|
132
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
135
|
requirements:
|
134
136
|
- - ">="
|
@@ -150,6 +152,7 @@ test_files:
|
|
150
152
|
- test/thumbtack/post_test.rb
|
151
153
|
- test/thumbtack/posts_test.rb
|
152
154
|
- test/thumbtack/specification_test.rb
|
155
|
+
- test/thumbtack/suggestion_test.rb
|
153
156
|
- test/thumbtack/tags_test.rb
|
154
157
|
- test/thumbtack/types/boolean_test.rb
|
155
158
|
- test/thumbtack/types/date_test.rb
|
@@ -162,3 +165,4 @@ test_files:
|
|
162
165
|
- test/thumbtack/types/title_test.rb
|
163
166
|
- test/thumbtack/types/url_test.rb
|
164
167
|
- test/thumbtack/user_test.rb
|
168
|
+
has_rdoc:
|