yo_client 0.0.2 → 0.0.3
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/.coveralls.yml +1 -0
- data/.travis.yml +2 -0
- data/README.md +29 -6
- data/lib/yo_client.rb +37 -5
- data/lib/yo_client/version.rb +1 -1
- data/spec/spec_helper.rb +5 -1
- data/spec/yo_client_spec.rb +4 -5
- data/yo_client.gemspec +7 -6
- metadata +19 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e3216adee4b8bf0b39ee3d5fb1f502e3f245903
|
4
|
+
data.tar.gz: b8a67600c9402e8869a0710c2f47cca422e8c09a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2cb40dcf33f4ea81b7ac923cc12d1e7f7a836f9a37a70f1c6f2da4a78334e715b6617bf63bb028c3e55e6102160928e6f4263e3830caca79099fae1c2656272
|
7
|
+
data.tar.gz: 308199571d0deadf965f77a205acd041f701b8600190fd97c2c93158c7ff990a90455f84f2a126245c5d339143f55dd00bf0f742f17d8bb865ece9aa33d3d669
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,19 +1,26 @@
|
|
1
|
-
# YoClient
|
1
|
+
# YoClient
|
2
2
|
|
3
3
|
is a Ruby client of [Yo](http://www.justyo.co/).
|
4
|
+
[](https://travis-ci.org/youcune/yo_client)
|
5
|
+
[](https://coveralls.io/r/youcune/yo_client)
|
6
|
+
|
7
|
+
## Requirements
|
8
|
+
|
9
|
+
* Ruby 1.9+ (Tested on Ruby 1.9.3, 2.0.0, 2.1.2)
|
10
|
+
* [Yo API Account](http://dev.justyo.co/)
|
4
11
|
|
5
12
|
## Installation
|
6
13
|
|
7
14
|
Add this line to your application's Gemfile:
|
8
15
|
|
9
16
|
```
|
10
|
-
gem 'yo_client'
|
17
|
+
gem 'yo_client'
|
11
18
|
```
|
12
19
|
|
13
20
|
And then execute:
|
14
21
|
|
15
22
|
```
|
16
|
-
$ bundle
|
23
|
+
$ bundle install
|
17
24
|
```
|
18
25
|
|
19
26
|
## Usage
|
@@ -21,17 +28,24 @@ $ bundle
|
|
21
28
|
```
|
22
29
|
client = YoClient::Client.new(API_TOKEN)
|
23
30
|
|
24
|
-
#
|
31
|
+
# Yo all subscribers
|
25
32
|
client.yoall
|
26
33
|
|
27
|
-
# Yo
|
28
|
-
# Note that USERNAME will be upcased
|
34
|
+
# Yo specific user
|
35
|
+
# Note that USERNAME will be upcased before sending to API
|
29
36
|
client.yo(USERNAME)
|
30
37
|
|
31
38
|
# Count Total Subscribers
|
32
39
|
client.subscribers_count # -> 5
|
33
40
|
```
|
34
41
|
|
42
|
+
### Error Handling
|
43
|
+
|
44
|
+
* `YoClient::ConnectionError` is risen if the connection has failed.
|
45
|
+
* `YoClient::ClientError` is risen if the connection has succeeded but API returned error.
|
46
|
+
|
47
|
+
At the date of 13th July, even if API results in failure, it sometimes behaves as if it succeed. In this case, YoClient cannot tell succeeded or not.
|
48
|
+
|
35
49
|
## Contributing
|
36
50
|
|
37
51
|
1. Fork it ( https://github.com/youcune/yo_client/fork )
|
@@ -40,3 +54,12 @@ client.subscribers_count # -> 5
|
|
40
54
|
4. Push to the branch (`git push origin my-new-feature`)
|
41
55
|
5. Create a new Pull Request
|
42
56
|
|
57
|
+
## Yo the author
|
58
|
+
|
59
|
+
[Yo YOUCUNE](http://justyo.co/YOUCUNE), author of YoClient, if you ...
|
60
|
+
|
61
|
+
* like YoClient
|
62
|
+
* dislike YoClient
|
63
|
+
* have any ideas about YoClient
|
64
|
+
|
65
|
+
Thanks.
|
data/lib/yo_client.rb
CHANGED
@@ -5,7 +5,7 @@ require 'faraday_middleware'
|
|
5
5
|
module YoClient
|
6
6
|
class Client
|
7
7
|
# Constructor
|
8
|
-
# @param [String]
|
8
|
+
# @param [String] api_token Yo API Token
|
9
9
|
def initialize(api_token)
|
10
10
|
@api_token = api_token
|
11
11
|
@faraday = Faraday.new(url: 'http://api.justyo.co') do |faraday|
|
@@ -16,26 +16,58 @@ module YoClient
|
|
16
16
|
end
|
17
17
|
|
18
18
|
# Yo to all subscribers
|
19
|
+
# @return [Boolean] if request has succeed
|
19
20
|
def yoall
|
20
|
-
|
21
|
+
response = connection_wrapper {
|
22
|
+
@faraday.post '/yoall/', token_hash
|
23
|
+
}
|
24
|
+
response.success?
|
21
25
|
end
|
22
26
|
|
23
27
|
# Yo to specific user
|
24
|
-
# @param [String] username
|
28
|
+
# @param [String] username usename to send yo
|
29
|
+
# @return [Boolean] if request has succeed
|
25
30
|
def yo(username)
|
26
|
-
|
31
|
+
response = connection_wrapper {
|
32
|
+
@faraday.post '/yo/', token_hash.merge(username: username.upcase)
|
33
|
+
}
|
34
|
+
response.success?
|
27
35
|
end
|
28
36
|
|
29
37
|
# Get a number of subscribers
|
30
38
|
# @return [Integer] number of subscribers
|
31
39
|
def subscribers_count
|
32
|
-
response =
|
40
|
+
response = connection_wrapper {
|
41
|
+
@faraday.get '/subscribers_count/', token_hash
|
42
|
+
}
|
33
43
|
response.body['result']
|
34
44
|
end
|
35
45
|
|
36
46
|
private
|
47
|
+
# Connect with error handling
|
48
|
+
# @param [Proc] block
|
49
|
+
def connection_wrapper(&block)
|
50
|
+
begin
|
51
|
+
response = block.call
|
52
|
+
raise ClientError.new(response.body['error']) if response.body.has_key?('error')
|
53
|
+
rescue Faraday::ParsingError => e
|
54
|
+
# Has gotten a response, but it is not formatted with JSON
|
55
|
+
raise ClientError.new(e.message)
|
56
|
+
rescue Faraday::ClientError => e
|
57
|
+
# Failed to build a connection
|
58
|
+
raise ConnectionError.new(e.message)
|
59
|
+
end
|
60
|
+
|
61
|
+
response
|
62
|
+
end
|
63
|
+
|
64
|
+
# Returns hash for every request
|
65
|
+
# @return [Hash] hash for every request
|
37
66
|
def token_hash
|
38
67
|
{ api_token: @api_token }
|
39
68
|
end
|
40
69
|
end
|
70
|
+
|
71
|
+
class ConnectionError < StandardError; end
|
72
|
+
class ClientError < StandardError; end
|
41
73
|
end
|
data/lib/yo_client/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
data/spec/yo_client_spec.rb
CHANGED
@@ -18,8 +18,8 @@ describe YoClient do
|
|
18
18
|
it 'hooks POST /yoall/' do
|
19
19
|
expect_any_instance_of(Faraday::Connection).to(
|
20
20
|
receive(:post)
|
21
|
-
|
22
|
-
|
21
|
+
.with('/yoall/', { api_token: 'test' })
|
22
|
+
.and_return(double('yo', body: {}, success?: true))
|
23
23
|
)
|
24
24
|
@client.yoall
|
25
25
|
end
|
@@ -29,8 +29,8 @@ describe YoClient do
|
|
29
29
|
it 'hooks POST /yo/' do
|
30
30
|
expect_any_instance_of(Faraday::Connection).to(
|
31
31
|
receive(:post)
|
32
|
-
|
33
|
-
|
32
|
+
.with('/yo/', { api_token: 'test', username: 'YOUCUNE' })
|
33
|
+
.and_return(double('yo', body: {}, success?: true))
|
34
34
|
)
|
35
35
|
@client.yo('youcune')
|
36
36
|
end
|
@@ -40,7 +40,6 @@ describe YoClient do
|
|
40
40
|
it 'hooks GET /subscribers_count/' do
|
41
41
|
expect_any_instance_of(Faraday::Connection).to(
|
42
42
|
receive(:get)
|
43
|
-
.with('/subscribers_count/', { api_token: 'test' })
|
44
43
|
.and_return(double('subscribers_count', body: { 'result' => 5 }))
|
45
44
|
)
|
46
45
|
expect(@client.subscribers_count).to eq 5
|
data/yo_client.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = YoClient::VERSION
|
9
9
|
spec.authors = ['Yu Nakanishi']
|
10
10
|
spec.email = ['you@nakanishi.email']
|
11
|
-
spec.summary = 'Yo Client
|
12
|
-
spec.description = 'Yo Client
|
11
|
+
spec.summary = 'Yo (http://www.justyo.co/) Ruby Client'
|
12
|
+
spec.description = 'Yo (http://www.justyo.co/) Ruby Client'
|
13
13
|
spec.homepage = 'https://github.com/youcune/yo_client'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
@@ -20,8 +20,9 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
22
22
|
spec.add_development_dependency 'rake'
|
23
|
-
spec.add_development_dependency 'rspec'
|
24
|
-
spec.add_development_dependency '
|
25
|
-
spec.add_dependency 'faraday'
|
26
|
-
spec.add_dependency 'faraday_middleware'
|
23
|
+
spec.add_development_dependency 'rspec', '~> 3.0.0'
|
24
|
+
spec.add_development_dependency 'coveralls'
|
25
|
+
spec.add_dependency 'faraday', '~> 0.9.0'
|
26
|
+
spec.add_dependency 'faraday_middleware', '~> 0.9.0'
|
27
|
+
spec.required_ruby_version = '>= 1.9'
|
27
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yo_client
|
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
|
- Yu Nakanishi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -42,18 +42,18 @@ dependencies:
|
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 3.0.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 3.0.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: coveralls
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -70,37 +70,38 @@ dependencies:
|
|
70
70
|
name: faraday
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 0.9.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 0.9.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: faraday_middleware
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 0.9.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
description: Yo Client
|
96
|
+
version: 0.9.0
|
97
|
+
description: Yo (http://www.justyo.co/) Ruby Client
|
98
98
|
email:
|
99
99
|
- you@nakanishi.email
|
100
100
|
executables: []
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
+
- ".coveralls.yml"
|
104
105
|
- ".gitignore"
|
105
106
|
- ".rspec"
|
106
107
|
- ".travis.yml"
|
@@ -125,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
126
|
requirements:
|
126
127
|
- - ">="
|
127
128
|
- !ruby/object:Gem::Version
|
128
|
-
version: '
|
129
|
+
version: '1.9'
|
129
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
131
|
requirements:
|
131
132
|
- - ">="
|
@@ -136,7 +137,7 @@ rubyforge_project:
|
|
136
137
|
rubygems_version: 2.2.2
|
137
138
|
signing_key:
|
138
139
|
specification_version: 4
|
139
|
-
summary: Yo Client
|
140
|
+
summary: Yo (http://www.justyo.co/) Ruby Client
|
140
141
|
test_files:
|
141
142
|
- spec/spec_helper.rb
|
142
143
|
- spec/yo_client_spec.rb
|