yo-ruby 0.1.4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +5 -13
  2. data/lib/yo-ruby.rb +2 -129
  3. metadata +24 -10
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZGIxNWZjNDYyZmNmZjA5NDYyMDgxNTNiODU1Zjg4ODM1OTRlOWYyZA==
5
- data.tar.gz: !binary |-
6
- NDk2NDRlNzMxODEwMGEyZjY4ZTE3MmE4MGY4NzI4YmFhNTY4MWI2NQ==
2
+ SHA1:
3
+ metadata.gz: e8ba7173822f7c52da2119bd76c5be363eeb5aa7
4
+ data.tar.gz: 745949c97acc32f0a8c4f1a392c4cad17f37d243
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZTI1NzkyZjFlZjkwYTkyY2U0ZWUzZjU2OGY0YmNhNzAzOWM0N2ZlM2FiODZi
10
- ZjliODU1NzhlMTNjNzYxNTIyNmZjMDc0ZmMwMDExMjA5NTJhNzY3ZWQ1NmUx
11
- MzcyZjU4OWI5MThiMDg3MjlkN2FhMmZkZGNiYWQ1ZTUwNTE0MjQ=
12
- data.tar.gz: !binary |-
13
- ZWU4OGY0ODljMjk2OGZmMzM3N2E1MWFiMjg0MzYzMTYzYjQ5MzlkMjAzYTJk
14
- MGRjMTY0ZTFmNzY0NTBjNGFmMzkzOWFjZWY2MmFhYTE1ODRkNzE2ZDJiNWVl
15
- N2I2ZTUzZTUwM2Y1OTU4ZjM0NjhmMmQ2NDRjMWFkNmQxYjRjMDY=
6
+ metadata.gz: 2598856d69f991de535887346501b53dc6c8187b2971ca3a75d0936ed6822fdc069880e6e631afcd4b3e14f91b4549e01165ba2f38317ff0411ac5a78c9981b7
7
+ data.tar.gz: 46405021e85f236a8d1557b480cb58df628ab4549929da38f4e0d26695a0d13e5561792a70ffecd7f5cbd2dce9dba3b05129bafe054748218321495bfa12e79a
@@ -1,129 +1,2 @@
1
- require 'singleton'
2
- require 'httparty'
3
-
4
- class YoException < Exception
5
- end
6
-
7
- class YoUserNotFound < YoException
8
- end
9
-
10
- class YoRateLimitExceeded < YoException
11
- end
12
-
13
- class Yo
14
- include Singleton
15
- include HTTParty
16
-
17
- base_uri "api.justyo.co"
18
- format :json
19
-
20
- attr_writer :api_key
21
-
22
- # Authentication stuffs.
23
- def self.api_key
24
- @api_key
25
- end
26
-
27
- def self.api_key?
28
- not @api_key.nil?
29
- end
30
-
31
- def self.api_key=(api_key)
32
- if api_key.to_s.length != 36 or not api_key.is_a?(String)
33
- raise YoException.new("Invalid Yo API key - must be 36 characters in length")
34
- end
35
-
36
- @api_key = api_key
37
- end
38
-
39
- # Yo calls.
40
- def self.yo(username, extra_params = {})
41
- self.__post('/yo/', { :username => username }.merge(extra_params))["result"] == "OK"
42
- end
43
-
44
- def self.yo!(username, extra_params = {})
45
- self.yo(username, extra_params)
46
- end
47
-
48
- def self.all(extra_params = {})
49
- self.__post('/yoall/', extra_params)["result"] == "OK"
50
- end
51
-
52
- def self.all!(extra_params = {})
53
- self.all(extra_params)
54
- end
55
-
56
- def self.subscribers
57
- self.__get('/subscribers_count/')["result"].to_i
58
- end
59
-
60
- def self.subscribers?
61
- self.subscribers > 0
62
- end
63
-
64
- # Receive a basic yo.
65
- def self.receive(params)
66
- parameters = __clean(params)
67
- yield(parameters[:username].to_s) if block_given? and parameters.include?(:username)
68
- end
69
-
70
- def self.from(params, username)
71
- parameters = __clean(params)
72
- yield if block_given? and parameters.include?(:username) and parameters[:username].to_s.upcase == username.upcase
73
- end
74
-
75
- # Receive a yo with a link (also known as YOLINK).
76
- def self.receive_with_link(params)
77
- parameters = __clean(params)
78
- yield(parameters[:username].to_s, parameters[:link].to_s) if block_given? and parameters.include?(:username) and parameters.include?(:link)
79
- end
80
-
81
- def self.from_with_link(params, username)
82
- parameters = __clean(params)
83
- yield(parameters[:link].to_s) if block_given? and parameters.include?(:username) and parameters.include?(:link) and parameters[:username].to_s.upcase == username.upcase
84
- end
85
-
86
- # Receive a yo with a location (also known as @YO).
87
- def self.receive_with_location(params)
88
- parameters = __clean(params)
89
- lat, lon = parameters[:location].to_s.split(';').map{ |i| i.to_f }
90
- yield(parameters[:username].to_s, lat, lon) if block_given? and parameters.include?(:username) and parameters.include?(:location)
91
- end
92
-
93
- def self.from_with_location(params, username)
94
- parameters = __clean(params)
95
- lat, lon = parameters[:location].to_s.split(';').map{ |i| i.to_f }
96
- yield(parameters[:link].to_s, lat, lon) if block_given? and parameters.include?(:username) and parameters.include?(:location) and parameters[:username].to_s.upcase == username.upcase
97
- end
98
-
99
- # Private methods.
100
- private
101
- def self.__post(endpoint, params = {})
102
- __parse(post(endpoint, { body: params.merge(api_token: @api_key) }))
103
- end
104
-
105
- def self.__get(endpoint, params = {})
106
- __parse(get(endpoint, { query: params.merge(api_token: @api_key) }))
107
- end
108
-
109
- def self.__parse(res)
110
- begin
111
- if res.parsed_response.keys.include?("error") or res.parsed_response["code"] == 141
112
- raise YoUserNotFound.new("You cannot Yo yourself and/or your developer Yo usernames. Why? Ask Or Arbel, CEO of Yo - or@justyo.co") if res.parsed_response["error"][0..8] == "TypeError"
113
- raise YoUserNotFound.new(res.parsed_response["error"])
114
- end
115
-
116
- return res.parsed_response
117
- rescue NoMethodError => e
118
- raise YoRateLimitExceeded.new(res.parsed_response)
119
- rescue JSON::ParserError => e
120
- raise YoException.new(e)
121
- end
122
- end
123
-
124
- def self.__clean(hash)
125
- new_hash = {}
126
- hash.each { |k, v| new_hash[k.to_sym] = v } if hash.is_a?(Hash)
127
- new_hash
128
- end
129
- end
1
+ require 'yo-ruby/version'
2
+ require 'yo-ruby/client'
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yo-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bilawal Hameed
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-22 00:00:00.000000000 Z
11
+ date: 2016-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.4'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: httparty
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - ! '>='
31
+ - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: 0.13.1
33
+ version: '0.13'
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - ! '>='
38
+ - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: 0.13.1
40
+ version: '0.13'
27
41
  description: Probably the most complex Ruby wrapper for the Yo app (justyo.co) that
28
42
  recently raised $1 million dollars.
29
43
  email: bilawal@studenthack.com
@@ -42,17 +56,17 @@ require_paths:
42
56
  - lib
43
57
  required_ruby_version: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ! '>='
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '0'
61
+ version: 2.0.0
48
62
  required_rubygems_version: !ruby/object:Gem::Requirement
49
63
  requirements:
50
- - - ! '>='
64
+ - - ">="
51
65
  - !ruby/object:Gem::Version
52
66
  version: '0'
53
67
  requirements: []
54
68
  rubyforge_project:
55
- rubygems_version: 2.2.2
69
+ rubygems_version: 2.4.5.1
56
70
  signing_key:
57
71
  specification_version: 4
58
72
  summary: An awesome Ruby wrapper for the Yo! mobile app.