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.
Files changed (90) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +63 -0
  5. data/Rakefile +8 -0
  6. data/lib/singly/account.rb +63 -0
  7. data/lib/singly/api/auth/merge.rb +8 -0
  8. data/lib/singly/api/auth/service/oauth1_apply.rb +13 -0
  9. data/lib/singly/api/auth/service/oauth2_apply.rb +13 -0
  10. data/lib/singly/api/auth/service.rb +23 -0
  11. data/lib/singly/api/auth.rb +163 -0
  12. data/lib/singly/api/friends/group.rb +12 -0
  13. data/lib/singly/api/friends.rb +76 -0
  14. data/lib/singly/api/id.rb +6 -0
  15. data/lib/singly/api/multi.rb +6 -0
  16. data/lib/singly/api/profile.rb +6 -0
  17. data/lib/singly/api/profiles/delete.rb +8 -0
  18. data/lib/singly/api/profiles/delete_profile.rb +8 -0
  19. data/lib/singly/api/profiles/delete_service.rb +8 -0
  20. data/lib/singly/api/profiles/self.rb +8 -0
  21. data/lib/singly/api/profiles/self_update.rb +8 -0
  22. data/lib/singly/api/profiles/service.rb +18 -0
  23. data/lib/singly/api/profiles.rb +178 -0
  24. data/lib/singly/api/proxy/delete.rb +8 -0
  25. data/lib/singly/api/proxy/get.rb +8 -0
  26. data/lib/singly/api/proxy/post.rb +8 -0
  27. data/lib/singly/api/proxy/put.rb +8 -0
  28. data/lib/singly/api/proxy.rb +169 -0
  29. data/lib/singly/api/services/37signals.rb +14 -0
  30. data/lib/singly/api/services/bodymedia.rb +30 -0
  31. data/lib/singly/api/services/dropbox.rb +22 -0
  32. data/lib/singly/api/services/dwolla.rb +14 -0
  33. data/lib/singly/api/services/endpoint.rb +12 -0
  34. data/lib/singly/api/services/facebook.rb +62 -0
  35. data/lib/singly/api/services/fitbit.rb +34 -0
  36. data/lib/singly/api/services/flickr.rb +26 -0
  37. data/lib/singly/api/services/foursquare.rb +34 -0
  38. data/lib/singly/api/services/gcal.rb +18 -0
  39. data/lib/singly/api/services/gcontacts.rb +18 -0
  40. data/lib/singly/api/services/gdocs.rb +18 -0
  41. data/lib/singly/api/services/github.rb +34 -0
  42. data/lib/singly/api/services/gmail.rb +22 -0
  43. data/lib/singly/api/services/google.rb +14 -0
  44. data/lib/singly/api/services/gplus.rb +18 -0
  45. data/lib/singly/api/services/id_endpoint.rb +12 -0
  46. data/lib/singly/api/services/imgur.rb +14 -0
  47. data/lib/singly/api/services/instagram.rb +26 -0
  48. data/lib/singly/api/services/klout.rb +26 -0
  49. data/lib/singly/api/services/linkedin.rb +26 -0
  50. data/lib/singly/api/services/meetup.rb +30 -0
  51. data/lib/singly/api/services/paypal.rb +14 -0
  52. data/lib/singly/api/services/picasa.rb +22 -0
  53. data/lib/singly/api/services/rdio.rb +26 -0
  54. data/lib/singly/api/services/reddit.rb +14 -0
  55. data/lib/singly/api/services/runkeeper.rb +38 -0
  56. data/lib/singly/api/services/service.rb +48 -0
  57. data/lib/singly/api/services/shutterfly.rb +22 -0
  58. data/lib/singly/api/services/soundcloud.rb +14 -0
  59. data/lib/singly/api/services/stocktwits.rb +22 -0
  60. data/lib/singly/api/services/tout.rb +14 -0
  61. data/lib/singly/api/services/tumblr.rb +26 -0
  62. data/lib/singly/api/services/twitter.rb +42 -0
  63. data/lib/singly/api/services/withings.rb +18 -0
  64. data/lib/singly/api/services/wordpress.rb +22 -0
  65. data/lib/singly/api/services/yammer.rb +26 -0
  66. data/lib/singly/api/services/youtube.rb +18 -0
  67. data/lib/singly/api/services/zeo.rb +26 -0
  68. data/lib/singly/api/services.rb +158 -0
  69. data/lib/singly/api/types/type.rb +12 -0
  70. data/lib/singly/api/types.rb +68 -0
  71. data/lib/singly/endpoint.rb +112 -0
  72. data/lib/singly/error.rb +24 -0
  73. data/lib/singly/http.rb +38 -0
  74. data/lib/singly/logger.rb +14 -0
  75. data/lib/singly.rb +37 -0
  76. data/lib/version.rb +3 -0
  77. data/singly.gemspec +25 -0
  78. data/spec/integration/auth_spec.rb +14 -0
  79. data/spec/singly/account_spec.rb +108 -0
  80. data/spec/singly/api/auth_spec.rb +8 -0
  81. data/spec/singly/endpoint_spec.rb +100 -0
  82. data/spec/singly/error_spec.rb +40 -0
  83. data/spec/singly/http_spec.rb +52 -0
  84. data/spec/singly/logger_spec.rb +32 -0
  85. data/spec/singly_spec.rb +53 -0
  86. data/spec/spec_helper.rb +27 -0
  87. data/spec/vcr_cassettes/http_fetch_with_api_error.yml +39 -0
  88. data/spec/vcr_cassettes/http_fetch_with_json_response.yml +102 -0
  89. data/spec/vcr_cassettes/http_fetch_with_non_json_response.yml +39 -0
  90. 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,14 @@
