infomeme_client 0.1.4 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. metadata +26 -165
  2. data/.document +0 -5
  3. data/.gitignore +0 -21
  4. data/LICENSE +0 -20
  5. data/README.rdoc +0 -8
  6. data/Rakefile +0 -55
  7. data/VERSION +0 -1
  8. data/lib/infomeme_client.rb +0 -22
  9. data/lib/infomeme_client/base.rb +0 -77
  10. data/lib/infomeme_client/communication.rb +0 -75
  11. data/lib/infomeme_client/entity_hash.rb +0 -66
  12. data/lib/infomeme_client/entity_hash/comment.rb +0 -2
  13. data/lib/infomeme_client/entity_hash/invoice.rb +0 -2
  14. data/lib/infomeme_client/entity_hash/meme.rb +0 -45
  15. data/lib/infomeme_client/entity_hash/meme_type.rb +0 -2
  16. data/lib/infomeme_client/entity_hash/transaction.rb +0 -2
  17. data/lib/infomeme_client/entity_hash/user.rb +0 -2
  18. data/lib/infomeme_client/errors.rb +0 -22
  19. data/lib/infomeme_client/functions.rb +0 -16
  20. data/lib/infomeme_client/functions/meme.rb +0 -23
  21. data/lib/infomeme_client/functions/user.rb +0 -79
  22. data/lib/infomeme_client/functions/user_meme.rb +0 -127
  23. data/lib/infomeme_client/functions/user_order.rb +0 -31
  24. data/lib/infomeme_client/meme_application.rb +0 -18
  25. data/lib/infomeme_client/permissions.rb +0 -22
  26. data/lib/infomeme_client/response.rb +0 -52
  27. data/test/fixtures/memes/comments.json +0 -1
  28. data/test/fixtures/memes/meme.json +0 -1
  29. data/test/fixtures/memes/memes.json +0 -1
  30. data/test/fixtures/memes/types.json +0 -1
  31. data/test/fixtures/oauth/access_token.json +0 -1
  32. data/test/fixtures/oauth/authorize.json +0 -1
  33. data/test/fixtures/oauth/permissions.json +0 -1
  34. data/test/fixtures/oauth/request_token.json +0 -1
  35. data/test/fixtures/oauth/verify_access.json +0 -1
  36. data/test/fixtures/response/error.json +0 -1
  37. data/test/fixtures/response/ok.json +0 -1
  38. data/test/fixtures/response/test.json +0 -1
  39. data/test/fixtures/response/test_extract.json +0 -1
  40. data/test/fixtures/users/invoice.json +0 -1
  41. data/test/fixtures/users/invoices.json +0 -1
  42. data/test/fixtures/users/memes.json +0 -1
  43. data/test/fixtures/users/order_paypal.json +0 -1
  44. data/test/fixtures/users/permissions.json +0 -1
  45. data/test/fixtures/users/transactions.json +0 -1
  46. data/test/fixtures/users/user.json +0 -1
  47. data/test/fixtures/users/user_public.json +0 -1
  48. data/test/helper.rb +0 -69
  49. data/test/test_authorization.rb +0 -56
  50. data/test/test_communication.rb +0 -46
  51. data/test/test_entity_hash.rb +0 -15
  52. data/test/test_meme_functions.rb +0 -46
  53. data/test/test_permissions.rb +0 -25
  54. data/test/test_user_functions.rb +0 -15
  55. data/test/test_user_meme_functions.rb +0 -47
  56. data/test/test_user_order_functions.rb +0 -45
metadata CHANGED
@@ -1,185 +1,46 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: infomeme_client
3
- version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 4
10
- version: 0.1.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Infomeme Ltd.
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2010-09-04 00:00:00 +02:00
12
+ date: 2011-03-24 00:00:00.000000000 +01:00
19
13
  default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: oauth
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
33
- type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: json
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
47
- type: :runtime
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: multipart-post
51
- prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
61
- type: :runtime
62
- version_requirements: *id003
63
- - !ruby/object:Gem::Dependency
64
- name: mime-types
65
- prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
67
- none: false
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
75
- type: :runtime
76
- version_requirements: *id004
77
- description: A RubyGem for implementing both Infomeme client and meme applications.
78
- email: infomeme@infomeme.com
14
+ dependencies: []
15
+ description: Coming soon...
16
+ email: gem_info@infomeme.com
79
17
  executables: []
