yo-ruby 0.1.1 → 0.1.2

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 +8 -8
  2. data/lib/yo-ruby.rb +29 -14
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDE0OTU3NjVlYWZmNTBhZTNhZjQ2YzhlOTdhYzc5ODg4YWE2YTM1OA==
4
+ MWJjNDhkOTI3NTA2MTA0NTA5YjA1MTU1YWZjZjI2ZTg3NmFkNzRkNQ==
5
5
  data.tar.gz: !binary |-
6
- YTQyZjg3Y2IyMjBmNDJiZTU5ODk1MWI5ZGM3YjY5NGY5MzA2MTA2OQ==
6
+ N2NlNDZiYWYyZTIxODQ3MjAxNjkwZjE4ZjgzM2RiYjc2MTI3Mzk4Ng==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Y2E0ODBjMzgxNzIxODBkODM2N2Q5ZWU3ZTA0M2FiMzJkOTZhOWE2MzM2NzIz
10
- MTkzOWRkNzFiOTU0MzM4ODVkNmI2M2VmODJiZDA1OWFlZjMxNDBkM2Q0ZjBj
11
- Yjk1ZDdiMTM5OGJiNjY3MTQyMGJjOWFmYzBhMzRlZTY1MTQ2MmY=
9
+ ZWQ5Y2Q3YTQyNzI1MzBiNjc5NzMyM2ZhZjBkYTAxMjhmZWNlNGZiMzg2ODBi
10
+ MTgzMmEyMDQzODA3YWI4ODZmMTk0ZmU3NmYyMjdjOTczNTBlOWViMWI0MjU4
11
+ ZGQ5OGExOTExYWNlMzYzYWYxNjg4ZGYwYjJiMDUxMTc1ZDFiMGY=
12
12
  data.tar.gz: !binary |-
13
- MDZjMmZiOWVmOGQzOGQwYTFlNzE0MmIwYjJkYjAwZDRjZGZiMGUyOGY0ZTg3
14
- YzdhMjc0ZTRhZDk1NWM2ZGMxNDg0NjE4YTEyNTJkZWQwYzQyMGIyODIxZjM2
15
- MzZiYTljN2I4MDMxNzFiYzJlY2FjZjI1OTA2M2FmNzBjNWExYTU=
13
+ MGMxNGYzMjdhYmQ4ODUxMmQ4NTAyNTgxNTYxZTI2ZDE0ZjlmMDEwOTUyYWY1
14
+ MjE0NDNhMWVhMTc5Mzc5NTJkMmU5ODgxZjI4OWY3MjMyNmNjMmMyNzg5MDFi
15
+ ZTk4MTIwNDRlN2MxYzQzYzFmYWNjZGVhNWU1YzllYTgwY2VjODA=
data/lib/yo-ruby.rb CHANGED
@@ -4,6 +4,12 @@ require 'httparty'
4
4
  class YoException < Exception
5
5
  end
6
6
 
7
+ class YoUserNotFound < YoException
8
+ end
9
+
10
+ class YoRateLimitExceeded < YoException
11
+ end
12
+
7
13
  class Yo
8
14
  include Singleton
9
15
  include HTTParty
@@ -31,20 +37,20 @@ class Yo
31
37
  end
32
38
 
33
39
  # Yo calls.
34
- def self.yo(username)
35
- self.__post('/yo/', { :username => username })["result"] == "OK"
40
+ def self.yo(username, extra_params = {})
41
+ self.__post('/yo/', { :username => username }.merge(extra_params))["result"] == "OK"
36
42
  end
37
43
 
38
- def self.yo!(username)
39
- self.yo(username)
44
+ def self.yo!(username, extra_params = {})
45
+ self.yo(username, extra_params)
40
46
  end
41
47
 
42
- def self.all
43
- self.__post('/yoall/')["result"] == "OK"
48
+ def self.all(extra_params = {})
49
+ self.__post('/yoall/', extra_params)["result"] == "OK"
44
50
  end
45
51
 
46
- def self.all!
47
- self.all
52
+ def self.all!(extra_params = {})
53
+ self.all(extra_params)
48
54
  end
49
55
 
50
56
  def self.subscribers
@@ -58,12 +64,14 @@ class Yo
58
64
  # Receive a yo.
59
65
  def self.receive(params)
60
66
  parameters = __clean(params)
61
- yield(parameters[:username].to_s) if parameters.keys.length > 0 and parameters.include?(:username)
67
+ link = parameters.keys.include?(:link) ? parameters[:link] : nil
68
+ yield(parameters[:username].to_s, link) if parameters.keys.length > 0 and parameters.include?(:username)
62
69
  end
63
70
 
64
71
  def self.from(params, username)
65
72
  parameters = __clean(params)
66
- yield if parameters.keys.length > 0 and parameters.include?(:username)
73
+ link = parameters.keys.include?(:link) ? parameters[:link] : nil
74
+ yield(link) if parameters.keys.length > 0 and parameters.include?(:username) and params[:username].to_s.upcase == username.upcase
67
75
  end
68
76
 
69
77
  # Private methods.
@@ -77,11 +85,18 @@ class Yo
77
85
  end
78
86
 
79
87
  def self.__parse(res)
80
- if res.parsed_response.keys.include?("error") or res.parsed_response["code"] == 141
81
- raise YoException.new(res.parsed_response["error"])
88
+ begin
89
+ if res.parsed_response.keys.include?("error") or res.parsed_response["code"] == 141
90
+ 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"
91
+ raise YoUserNotFound.new(res.parsed_response["error"])
92
+ end
93
+
94
+ return res.parsed_response
95
+ rescue NoMethodError => e
96
+ raise YoRateLimitExceeded.new(res.parsed_response)
97
+ rescue JSON::ParserError => e
98
+ raise YoException.new(e)
82
99
  end
83
-
84
- res.parsed_response
85
100
  end
86
101
 
87
102
  def self.__clean(hash)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yo-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
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-07-22 00:00:00.000000000 Z
11
+ date: 2014-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty