evrythng 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,6 +16,23 @@ module Evrythng
16
16
  response = get('collections', options)
17
17
  format.to_s.downcase == 'xml' ? response['collections'] : response
18
18
  end
19
+
20
+ # Creates a collection
21
+ #
22
+ # @format :json, :xml
23
+ # @authenticated true
24
+ # @rate_limited false
25
+ # @param name [String] The name of collection.
26
+ # @param description [String] The description of collection.
27
+ # @param options [Hash] A customizable set of options.
28
+ # @return [Hashie::Rash] The created collection.
29
+ # @see http://dev.evrythng.net/doc/post/collections
30
+ # @example Create the authenticating user's collection
31
+ # Evrythng.collection_create("This is a new collection!", "Here comes the description.")
32
+ def collection_create(name, description=nil, options={})
33
+ response = post('collections', options.merge(:collection => { :name => name, :description => description }))
34
+ format.to_s.downcase == 'xml' ? response['collection'] : response
35
+ end
19
36
  end
20
37
  end
21
38
  end
@@ -0,0 +1,38 @@
1
+ module Evrythng
2
+ class Client
3
+ # Defines methods related to thngs
4
+ module Thngs
5
+ # Returns a list of thngs
6
+ #
7
+ # @format :json, :xml
8
+ # @authenticated true
9
+ # @rate_limited true
10
+ # @param options [Hash] A customizable set of options.
11
+ # @return [Hashie::Rash] The requested list of thngs.
12
+ # @see http://developer.evrythng.net/thngs
13
+ # @example Return the list of thngs
14
+ # Evrythng.thngs
15
+ def thngs(options={})
16
+ response = get('thngs', options)
17
+ format.to_s.downcase == 'xml' ? response['thngs'] : response
18
+ end
19
+
20
+ # Creates a thng
21
+ #
22
+ # @format :json, :xml
23
+ # @authenticated true
24
+ # @rate_limited false
25
+ # @param identifier [String] The identifier of thng.
26
+ # @param description [String] The description of thng.
27
+ # @param options [Hash] A customizable set of options.
28
+ # @return [Hashie::Rash] The created thng.
29
+ # @see http://developer.evrythng.net/thngs
30
+ # @example Create the authenticating user's thng
31
+ # Evrythng.thng_create("my.test.thng", "Here comes the description.")
32
+ def thng_create(identifier, description=nil, options={})
33
+ response = post('thngs', options.merge(:thng => { :identifier => identifier, :description => description }))
34
+ format.to_s.downcase == 'xml' ? response['thng'] : response
35
+ end
36
+ end
37
+ end
38
+ end
@@ -4,10 +4,10 @@ module Evrythng
4
4
  # Require client method modules after initializing the Client class in
5
5
  # order to avoid a superclass mismatch error, allowing those modules to be
6
6
  # Client-namespaced.
7
- require 'evrythng/client/things'
7
+ require 'evrythng/client/thngs'
8
8
  require 'evrythng/client/collections'
9
9
 
10
- include Evrythng::Client::Things
10
+ include Evrythng::Client::Thngs
11
11
  include Evrythng::Client::Collections
12
12
  end
13
13
  end
@@ -9,6 +9,8 @@ module Evrythng
9
9
  :adapter,
10
10
  :consumer_key,
11
11
  :consumer_secret,
12
+ :username,
13
+ :password,
12
14
  :api_endpoint,
13
15
  :format,
14
16
  :gateway,
@@ -36,8 +38,14 @@ module Evrythng
36
38
  # By default, don't set an application secret
37
39
  DEFAULT_CONSUMER_SECRET = nil
38
40
 
41
+ # By default, don't set a username
42
+ DEFAULT_USERNAME = nil
43
+
44
+ # By default, don't set password
45
+ DEFAULT_PASSWORD = nil
46
+
39
47
  # The endpoint that will be used to connect if none is set
40
- DEFAULT_ENDPOINT = 'http://evrythng.net/api/v1/'.freeze
48
+ DEFAULT_ENDPOINT = 'http://api.evrythng.net'.freeze
41
49
 
42
50
  # The response format appended to the path and sent in the 'Accept' header if none is set
43
51
  #
@@ -53,9 +61,6 @@ module Evrythng
53
61
  # By default, don't use a proxy server
54
62
  DEFAULT_PROXY = nil
55
63
 
56
- # The search endpoint that will be used to connect if none is set
57
- DEFAULT_SEARCH_ENDPOINT = 'http://evrythng.net/api/v1/search'.freeze
58
-
59
64
  # The user agent that will be sent to the API endpoint if none is set
60
65
  DEFAULT_USER_AGENT = "Evrythng Ruby Gem #{Evrythng::VERSION}".freeze
61
66
 
@@ -86,12 +91,13 @@ module Evrythng
86
91
  self.adapter = DEFAULT_ADAPTER
87
92
  self.consumer_key = DEFAULT_CONSUMER_KEY
88
93
  self.consumer_secret = DEFAULT_CONSUMER_SECRET