80
-
81
18
  extensions: []
82
-
83
- extra_rdoc_files:
84
- - LICENSE
85
- - README.rdoc
86
- files:
87
- - .document
88
- - .gitignore
89
- - LICENSE
90
- - README.rdoc
91
- - Rakefile
92
- - VERSION
93
- - lib/infomeme_client.rb
94
- - lib/infomeme_client/base.rb
95
- - lib/infomeme_client/communication.rb
96
- - lib/infomeme_client/entity_hash.rb
97
- - lib/infomeme_client/entity_hash/comment.rb
98
- - lib/infomeme_client/entity_hash/invoice.rb
99
- - lib/infomeme_client/entity_hash/meme.rb
100
- - lib/infomeme_client/entity_hash/meme_type.rb
101
- - lib/infomeme_client/entity_hash/transaction.rb
102
- - lib/infomeme_client/entity_hash/user.rb
103
- - lib/infomeme_client/errors.rb
104
- - lib/infomeme_client/functions.rb
105
- - lib/infomeme_client/functions/meme.rb
106
- - lib/infomeme_client/functions/user.rb
107
- - lib/infomeme_client/functions/user_meme.rb
108
- - lib/infomeme_client/functions/user_order.rb
109
- - lib/infomeme_client/meme_application.rb
110
- - lib/infomeme_client/permissions.rb
111
- - lib/infomeme_client/response.rb
112
- - test/fixtures/memes/comments.json
113
- - test/fixtures/memes/meme.json
114
- - test/fixtures/memes/memes.json
115
- - test/fixtures/memes/types.json
116
- - test/fixtures/oauth/access_token.json
117
- - test/fixtures/oauth/authorize.json
118
- - test/fixtures/oauth/permissions.json
119
- - test/fixtures/oauth/request_token.json
120
- - test/fixtures/oauth/verify_access.json
121
- - test/fixtures/response/error.json
122
- - test/fixtures/response/ok.json
123
- - test/fixtures/response/test.json
124
- - test/fixtures/response/test_extract.json
125
- - test/fixtures/users/invoice.json
126
- - test/fixtures/users/invoices.json
127
- - test/fixtures/users/memes.json
128
- - test/fixtures/users/order_paypal.json
129
- - test/fixtures/users/permissions.json
130
- - test/fixtures/users/transactions.json
131
- - test/fixtures/users/user.json
132
- - test/fixtures/users/user_public.json
133
- - test/helper.rb
134
- - test/test_authorization.rb
135
- - test/test_communication.rb
136
- - test/test_entity_hash.rb
137
- - test/test_meme_functions.rb
138
- - test/test_permissions.rb
139
- - test/test_user_functions.rb
140
- - test/test_user_meme_functions.rb
141
- - test/test_user_order_functions.rb
19
+ extra_rdoc_files: []
20
+ files: []
142
21
  has_rdoc: true
143
- homepage: https://api.infomeme.com
22
+ homepage: https://github.com/Infomeme/infomeme_client
144
23
  licenses: []
145
-
146
24
  post_install_message:
147
- rdoc_options:
148
- - --charset=UTF-8
149
- require_paths:
25
+ rdoc_options: []
26
+ require_paths:
150
27
  - lib
151
- required_ruby_version: !ruby/object:Gem::Requirement
28
+ required_ruby_version: !ruby/object:Gem::Requirement
152
29
  none: false
153
- requirements:
154
- - - ">="
155
- - !ruby/object:Gem::Version
156
- hash: 3
157
- segments:
158
- - 0
159
- version: "0"
160
- required_rubygems_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
161
35
  none: false
162
- requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- hash: 3
166
- segments:
167
- - 0
168
- version: "0"
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
169
40
  requirements: []
170
-
171
41
  rubyforge_project:
172
- rubygems_version: 1.3.7
42
+ rubygems_version: 1.5.3
173
43
  signing_key:
174
44
  specification_version: 3
175
45
  summary: A RubyGem for implementing both Infomeme client and meme applications.
