mashape 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,18 @@
1
+ module Mashape
2
+ class Authentication
3
+
4
+ def initialize()
5
+ @header = Hash.new
6
+ @params = Hash.new
7
+ end
8
+
9
+ def handleHeader()
10
+ return @header
11
+ end
12
+
13
+ def handleParams()
14
+ return @params
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+ require 'base64'
3
+ require 'hmac-sha1'
4
+
5
+ module Mashape
6
+ class AuthenticationUtils
7
+
8
+ def AuthenticationUtils.generateMashapeAuthHeader(public_key, private_key)
9
+ unless public_key.empty? || private_key.empty?
10
+ hash = HMAC::SHA1.hexdigest(private_key, public_key)
11
+ auth = {"X-Mashape-Authorization" => Base64.encode64(public_key + ":" + hash).chomp.gsub(/\n/,'')}
12
+ end
13
+ return auth
14
+ end
15
+
16
+ def AuthenticationUtils.generateBasicAuthHeader(username, password)
17
+ unless username.empty? || password.empty?
18
+ auth = {"Authorization" => "Basic " + Base64.encode64(username + ":" + password).chomp.gsub(/\n/,'')}
19
+ end
20
+ return auth
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ require File.join(File.dirname(__FILE__), "/header_authentication.rb")
2
+ require File.join(File.dirname(__FILE__), "/authentication_utils.rb")
3
+
4
+ module Mashape
5
+ class BasicAuthentication < Mashape::HeaderAuthentication
6
+
7
+ def initialize(username, password)
8
+ super()
9
+ @header = @header.merge(Mashape::AuthenticationUtils.generateBasicAuthHeader(username, password))
10
+ end
11
+
12
+ end
13
+ end
14
+
@@ -0,0 +1,12 @@
1
+ require File.join(File.dirname(__FILE__), "/header_authentication.rb")
2
+
3
+ module Mashape
4
+ class CustomHeaderAuthentication < HeaderAuthentication
5
+
6
+ def initialize(header_name, header_value)
7
+ super()
8
+ @header[header_name] = header_value
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ require File.join(File.dirname(__FILE__), "/authentication.rb")
2
+
3
+ module Mashape
4
+ class HeaderAuthentication < Mashape::Authentication
5
+
6
+ def initialize()
7
+ super()
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ require File.join(File.dirname(__FILE__), "/header_authentication.rb")
2
+ require File.join(File.dirname(__FILE__), "/authentication_utils.rb")
3
+
4
+ module Mashape
5
+ class MashapeAuthentication < HeaderAuthentication
6
+
7
+ def initialize(public_key, private_key)
8
+ super()
9
+ @header = @header.merge(Mashape::AuthenticationUtils.generateMashapeAuthHeader(public_key, private_key))
10
+ end
11
+
12
+ end
13
+ end
14
+
15
+
@@ -0,0 +1,9 @@
1
+ require File.join(File.dirname(__FILE__), "/oauth_authentication.rb")
2
+
3
+ module Mashape
4
+ class OAuth10aAuthentication < OAuthAuthentication
5
+ def initialize(consumer_key, consumer_secret, redirect_url)
6
+ super(consumer_key, consumer_secret, redirect_url)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require File.join(File.dirname(__FILE__), "/oauth_authentication.rb")
2
+
3
+ module Mashape
4
+ class OAuth2Authentication < OAuthAuthentication
5
+ def initialize(consumer_key, consumer_secret, redirect_url)
6
+ super(consumer_key, consumer_secret, redirect_url)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ require File.join(File.dirname(__FILE__), "/authentication.rb")
2
+
3
+ module Mashape
4
+ class OAuthAuthentication < Authentication
5
+
6
+ def initialize(consumer_key, consumer_secret, redirect_url)
7
+ super()
8
+ @params[:consumer_key] = consumer_key
9
+ @params[:consumer_secret] = consumer_secret
10
+ @params[:redirect_url] = redirect_url
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ require File.join(File.dirname(__FILE__), "/authentication.rb")
2
+
3
+ module Mashape
4
+ class QueryAuthentication < Authentication
5
+ def initialize(query_key, query_value)
6
+ super()
7
+ @params[query_key] = query_value
8
+ end
9
+ end
10
+ end
11
+
@@ -0,0 +1,96 @@
1
+ require 'rubygems'
2
+ require 'addressable/uri'
3
+ require 'rest-client'
4
+ require File.join(File.dirname(__FILE__), "/authentication/mashape_authentication.rb")
5
+ require File.join(File.dirname(__FILE__), "/authentication/custom_header_authentication.rb")
6
+ require File.join(File.dirname(__FILE__), "/authentication/query_authentication.rb")
7
+ require File.join(File.dirname(__FILE__), "/authentication/basic_authentication.rb")
8
+ require File.join(File.dirname(__FILE__), "/http_utils.rb")
9
+ require File.join(File.dirname(__FILE__), "/mashape_exception.rb")
10
+
11
+ module Mashape
12
+ class HttpResponse
13
+ attr :code, true
14
+ attr :raw_body, true
15
+ attr :body, true
16
+ attr :headers, true
17
+ end
18
+
19
+ class HttpClient
20
+
21
+ def HttpClient.do_request(method, url, parameters = nil, content_type = nil, response_type = nil, authentication_handlers = nil, &callback)
22
+ if callback
23
+ return Thread.new do
24
+ callback.call(internal_do_request(method, url, parameters, content_type, response_type, authentication_handlers))
25
+ end
26
+ else
27
+ return internal_do_request(method, url, parameters, content_type, response_type, authentication_handlers)
28
+ end
29
+ end
30
+
31
+ def HttpClient.internal_do_request(method, url, parameters = nil, content_type = nil, response_type = nil, authentication_handlers = nil)
32
+ httpResponse = nil;
33
+
34
+ headers = {}
35
+ if parameters == nil
36
+ case content_type
37
+ when :form || :binary
38
+ parameters = {}
39
+ end
40
+ end
41
+
42
+ # figure out what kind of auth we have and where to put it
43
+ authentication_handlers.each do |handler|
44
+ if handler.kind_of? Mashape::HeaderAuthentication
45
+ headers = headers.merge(handler.handleHeader)
46
+ elsif handler.kind_of? Mashape::QueryAuthentication
47
+ parameters = parameters.merge(handler.handleParams)
48
+ # elsif handler.kind_of? Mashape::OAuth10aAuthentication
49
+ # if handler.handleParams[:access_token] == nil || handler.handleParams[:access_secret] == nil
50
+ # raise Mashape::JsonException.new("Before consuming OAuth endpoint, invoke authenticate_oauth('access_token','access_secret') with not null values")
51
+ # end
52
+ # These headers will be processed by the proxy to sign the request
53
+ # headers["X-Mashape-OAuth-ConsumerKey"] = handler.handleParams[:consumer_key]
54
+ # headers["X-Mashape-OAuth-ConsumerSecret"] = handler.handleParams[:consumer_secret]
55
+ # headers["X-Mashape-OAuth-AccessToken"] = handler.handleParams[:access_token]
56
+ # headers["X-Mashape-OAuth-AccessSecret"] = handler.handleParams[:access_secret]
57
+ # elsif handler.kind_of? Mashape::OAuth2Authentication
58
+ # if handler.handleParams[:access_token] == nil
59
+ # raise Mashape::JsonException.new("Before consuming OAuth endpoint, invoke authenticate_oauth('access_token') with a not null value")
60
+ # end
61
+ # parameters = parameters.merge({"access_token" => handler.handleParams[:access_token]})
62
+ end
63
+ end
64
+
65
+ Mashape::HttpUtils.setRequestHeaders(content_type, response_type, headers)
66
+
67
+ begin
68
+ case method
69
+ when :get
70
+ uri = Addressable::URI.new
71
+ uri.query_values = parameters
72
+ httpResponse = RestClient.get url + "?" + uri.query, headers
73
+ when :post
74
+ httpResponse = RestClient.post url, parameters, headers
75
+ when :put
76
+ httpResponse = RestClient.put url, parameters, headers
77
+ when :delete
78
+ httpResponse = RestClient.delete url, parameters, headers
79
+ when :patch
80
+ httpResponse = RestClient.patch url, parameters, headers
81
+ end
82
+ rescue => e
83
+ httpResponse = e.response
84
+ end
85
+
86
+ response = HttpResponse.new
87
+ response.code = httpResponse.code
88
+ response.headers = httpResponse.headers
89
+ response.raw_body = httpResponse
90
+
91
+ Mashape::HttpUtils.setResponse(response_type, response)
92
+
93
+ return response
94
+ end
95
+ end
96
+ end
data/lib/http_utils.rb ADDED
@@ -0,0 +1,47 @@
1
+ require File.join(File.dirname(__FILE__), "/mashape_exception.rb")
2
+ require 'rubygems'
3
+ require 'json'
4
+ require 'uri'
5
+
6
+ module Mashape
7
+
8
+ class HttpUtils
9
+
10
+ def HttpUtils.uriEncode(value)
11
+ return URI.escape(value)
12
+ end
13
+
14
+ def HttpUtils.setRequestHeaders(content_type, response_type, headers)
15
+ headers["User-Agent"] = "mashape-ruby/2.0"
16
+
17
+ case content_type
18
+ when :json
19
+ headers["Content-Type"] = "application/json"
20
+ when :form
21
+ headers["Content-Type"] = "application/x-www-form-urlencoded"
22
+ when :binary
23
+ headers["Content-Type"] = "multipart/form-data"
24
+ end
25
+
26
+ case response_type
27
+ when :json
28
+ headers["Accept"] = "application/json"
29
+ end
30
+ end
31
+
32
+ def HttpUtils.setResponse(response_type, output_response)
33
+ case response_type
34
+ when :json
35
+ begin
36
+ output_response.body = JSON.parse(output_response.raw_body)
37
+ rescue StandardError
38
+ raise Mashape::JsonException.new("Can't parse the following response into JSON: " + output_response.raw_body)
39
+ end
40
+ else
41
+ output_response.body = output_response.raw_body
42
+ end
43
+ end
44
+
45
+ end
46
+
47
+ end
data/lib/mashape.rb ADDED
@@ -0,0 +1 @@
1
+ Dir[File.dirname(__FILE__) + '/**/*.rb'].each {|file| require file }
@@ -0,0 +1,9 @@
1
+ module Mashape
2
+ class JsonException < StandardError
3
+
4
+ def initialize(message)
5
+ super(message)
6
+ end
7
+
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,122 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mashape
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 2
7
+ - 0
8
+ - 0
9
+ version: 2.0.0
10
+ platform: ruby
11
+ authors:
12
+ - Mashape
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2012-09-21 00:00:00 -07:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rest-client
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :runtime
31
+ version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: json
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
41
+ version: "0"
42
+ type: :runtime
43
+ version_requirements: *id002
44
+ - !ruby/object:Gem::Dependency
45
+ name: addressable
46
+ prerelease: false
47
+ requirement: &id003 !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ type: :runtime
55
+ version_requirements: *id003
56
+ - !ruby/object:Gem::Dependency
57
+ name: ruby-hmac
58
+ prerelease: false
59
+ requirement: &id004 !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ segments:
64
+ - 0
65
+ version: "0"
66
+ type: :runtime
67
+ version_requirements: *id004
68
+ description: The Mashape Ruby client library needed to consume APIs on Mashape
69
+ email: support@mashape.com
70
+ executables: []
71
+
72
+ extensions: []
73
+
74
+ extra_rdoc_files: []
75
+
76
+ files:
77
+ - lib/authentication/authentication.rb
78
+ - lib/authentication/authentication_utils.rb
79
+ - lib/authentication/basic_authentication.rb
80
+ - lib/authentication/custom_header_authentication.rb
81
+ - lib/authentication/header_authentication.rb
82
+ - lib/authentication/mashape_authentication.rb
83
+ - lib/authentication/oauth10a_authentication.rb
84
+ - lib/authentication/oauth2_authentication.rb
85
+ - lib/authentication/oauth_authentication.rb
86
+ - lib/authentication/query_authentication.rb
87
+ - lib/http_client.rb
88
+ - lib/http_utils.rb
89
+ - lib/mashape.rb
90
+ - lib/mashape_exception.rb
91
+ has_rdoc: true
92
+ homepage: https://www.mashape.com
93
+ licenses: []
94
+
95
+ post_install_message:
96
+ rdoc_options: []
97
+
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ segments:
105
+ - 0
106
+ version: "0"
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ segments:
112
+ - 0
113
+ version: "0"
114
+ requirements: []
115
+
116
+ rubyforge_project:
117
+ rubygems_version: 1.3.6
118
+ signing_key:
119
+ specification_version: 3
120
+ summary: The Mashape Ruby client library
121
+ test_files: []
122
+