94
+ self.username = DEFAULT_USERNAME
95
+ self.password = DEFAULT_PASSWORD
89
96
  self.api_endpoint = DEFAULT_ENDPOINT
90
97
  self.format = DEFAULT_FORMAT
91
98
  self.oauth_token = DEFAULT_OAUTH_TOKEN
92
99
  self.oauth_token_secret = DEFAULT_OAUTH_TOKEN_SECRET
93
100
  self.proxy = DEFAULT_PROXY
94
- self.search_endpoint = DEFAULT_SEARCH_ENDPOINT
95
101
  self.user_agent = DEFAULT_USER_AGENT
96
102
  self.gateway = DEFAULT_GATEWAY
97
103
  self
@@ -2,6 +2,7 @@ require 'faraday_middleware'
2
2
  require 'faraday/request/multipart_with_file'
3
3
  require 'faraday/request/gateway'
4
4
  require 'faraday/request/evrythng_oauth'
5
+ require 'faraday/request/basic_authentication'
5
6
  require 'faraday/response/raise_http_4xx'
6
7
  require 'faraday/response/raise_http_5xx'
7
8
 
@@ -12,7 +13,7 @@ module Evrythng
12
13
 
13
14
  def connection(raw=false)
14
15
  options = {
15
- :headers => {'Accept' => "application/#{format}", 'User-Agent' => user_agent},
16
+ :headers => {'Accept' => "application/vnd.evrythng-v1+json", 'User-Agent' => user_agent},
16
17
  :proxy => proxy,
17
18
  :ssl => {:verify => false},
18
19
  :url => api_endpoint,
@@ -20,8 +21,8 @@ module Evrythng
20
21
 
21
22
  Faraday.new(options) do |builder|
22
23
  builder.use Faraday::Request::MultipartWithFile
23
- builder.use Faraday::Request::EvrythngOAuth, authentication if authenticated?
24
24
  builder.use Faraday::Request::Multipart
25
+ builder.use Faraday::Request::BasicAuthentication, username, password
25
26
  builder.use Faraday::Request::UrlEncoded
26
27
  builder.use Faraday::Request::Gateway, gateway if gateway
27
28
  builder.use Faraday::Response::RaiseHttp4xx
@@ -28,17 +28,13 @@ module Evrythng
28
28
  response = connection(raw).send(method) do |request|
29
29
  case method
30
30
  when :get, :delete
31
- request.url(formatted_path(path), options)
31
+ request.url(path, options)
32
32
  when :post, :put
33
- request.path = formatted_path(path)
33
+ request.path = path
34
34
  request.body = options unless options.empty?
35
35
  end
36
36
  end
37
37
  raw ? response : response.body
38
38
  end
39
-
40
- def formatted_path(path)
41
- [path, format].compact.join('.')
42
- end
43
39
  end
44
40
  end
@@ -1,4 +1,4 @@
1
1
  module Evrythng
2
2
  # The version of the gem
3
- VERSION = '0.0.1'.freeze unless defined?(::Evrythng::VERSION)
3
+ VERSION = '0.0.2'.freeze unless defined?(::Evrythng::VERSION)
4
4
  end
@@ -0,0 +1,15 @@
1
+ require 'base64'
2
+
3
+ module Faraday
4
+ class Request::BasicAuthentication < Faraday::Middleware
5
+ def initialize(app, login, pass)
6
+ super(app)
7
+ @header_value = "Basic #{Base64.encode64([login, pass].join(':')).gsub("\n", '')}"
8
+ end
9
+
10
+ def call(env)
11
+ env[:request_headers]['Authorization'] = @header_value
12
+ @app.call(env)
13
+ end
14
+ end
15
+ end
metadata CHANGED
@@ -1,114 +1,110 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: evrythng
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
4
5
  prerelease:
5
- version: 0.0.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - beawesomeinstead
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-06 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2011-07-18 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: yard
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70277242139060 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
18
+ requirements:
21
19
  - - ~>
22
- - !ruby/object:Gem::Version
23
- version: "0.6"
20
+ - !ruby/object:Gem::Version
21
+ version: '0.6'
24
22
  type: :development
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: hashie
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70277242139060
25
+ - !ruby/object:Gem::Dependency
26
+ name: hashie
27
+ requirement: &70277242138440 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
29
+ requirements:
32
30
  - - ~>
33
- - !ruby/object:Gem::Version
31
+ - !ruby/object:Gem::Version
34
32
  version: 1.0.0
35
33
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: faraday
39
34
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70277242138440
36
+ - !ruby/object:Gem::Dependency
37
+ name: faraday
38
+ requirement: &70277242137960 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
40
+ requirements:
43
41
  - - ~>
44
- - !ruby/object:Gem::Version
42
+ - !ruby/object:Gem::Version
45
43
  version: 0.6.1
46
44
  type: :runtime
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: faraday_middleware
50
45
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70277242137960
47
+ - !ruby/object:Gem::Dependency
48
+ name: faraday_middleware
49
+ requirement: &70277242137460 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
51
+ requirements:
54
52
  - - ~>
55
- - !ruby/object:Gem::Version
53
+ - !ruby/object:Gem::Version
56
54
  version: 0.6.3
57
55
  type: :runtime
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: multi_json
61
56
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70277242137460
58
+ - !ruby/object:Gem::Dependency
59
+ name: multi_json
60
+ requirement: &70277242137000 !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
62
+ requirements:
65
63
  - - ~>
66
- - !ruby/object:Gem::Version
64
+ - !ruby/object:Gem::Version
67
65
  version: 1.0.0
68
66
  type: :runtime
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: multi_xml
72
67
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *70277242137000
69
+ - !ruby/object:Gem::Dependency
70
+ name: multi_xml
71
+ requirement: &70277242136520 !ruby/object:Gem::Requirement
74
72
  none: false
75
- requirements:
73
+ requirements:
76
74
  - - ~>
77
- - !ruby/object:Gem::Version
75
+ - !ruby/object:Gem::Version
78
76
  version: 0.2.0
79
77
  type: :runtime
80
- version_requirements: *id006
81
- - !ruby/object:Gem::Dependency
82
- name: rash
83
78
  prerelease: false
84
- requirement: &id007 !ruby/object:Gem::Requirement
79
+ version_requirements: *70277242136520
80
+ - !ruby/object:Gem::Dependency
81
+ name: rash
82
+ requirement: &70277242136060 !ruby/object:Gem::Requirement
85
83
  none: false
86
- requirements:
84
+ requirements:
87
85
  - - ~>
88
- - !ruby/object:Gem::Version
86
+ - !ruby/object:Gem::Version
89
87
  version: 0.3.0
90
88
  type: :runtime
91
- version_requirements: *id007
92
- - !ruby/object:Gem::Dependency
93
- name: simple_oauth
94
89
  prerelease: false
95
- requirement: &id008 !ruby/object:Gem::Requirement
90
+ version_requirements: *70277242136060
91
+ - !ruby/object:Gem::Dependency
92
+ name: simple_oauth
93
+ requirement: &70277242135560 !ruby/object:Gem::Requirement
96
94
  none: false
97
- requirements:
95
+ requirements:
98
96
  - - ~>
99
- - !ruby/object:Gem::Version
97
+ - !ruby/object:Gem::Version
100
98
  version: 0.1.5
101
99
  type: :runtime
102
- version_requirements: *id008
100
+ prerelease: false
101
+ version_requirements: *70277242135560
103
102
  description: A Ruby wrapper for the Evrythng API.
104
103
  email: graf.otodrakula@gmail.com
105
104
  executables: []
106
-
107
105
  extensions: []
108
-
109
106
  extra_rdoc_files: []
110
-
111
- files:
107
+ files:
112
108
  - README
113
109
  - Rakefile
114
110
  - evrythng.gemspec
@@ -117,12 +113,13 @@ files:
117
113
  - lib/evrythng/authentication.rb
118
114
  - lib/evrythng/client.rb
119
115
  - lib/evrythng/client/collections.rb
120
- - lib/evrythng/client/things.rb
116
+ - lib/evrythng/client/thngs.rb
121
117
  - lib/evrythng/configuration.rb
122
118
  - lib/evrythng/connection.rb
123
119
  - lib/evrythng/error.rb
124
120
  - lib/evrythng/request.rb
125
121
  - lib/evrythng/version.rb
122
+ - lib/faraday/request/basic_authentication.rb
126
123
  - lib/faraday/request/evrythng_oauth.rb
127
124
  - lib/faraday/request/gateway.rb
128
125
  - lib/faraday/request/multipart_with_file.rb
@@ -131,30 +128,26 @@ files:
131
128
  - lib/faraday/response/raise_http_5xx.rb
132
129
  homepage: http://github.com/bai/evrythng
133
130
  licenses: []
134
-
135
131
  post_install_message:
136
132
  rdoc_options: []
137
-
138
- require_paths:
133
+ require_paths:
139
134
  - lib
140
- required_ruby_version: !ruby/object:Gem::Requirement
135
+ required_ruby_version: !ruby/object:Gem::Requirement
141
136
  none: false
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: "0"
146
- required_rubygems_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
142
  none: false
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: "0"
143
+ requirements:
144
+ - - ! '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
152
147
  requirements: []
153
-
154
148
  rubyforge_project:
155
149
  rubygems_version: 1.8.5
156
150
  signing_key:
157
151
  specification_version: 3
158
152
  summary: A Ruby wrapper for the Evrythng API.
159
153
  test_files: []
160
-
@@ -1,21 +0,0 @@
1
- module Evrythng
2
- class Client
3
- # Defines methods related to things
4
- module Things
5
- # Returns a list of things
6
- #
7
- # @format :json, :xml
8
- # @authenticated true
9
- # @rate_limited true
10
- # @param options [Hash] A customizable set of options.
11
- # @return [Hashie::Rash] The requested list of things.
12
- # @see http://dev.evrythng.net/doc/get/things
13
- # @example Return the list of things
14
- # Evrythng.things
15
- def things(options={})
16
- response = get('things', options)
17
- format.to_s.downcase == 'xml' ? response['things'] : response
18
- end
19
- end
20
- end
21
- end