singly 0.1.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.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +63 -0
- data/Rakefile +8 -0
- data/lib/singly/account.rb +63 -0
- data/lib/singly/api/auth/merge.rb +8 -0
- data/lib/singly/api/auth/service/oauth1_apply.rb +13 -0
- data/lib/singly/api/auth/service/oauth2_apply.rb +13 -0
- data/lib/singly/api/auth/service.rb +23 -0
- data/lib/singly/api/auth.rb +163 -0
- data/lib/singly/api/friends/group.rb +12 -0
- data/lib/singly/api/friends.rb +76 -0
- data/lib/singly/api/id.rb +6 -0
- data/lib/singly/api/multi.rb +6 -0
- data/lib/singly/api/profile.rb +6 -0
- data/lib/singly/api/profiles/delete.rb +8 -0
- data/lib/singly/api/profiles/delete_profile.rb +8 -0
- data/lib/singly/api/profiles/delete_service.rb +8 -0
- data/lib/singly/api/profiles/self.rb +8 -0
- data/lib/singly/api/profiles/self_update.rb +8 -0
- data/lib/singly/api/profiles/service.rb +18 -0
- data/lib/singly/api/profiles.rb +178 -0
- data/lib/singly/api/proxy/delete.rb +8 -0
- data/lib/singly/api/proxy/get.rb +8 -0
- data/lib/singly/api/proxy/post.rb +8 -0
- data/lib/singly/api/proxy/put.rb +8 -0
- data/lib/singly/api/proxy.rb +169 -0
- data/lib/singly/api/services/37signals.rb +14 -0
- data/lib/singly/api/services/bodymedia.rb +30 -0
- data/lib/singly/api/services/dropbox.rb +22 -0
- data/lib/singly/api/services/dwolla.rb +14 -0
- data/lib/singly/api/services/endpoint.rb +12 -0
- data/lib/singly/api/services/facebook.rb +62 -0
- data/lib/singly/api/services/fitbit.rb +34 -0
- data/lib/singly/api/services/flickr.rb +26 -0
- data/lib/singly/api/services/foursquare.rb +34 -0
- data/lib/singly/api/services/gcal.rb +18 -0
- data/lib/singly/api/services/gcontacts.rb +18 -0
- data/lib/singly/api/services/gdocs.rb +18 -0
- data/lib/singly/api/services/github.rb +34 -0
- data/lib/singly/api/services/gmail.rb +22 -0
- data/lib/singly/api/services/google.rb +14 -0
- data/lib/singly/api/services/gplus.rb +18 -0
- data/lib/singly/api/services/id_endpoint.rb +12 -0
- data/lib/singly/api/services/imgur.rb +14 -0
- data/lib/singly/api/services/instagram.rb +26 -0
- data/lib/singly/api/services/klout.rb +26 -0
- data/lib/singly/api/services/linkedin.rb +26 -0
- data/lib/singly/api/services/meetup.rb +30 -0
- data/lib/singly/api/services/paypal.rb +14 -0
- data/lib/singly/api/services/picasa.rb +22 -0
- data/lib/singly/api/services/rdio.rb +26 -0
- data/lib/singly/api/services/reddit.rb +14 -0
- data/lib/singly/api/services/runkeeper.rb +38 -0
- data/lib/singly/api/services/service.rb +48 -0
- data/lib/singly/api/services/shutterfly.rb +22 -0
- data/lib/singly/api/services/soundcloud.rb +14 -0
- data/lib/singly/api/services/stocktwits.rb +22 -0
- data/lib/singly/api/services/tout.rb +14 -0
- data/lib/singly/api/services/tumblr.rb +26 -0
- data/lib/singly/api/services/twitter.rb +42 -0
- data/lib/singly/api/services/withings.rb +18 -0
- data/lib/singly/api/services/wordpress.rb +22 -0
- data/lib/singly/api/services/yammer.rb +26 -0
- data/lib/singly/api/services/youtube.rb +18 -0
- data/lib/singly/api/services/zeo.rb +26 -0
- data/lib/singly/api/services.rb +158 -0
- data/lib/singly/api/types/type.rb +12 -0
- data/lib/singly/api/types.rb +68 -0
- data/lib/singly/endpoint.rb +112 -0
- data/lib/singly/error.rb +24 -0
- data/lib/singly/http.rb +38 -0
- data/lib/singly/logger.rb +14 -0
- data/lib/singly.rb +37 -0
- data/lib/version.rb +3 -0
- data/singly.gemspec +25 -0
- data/spec/integration/auth_spec.rb +14 -0
- data/spec/singly/account_spec.rb +108 -0
- data/spec/singly/api/auth_spec.rb +8 -0
- data/spec/singly/endpoint_spec.rb +100 -0
- data/spec/singly/error_spec.rb +40 -0
- data/spec/singly/http_spec.rb +52 -0
- data/spec/singly/logger_spec.rb +32 -0
- data/spec/singly_spec.rb +53 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/vcr_cassettes/http_fetch_with_api_error.yml +39 -0
- data/spec/vcr_cassettes/http_fetch_with_json_response.yml +102 -0
- data/spec/vcr_cassettes/http_fetch_with_non_json_response.yml +39 -0
- metadata +216 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Github
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :github
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def events(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def received(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def repos(params={})
|
22
|
+
service_endpoint(__method__, params)
|
23
|
+
end
|
24
|
+
|
25
|
+
def following(params={})
|
26
|
+
service_endpoint(__method__, params)
|
27
|
+
end
|
28
|
+
|
29
|
+
def followers(params={})
|
30
|
+
service_endpoint(__method__, params)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Gmail
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :gmail
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def headers(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def contacts(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Gplus
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :gplus
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def activities(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class IdEndpoint
|
4
|
+
include Singly::Endpoint
|
5
|
+
|
6
|
+
endpoint :get, "/services/:service/:endpoint/:id", {
|
7
|
+
required: [:access_token],
|
8
|
+
optional: [:id, :fields, :limit, :since, :until, :near, :within, :q, :participants, :map]
|
9
|
+
}
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Instagram
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :instagram
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def follows(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def feed(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def media(params={})
|
22
|
+
service_endpoint(__method__, params)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Klout
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :klout
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def influencers(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def influencees(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def topics(params={})
|
22
|
+
service_endpoint(__method__, params)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Linkedin
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :linkedin
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def connections(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def network(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def updates(params={})
|
22
|
+
service_endpoint(__method__, params)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Meetup
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :meetup
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def checkins(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def events(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def groups(params={})
|
22
|
+
service_endpoint(__method__, params)
|
23
|
+
end
|
24
|
+
|
25
|
+
def photos(params={})
|
26
|
+
service_endpoint(__method__, params)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Picasa
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :picasa
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def albums(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def photos(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Rdio
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :rdio
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def activity(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def collection(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def following(params={})
|
22
|
+
service_endpoint(__method__, params)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Runkeeper
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :runkeeper
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def background_activities(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def fitness_activities(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def street_team(params={})
|
22
|
+
service_endpoint(__method__, params)
|
23
|
+
end
|
24
|
+
|
25
|
+
def strength_activities(params={})
|
26
|
+
service_endpoint(__method__, params)
|
27
|
+
end
|
28
|
+
|
29
|
+
def records(params={})
|
30
|
+
service_endpoint(__method__, params)
|
31
|
+
end
|
32
|
+
|
33
|
+
def photos(params={})
|
34
|
+
service_endpoint(__method__, params)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
module Service
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def service_endpoint(endpoint_name, params)
|
8
|
+
params ||= {}
|
9
|
+
endpoint_type = params.has_key?(:id) ? Singly::Services::IdEndpoint : Singly::Services::Endpoint
|
10
|
+
endpoint_type.new(creds.merge(params.merge({
|
11
|
+
service: self.class.service_name,
|
12
|
+
endpoint: endpoint_name.to_s
|
13
|
+
})))
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.included(base)
|
17
|
+
base.extend ClassMethods
|
18
|
+
end
|
19
|
+
|
20
|
+
# service :facebook, [:albums, :photos]
|
21
|
+
module ClassMethods
|
22
|
+
def type
|
23
|
+
:get
|
24
|
+
end
|
25
|
+
|
26
|
+
def path
|
27
|
+
"/services/:service"
|
28
|
+
end
|
29
|
+
|
30
|
+
def required_params
|
31
|
+
[:access_token]
|
32
|
+
end
|
33
|
+
|
34
|
+
def optional_params
|
35
|
+
[]
|
36
|
+
end
|
37
|
+
|
38
|
+
def service_name
|
39
|
+
@service || ":service"
|
40
|
+
end
|
41
|
+
|
42
|
+
def service(service)
|
43
|
+
@service = service
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Shutterfly
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :shutterfly
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def albums(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def photos(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Stocktwits
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :stocktwits
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def followers(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def following(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Tumblr
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :tumblr
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def dashboard(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def following(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def posts(params={})
|
22
|
+
service_endpoint(__method__, params)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Twitter
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :twitter
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def direct_messages(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def favorites(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def following(params={})
|
22
|
+
service_endpoint(__method__, params)
|
23
|
+
end
|
24
|
+
|
25
|
+
def friends(params={})
|
26
|
+
service_endpoint(__method__, params)
|
27
|
+
end
|
28
|
+
|
29
|
+
def mentions(params={})
|
30
|
+
service_endpoint(__method__, params)
|
31
|
+
end
|
32
|
+
|
33
|
+
def tweets(params={})
|
34
|
+
service_endpoint(__method__, params)
|
35
|
+
end
|
36
|
+
|
37
|
+
def timeline(params={})
|
38
|
+
service_endpoint(__method__, params)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Withings
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :withings
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def measures(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Wordpress
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :wordpress
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def feed(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def posts(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Yammer
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :yammer
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def groups(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def messages(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def users(params={})
|
22
|
+
service_endpoint(__method__, params)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Youtube
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :youtube
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def uploads(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Singly
|
2
|
+
class Services
|
3
|
+
class Zeo
|
4
|
+
include Singly::Endpoint
|
5
|
+
include Singly::Services::Service
|
6
|
+
|
7
|
+
service :zeo
|
8
|
+
|
9
|
+
def self(params={})
|
10
|
+
service_endpoint(__method__, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def sleep_stats(params={})
|
14
|
+
service_endpoint(__method__, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def sleep_records(params={})
|
18
|
+
service_endpoint(__method__, params)
|
19
|
+
end
|
20
|
+
|
21
|
+
def zq_scores(params={})
|
22
|
+
service_endpoint(__method__, params)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|