176
- test_files:
177
- - test/helper.rb
178
- - test/test_authorization.rb
179
- - test/test_communication.rb
180
- - test/test_entity_hash.rb
181
- - test/test_meme_functions.rb
182
- - test/test_permissions.rb
183
- - test/test_user_functions.rb
184
- - test/test_user_meme_functions.rb
185
- - test/test_user_order_functions.rb
46
+ test_files: []
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC
data/LICENSE DELETED
@@ -1,20 +0,0 @@
1
- Copyright (c) 2009 Infomeme Ltd.
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc DELETED
@@ -1,8 +0,0 @@
1
- = InfomemeClient
2
-
3
- A RubyGem for implementing both Infomeme client and meme applications.
4
- See https://api-docs.infomeme.com
5
-
6
- == Copyright
7
-
8
- Copyright (c) 2010 Infomeme Ltd. See LICENSE for details.
data/Rakefile DELETED
@@ -1,55 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "infomeme_client"
8
- gem.summary = "A RubyGem for implementing both Infomeme client and meme applications."
9
- gem.description = gem.summary
10
- gem.email = "infomeme@infomeme.com"
11
- gem.homepage = "https://api.infomeme.com"
12
- gem.authors = ["Infomeme Ltd."]
13
- gem.add_dependency "oauth"
14
- gem.add_dependency "json"
15
- gem.add_dependency "multipart-post"
16
- gem.add_dependency "mime-types"
17
- end
18
- Jeweler::GemcutterTasks.new
19
- rescue LoadError
20
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
21
- end
22
-
23
- require 'rake/testtask'
24
- Rake::TestTask.new(:test) do |test|
25
- test.libs << 'lib' << 'test'
26
- test.pattern = 'test/**/test_*.rb'
27
- test.verbose = true
28
- end
29
-
30
- begin
31
- require 'rcov/rcovtask'
32
- Rcov::RcovTask.new do |test|
33
- test.libs << 'test'
34
- test.pattern = 'test/**/test_*.rb'
35
- test.verbose = true
36
- end
37
- rescue LoadError
38
- task :rcov do
39
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
40
- end
41
- end
42
-
43
- task :test => :check_dependencies
44
-
45
- task :default => :test
46
-
47
- require 'rake/rdoctask'
48
- Rake::RDocTask.new do |rdoc|
49
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
50
-
51
- rdoc.rdoc_dir = 'rdoc'
52
- rdoc.title = "infomeme_client #{version}"
53
- rdoc.rdoc_files.include('README*')
54
- rdoc.rdoc_files.include('lib/**/*.rb')
55
- end
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.4
@@ -1,22 +0,0 @@
1
- require "oauth"
2
- require "json"
3
- require "net/http/post/multipart"
4
- require "mime/types"
5
-
6
- class InfomemeClient
7
- require "infomeme_client/errors"
8
-
9
- autoload :EntityHash, "infomeme_client/entity_hash"
10
- autoload :Response, "infomeme_client/response"
11
- autoload :Base, "infomeme_client/base"
12
- autoload :Communication, "infomeme_client/communication"
13
- autoload :Permissions, "infomeme_client/permissions"
14
- autoload :Functions, "infomeme_client/functions"
15
-
16
- autoload :MemeApplication, "infomeme_client/meme_application"
17
-
18
- include Base
19
- include Communication
20
- include Permissions
21
- include Functions
22
- end
@@ -1,77 +0,0 @@
1
- module InfomemeClient::Base
2
- def initialize(options = {})
3
- self.consumer = OAuth::Consumer.new(options[:api_key] || ::INFOMEME_API_KEY, options[:api_secret] || ::INFOMEME_API_SECRET, :site => options[:site] || ::INFOMEME_API_SITE)
4
- self.default_language = options[:language] || "en"
5
- case
6
- when options.key?(:token) && options.key?(:secret) then authorize_with_token(options[:token], options[:secret])
7
- when options.key?(:login) && options.key?(:password) then authorize_with_credentials(options[:login], options[:password])
8
- else deauthorize
9
- end
10
- end
11
-
12
- def request_authorization
13
- response = handle_response :get, consumer.request_token_url
14
- response.request_token
15
- end
16
-
17
- def authorize_url(token, permissions = [])
18
- "https://infomeme.com/authorize?token=#{token}&permissions=#{permissions.join(',')}"
19
- end
20
-
21
- def authorize_with_verifier(token, secret, verifier)
22
- req_token = OAuth::RequestToken.new(consumer, token, secret)
23
- response = token_request(req_token, :get, finalize_get_url(consumer.access_token_url, {:oauth_verifier => verifier})) #do request with request_token
24
- return false if response.error?
25
- authorize_with_token(response.access_token.token, response.access_token.secret)
26
- end
27
-
28
- def authorize_with_token(token, secret)
29
- access_token = OAuth::AccessToken.new(consumer, token, secret)
30
- response = token_request(access_token, :get, "/oauth/verify_access")
31
- return false if response.error?
32
- self.verified_user = response.user_id
33
- self.token = access_token
34
- refresh_user_data
35
- self
36
- end
37
-
38
- def authorize_with_credentials(login, password, permissions = nil)
39
- req_token = request_authorization
40
- response = put(consumer.authorize_url, {:oauth_token => req_token.token, :login => login, :password => password, :permissions => permissions || all_permissions.collect {|perm| perm.id}})
41
- return false if response.error?
42
- authorize_with_verifier(req_token.token, req_token.secret, response.verifier)
43
- end
44
-
45
- def deauthorize
46
- self.verified_user = nil
47
- self.token = OAuth::AccessToken.new(consumer)
48
- refresh_user_data
49
- self
50
- end
51
-
52
- def authorized?
53
- ! verified_user.nil?
54
- end
55
-
56
- def credentials(just = nil)
57
- creds = {
58
- :login => verified_user,
59
- :token => token.token,
60
- :secret => token.secret,
61
- }
62
- creds.key?(just) ? creds[just] : creds
63
- end
64
-
65
- def inspect
66
- @all_permissions ||= all_permissions
67
- "#<#{self.class.name}: #{authorized? ? credentials.merge({:permissions => (@all_permissions || []).select {|perm| has_permission?(perm.id)}.collect {|perm| perm.name}}).inspect : 'not authorized'}>"
68
- end
69
-
70
- private
71
- attr_accessor :consumer, :token, :verified_user
72
-
73
- def refresh_user_data
74
- refresh_settings
75
- refresh_permissions
76
- end
77
- end
@@ -1,75 +0,0 @@
1
- module InfomemeClient::Communication
2
- def get(path, headers = {})
3
- request(:get, path, headers)
4
- end
5
-
6
- def post(path, body = "", headers = {})
7
- request(:post, path, body, headers)
8
- end
9
-
10
- def put(path, body = "", headers = {})
11
- request(:put, path, body, headers)
12
- end
13
-
14
- def request(method, path, *args)
15
- token_request(token, method, path, *args)
16
- end
17
-
18
- def handle_response(method, path, *args, &block)
19
- response = request(method, path, *args)
20
- response.raise_error
21
- if block_given?
22
- if block.arity == 1
23
- yield response
24
- else
25
- yield unless response.error?
26
- end
27
- else
28
- response
29
- end
30
- end
31
-
32
- def extract_from_response(extract, method, path, *args)
33
- handle_response(method, path, *args) do |resp|
34
- resp.extract(extract) unless resp.error?
35
- end
36
- end
37
-
38
- def extract_or_response(extract, method, path, options, headers = {})
39
- no_extract = options[:no_extract] || false
40
- options.delete(:no_extract)
41
- if [:put, :post].include?(method.to_sym)
42
- args = [method, path, options, headers]
43
- else
44
- args = [method, finalize_get_url(path, options), headers]
45
- end
46
- if no_extract
47
- handle_response *args
48
- else
49
- extract_from_response *args.unshift(extract)
50
- end
51
- end
52
-
53
- private
54
- def token_request(token, method, path, *args)
55
- body = [:post, :put].include?(method.to_sym) ? (args.shift || {}) : {}
56
- headers = args.shift || {}
57
- headers.store("Accept", "application/json") #override to use json
58
- if [:post, :put].include?(method.to_sym) && (! headers.key?("Content-Type") || headers["Content-Type"] == "application/json")
59
- body = JSON.generate(body) unless body.is_a?(String)
60
- headers.store("Content-Type", "application/json")
61
- end
62
- args.unshift headers
63
- args.unshift body if [:post, :put].include?(method.to_sym)
64
- begin
65
- resp = token.request(method, path, *args).body
66
- InfomemeClient::Response.new JSON.parse(resp)
67
- rescue => e
68
- InfomemeClient::Response.new e
69
- end
70
- end
71
-
72
- def finalize_get_url(url, params)
73
- url + (url.include?("?") ? "&" : "?") + params.collect {|key, val| "#{key.to_s}=#{val.to_s}"}.join("&")
74
- end
75
- end