1
+ module Singly
2
+ class Services
3
+ class Google
4
+ include Singly::Endpoint
5
+ include Singly::Services::Service
6
+
7
+ service :google
8
+
9
+ def self(params={})
10
+ service_endpoint(__method__, params)
11
+ end
12
+ end
13
+ end
14
+ 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,14 @@
1
+ module Singly
2
+ class Services
3
+ class Imgur
4
+ include Singly::Endpoint
5
+ include Singly::Services::Service
6
+
7
+ service :imgur
8
+
9
+ def self(params={})
10
+ service_endpoint(__method__, params)
11
+ end
12
+ end
13
+ end
14
+ 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,14 @@
1
+ module Singly
2
+ class Services
3
+ class Paypal
4
+ include Singly::Endpoint
5
+ include Singly::Services::Service
6
+
7
+ service :paypal
8
+
9
+ def self(params={})
10
+ service_endpoint(__method__, params)
11
+ end
12
+ end
13
+ end
14
+ 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,14 @@
1
+ module Singly
2
+ class Services
3
+ class Reddit
4
+ include Singly::Endpoint
5
+ include Singly::Services::Service
6
+
7
+ service :reddit
8
+
9
+ def self(params={})
10
+ service_endpoint(__method__, params)
11
+ end
12
+ end
13
+ end
14
+ 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,14 @@
1
+ module Singly
2
+ class Services
3
+ class Soundcloud
4
+ include Singly::Endpoint
5
+ include Singly::Services::Service
6
+
7
+ service :soundcloud
8
+
9
+ def self(params={})
10
+ service_endpoint(__method__, params)
11
+ end
12
+ end
13
+ end
14
+ 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,14 @@
1
+ module Singly
2
+ class Services
3
+ class Tout
4
+ include Singly::Endpoint
5
+ include Singly::Services::Service
6
+
7
+ service :tout
8
+
9
+ def self(params={})
10
+ service_endpoint(__method__, params)
11
+ end
12
+ end
13
+ end
14
+ 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