shared_count_api 0.0.1 → 0.2.0
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/README.md +6 -0
- data/lib/shared_count_api.rb +39 -9
- data/lib/shared_count_api/version.rb +1 -1
- data/spec/shared_count_api_spec.rb +4 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4138b75b31c0c1e3b2dd6cfb0ad3e7f9dbbf9e1
|
4
|
+
data.tar.gz: 3b625891db51b88d2a857924e58974fdaa35dcee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 83d078a5b1451bf937afe4bad7536fa16bc1de005c96a3304528caf60d1f8772f9f4f5aa6b793eae9f795c14bf71a47bdf3a2360d56cd015dc361bb1aff072c1
|
7
|
+
data.tar.gz: f90bf5656d3d68df23a7ebe91cbee86f05be17e028d5592ff73593bfd2bbfac82f3d1020f388d9e35daedd139badffebc922433d1812dcce01493e8dff426beb
|
data/README.md
CHANGED
@@ -20,6 +20,12 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
```ruby
|
22
22
|
require "shared_count_api"
|
23
|
+
|
24
|
+
SharedCountApi.configure do |config|
|
25
|
+
config.apikey = 'my-api-key'
|
26
|
+
config.url = 'my-dedicated-url' # only use if you have a dedicated url plan
|
27
|
+
end
|
28
|
+
|
23
29
|
client = SharedCountApi::Client.new("http://slashdot.org")
|
24
30
|
client.twitter # => 24381
|
25
31
|
client.facebook_share_count # => 2705
|
data/lib/shared_count_api.rb
CHANGED
@@ -12,6 +12,26 @@ module SharedCountApi
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
class << self
|
16
|
+
attr_accessor :apikey, :url
|
17
|
+
|
18
|
+
# config/initializers/shared_count_api.rb (for instance)
|
19
|
+
#
|
20
|
+
# SharedCountApi.configure do |config|
|
21
|
+
# config.apikey = 'my-api-key'
|
22
|
+
# config.url = 'my-dedicated-url' # only use if you have a dedicated url plan
|
23
|
+
# end
|
24
|
+
#
|
25
|
+
# elsewhere
|
26
|
+
#
|
27
|
+
# client = SharedCountApi::Client.new
|
28
|
+
def configure
|
29
|
+
yield self
|
30
|
+
true
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
15
35
|
INVALID_URL = Error.new("invalid_url", "Not a valid URL.")
|
16
36
|
|
17
37
|
class Client
|
@@ -19,7 +39,13 @@ module SharedCountApi
|
|
19
39
|
HTTPS_ENDPOINT = "https://sharedcount.appspot.com/".freeze
|
20
40
|
|
21
41
|
def initialize(url, use_ssl = false)
|
22
|
-
@url, @use_ssl = url, use_ssl
|
42
|
+
@url, @use_ssl = URI.escape(url), use_ssl
|
43
|
+
|
44
|
+
if SharedCountApi.url
|
45
|
+
@endpoint = SharedCountApi.url
|
46
|
+
else
|
47
|
+
@endpoint = @use_ssl ? HTTPS_ENDPOINT : HTTP_ENDPOINT
|
48
|
+
end
|
23
49
|
end
|
24
50
|
|
25
51
|
def stumble_upon
|
@@ -66,17 +92,15 @@ module SharedCountApi
|
|
66
92
|
response["LinkedIn"]
|
67
93
|
end
|
68
94
|
|
69
|
-
private
|
70
|
-
|
71
|
-
def facebook_metrics
|
72
|
-
@facebook_metrics ||= response["Facebook"].is_a?(Hash) ? response["Facebook"] : Hash.new(0)
|
73
|
-
end
|
74
|
-
|
75
95
|
def response
|
76
96
|
@response ||= begin
|
77
|
-
endpoint = @use_ssl ? HTTPS_ENDPOINT : HTTP_ENDPOINT
|
78
97
|
begin
|
79
|
-
uri =
|
98
|
+
uri = if SharedCountApi.apikey
|
99
|
+
URI("#{@endpoint}?url=#{@url}&apikey=#{SharedCountApi.apikey}")
|
100
|
+
else
|
101
|
+
URI("#{@endpoint}?url=#{@url}")
|
102
|
+
end
|
103
|
+
|
80
104
|
res = Net::HTTP.get_response(uri)
|
81
105
|
|
82
106
|
case res
|
@@ -91,5 +115,11 @@ module SharedCountApi
|
|
91
115
|
end
|
92
116
|
end
|
93
117
|
end
|
118
|
+
|
119
|
+
private
|
120
|
+
|
121
|
+
def facebook_metrics
|
122
|
+
@facebook_metrics ||= response["Facebook"].is_a?(Hash) ? response["Facebook"] : Hash.new(0)
|
123
|
+
end
|
94
124
|
end
|
95
125
|
end
|
@@ -113,6 +113,10 @@ describe SharedCountApi::Client do
|
|
113
113
|
it "includes the number of LinkedIn shares" do
|
114
114
|
subject.linked_in.must_equal body[:LinkedIn]
|
115
115
|
end
|
116
|
+
|
117
|
+
it "exposes the entire response hash" do
|
118
|
+
subject.response.must_be_instance_of Hash
|
119
|
+
end
|
116
120
|
end
|
117
121
|
end
|
118
122
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shared_count_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cristian Rasch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
89
|
version: '0'
|
90
90
|
requirements: []
|
91
91
|
rubyforge_project:
|
92
|
-
rubygems_version: 2.0.
|
92
|
+
rubygems_version: 2.0.14
|
93
93
|
signing_key:
|
94
94
|
specification_version: 4
|
95
95
|
summary: This library wraps the SharedCount API exposing its data through POROs (Plain
|