contextio 1.2.3 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changes
2
2
 
3
+ ## 1.2.4
4
+
5
+ * Add link to gem documentation to top of README. - Ben Hamill
6
+ * Expand README to clarify gem usage. - Ben Hamill
7
+ * Make `ResourceCollection#[]` correctly pass down the "owning" associated
8
+ object to instances created with it. - Ben Hamill
9
+ * Work around the OAuth gem handling PUT request signing a bit oddly. - Ben
10
+ Hamill
11
+
3
12
  ## 1.2.3
4
13
 
5
14
  * Fix infinite loop in ConnectToken URL building. - Ben Hamill
data/README.md CHANGED
@@ -2,24 +2,50 @@
2
2
 
3
3
  * [Homepage](https://github.com/contextio/contextio-ruby#readme)
4
4
  * [API Documentation](http://context.io/docs/2.0/)
5
+ * [Gem Documentation](http://rubydoc.info/gems/contextio/frames)
5
6
  * [Sign Up](http://context.io)
6
7
 
8
+
7
9
  ## Description
8
10
 
9
11
  Provides a Ruby interface to [Context.IO](http://context.io). The general design
10
12
  was inspired by the wonderful [aws-sdk](https://github.com/aws/aws-sdk-ruby)
11
13
  gem. You start with an object that represents your account with Context.IO and
12
- then you deal with collections within that going forward. Check out the example.
14
+ then you deal with collections within that going forward (see the [Usage
15
+ section](#usage)).
16
+
17
+
18
+ ## A Note On Method Names
19
+
20
+ If you're looking at the [Context.IO docs](http://context.io/docs/2.0/), it is
21
+ important to note that there are some attributes that've been renamed to be a
22
+ bit more Ruby-friendly. In general, if the API returns a number meant to be
23
+ seconds-from-epoch, then it's been converted to return a `Time` (e.g. `updated`
24
+ has changed to `updated_at`) and a boolean has converted to something with a `?`
25
+ at the end (e.g. `HasChildren` and `initial_import_finished` are `has_children?`
26
+ and `initial_import_finished?`, respectively). See the [gem
27
+ docs](http://rubydoc.info/gems/contextio/frames) for a specific class when in
28
+ doubt.
29
+
30
+
31
+ ## Install
32
+
33
+ $ gem install contextio
34
+
35
+ Or, of course, put this in your Gemfile:
36
+
37
+ gem contextio
13
38
 
14
- If you're looking at the Context.IO docs, it is important to note that there are
15
- some attributes that've been renamed to be a bit more Ruby-friendly. In general,
16
- if the API returns a number meant to be seconds-from-epoch, then it's been
17
- converted to return a `Time` (e.g. `updated` has changed to `updated_at`) and a
18
- boolean has converted to something with a `?` at the end (e.g. `HasChildren` and
19
- `initial_import_finished` are `has_children?` and `initial_import_finished?`,
20
- respectively).
21
39
 
22
- ## Examples
40
+ ## Version Numbers
41
+
42
+ This gem adheres to [SemVer](http://semver.org/). So you should be pretty safe
43
+ upgrading from 1.0.0 to 1.9.9. Whatever as long as the major version doesn't
44
+ bump. When the major version bumps, be warned; upgrading will take some kind of
45
+ effort.
46
+
47
+
48
+ ## Usage
23
49
 
24
50
  ```ruby
25
51
  require 'contextio'
@@ -47,23 +73,53 @@ require 'contextio'
47
73
  contextio = ContextIO.new('your_api_key', 'your_api_secret')
48
74
 
49
75
  account = contextio.accounts[some_account_id]
50
- email_Address = account.messages[some_message_id]
76
+ message = account.messages[some_message_id]
51
77
  ```
52
78
 
53
- ## Install
54
79
 
55
- $ gem install contextio
80
+ ### On Laziness
56
81
 
57
- Or, of course, put this in your Gemfile:
82
+ This gem is architected to be as lazy as possible. It won't make an HTTP request
83
+ until you ask it for some data that it knows it needs to fetch. An example might
84
+ be illustrative:
58
85
 
59
- gem contextio
86
+ ```ruby
87
+ require 'contextio'
60
88
 
61
- ## Version Numbers
89
+ contextio = ContextIO.new('your_api_key', 'your_api_secret')
90
+
91
+ account = contextio.accounts['1234'] # No request made here.
92
+ account.last_name # Request made here.
93
+ account.first_name # No request made here.
94
+ ```
95
+
96
+ Note that when it made the request, it stored the data it got back, which
97
+ included the first name, so it didn't need to make a second request. Asking for
98
+ the value of any attribute listed in the [gem
99
+ docs](http://rubydoc.info/gems/contextio/frames) will trigger the request.
100
+
101
+
102
+ ### On Requests and Methods
103
+
104
+ There are some consistent mappings between the requests documented in the [API
105
+ docs](http://context.io/docs/2.0/) and the methods implemented in the gem.
106
+
107
+ **For collections of resources:**
108
+
109
+ * the object its self sort of represents the collection-level `GET` (treat it
110
+ like any other `Enumerable`).
111
+ * `#where` is how you set up the filters on the collection-level `GET`.
112
+ * `#create` maps to the collection-level `POST` or `PUT`, as appropriate.
113
+ * `#[]` maps to the individual-level `GET`, but (as mentioned above) is lazy.
114
+
115
+ **For individual resources**
116
+
117
+ * the object its self sort of represents the individual-level `GET` (but see
118
+ `#[]` above).
119
+ * `#delete` maps to the individual-level `DELETE`.
120
+ * `#update` maps to the individual-level `POST` (except in a few cases like
121
+ `Message#copy_to` and `Message#move_to`).
62
122
 
63
- This gem adheres to [SemVer](http://semver.org/). So you should be pretty safe
64
- upgrading from 1.0.0 to 1.9.9. Whatever as long as the major version doesn't
65
- bump. When the major version bumps, be warned; upgrading will take some kind of
66
- effort.
67
123
 
68
124
  ## Contributing
69
125
 
@@ -81,8 +137,9 @@ likely to get in (or get in faster) the closer you stick to these steps:
81
137
  If you don't know how to fix something, even just a Pull Request that includes a
82
138
  failing test can be helpful. If in doubt, make an Issue to discuss.
83
139
 
140
+
84
141
  ## Copyright
85
142
 
86
143
  Copyright (c) 2012 Context.IO
87
144
 
88
- See LICENSE.md for details.
145
+ This gem is distributed under the MIT License. See LICENSE.md for details.
@@ -190,7 +190,7 @@ class ContextIO
190
190
  # resource.
191
191
  def belongs_to(association_name)
192
192
  define_method(association_name) do
193
- if instance_variable_get("@#{association_name}")
193
+ if instance_variable_defined?("@#{association_name}")
194
194
  instance_variable_get("@#{association_name}")
195
195
  else
196
196
  association_attrs = api_attributes[association_name.to_s]
@@ -219,7 +219,15 @@ class ContextIO
219
219
  define_method(association_name) do
220
220
  association_class = ContextIO::API::AssociationHelpers.class_for_association_name(association_name)
221
221
 
222
- instance_variable_get("@#{association_name}") || instance_variable_set("@#{association_name}", association_class.new(api, self.class.association_name => self, attribute_hashes: api_attributes[association_name.to_s]))
222
+ instance_variable_get("@#{association_name}") ||
223
+ instance_variable_set(
224
+ "@#{association_name}",
225
+ association_class.new(
226
+ api,
227
+ self.class.association_name => self,
228
+ attribute_hashes: api_attributes[association_name.to_s]
229
+ )
230
+ )
223
231
  end
224
232
 
225
233
  associations << association_name.to_sym
@@ -103,7 +103,7 @@ class ContextIO
103
103
  # @param [String] key The Provider Consumer Key for the
104
104
  # provider you want to interact with.
105
105
  def [](key)
106
- resource_class.new(api, resource_class.primary_key => key)
106
+ resource_class.new(api, associations_hash.merge(resource_class.primary_key => key))
107
107
  end
108
108
 
109
109
  private
data/lib/contextio/api.rb CHANGED
@@ -130,10 +130,14 @@ class ContextIO
130
130
  def oauth_request(method, resource_path, params, headers=nil)
131
131
  headers ||= { 'Accept' => 'application/json', 'User-Agent' => user_agent_string }
132
132
 
133
- if %w(put post).include? method.to_s.downcase
133
+ # The below array used to include put, too, but there is a weirdness in
134
+ # the oauth gem with PUT and signing requests. See
135
+ # https://github.com/oauth/oauth-ruby/pull/34#issuecomment-5862199 for
136
+ # some discussion on the matter. This is a work-around.
137
+ if %w(post).include? method.to_s.downcase
134
138
  token.request(method, path(resource_path), params, headers)
135
139
  else # GET, DELETE, HEAD, etc.
136
- token.request(method, path(resource_path, params), headers)
140
+ token.request(method, path(resource_path, params), nil, headers)
137
141
  end
138
142
  end
139
143
 
@@ -1,6 +1,6 @@
1
1
  class ContextIO
2
2
  # @private
3
- VERSION = "1.2.3"
3
+ VERSION = "1.2.4"
4
4
 
5
5
  # The gem version.
6
6
  #
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+ require 'contextio'
3
+
4
+ describe "A Message created from an Account" do
5
+ let(:api) { double(:api) }
6
+ let(:account) { ContextIO::Account.new(api, id: '1234', messages: [{}]) }
7
+ let(:message) { account.messages['4321'] }
8
+
9
+ it "has a handle back to the account" do
10
+ expect(message.account).to be(account)
11
+ end
12
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contextio
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-14 00:00:00.000000000 Z
12
+ date: 2013-02-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oauth
@@ -208,23 +208,24 @@ files:
208
208
  - lib/contextio/webhook.rb
209
209
  - lib/contextio/webhook_collection.rb
210
210
  - spec/config.yml.example
211
- - spec/contextio/account_collection_spec.rb
212
- - spec/contextio/account_spec.rb
213
- - spec/contextio/api/association_helpers_spec.rb
214
- - spec/contextio/api/resource_collection_spec.rb
215
- - spec/contextio/api/resource_spec.rb
216
- - spec/contextio/api/url_builder_spec.rb
217
- - spec/contextio/api_spec.rb
218
- - spec/contextio/connect_token_collection_spec.rb
219
- - spec/contextio/connect_token_spec.rb
220
- - spec/contextio/email_settings_spec.rb
221
- - spec/contextio/oauth_provider_collection_spec.rb
222
- - spec/contextio/oauth_provider_spec.rb
223
- - spec/contextio/source_collection_spec.rb
224
- - spec/contextio/source_spec.rb
225
- - spec/contextio/version_spec.rb
226
- - spec/contextio_spec.rb
211
+ - spec/integration/accounts_messages_spec.rb
227
212
  - spec/spec_helper.rb
213
+ - spec/unit/contextio/account_collection_spec.rb
214
+ - spec/unit/contextio/account_spec.rb
215
+ - spec/unit/contextio/api/association_helpers_spec.rb
216
+ - spec/unit/contextio/api/resource_collection_spec.rb
217
+ - spec/unit/contextio/api/resource_spec.rb
218
+ - spec/unit/contextio/api/url_builder_spec.rb
219
+ - spec/unit/contextio/api_spec.rb
220
+ - spec/unit/contextio/connect_token_collection_spec.rb
221
+ - spec/unit/contextio/connect_token_spec.rb
222
+ - spec/unit/contextio/email_settings_spec.rb
223
+ - spec/unit/contextio/oauth_provider_collection_spec.rb
224
+ - spec/unit/contextio/oauth_provider_spec.rb
225
+ - spec/unit/contextio/source_collection_spec.rb
226
+ - spec/unit/contextio/source_spec.rb
227
+ - spec/unit/contextio/version_spec.rb
228
+ - spec/unit/contextio_spec.rb
228
229
  homepage: https://github.com/contextio/contextio-ruby#readme
229
230
  licenses:
230
231
  - MIT
@@ -252,21 +253,22 @@ specification_version: 3
252
253
  summary: Provides interface to Context.IO
253
254
  test_files:
254
255
  - spec/config.yml.example
255
- - spec/contextio/account_collection_spec.rb
256
- - spec/contextio/account_spec.rb
257
- - spec/contextio/api/association_helpers_spec.rb
258
- - spec/contextio/api/resource_collection_spec.rb
259
- - spec/contextio/api/resource_spec.rb
260
- - spec/contextio/api/url_builder_spec.rb
261
- - spec/contextio/api_spec.rb
262
- - spec/contextio/connect_token_collection_spec.rb
263
- - spec/contextio/connect_token_spec.rb
264
- - spec/contextio/email_settings_spec.rb
265
- - spec/contextio/oauth_provider_collection_spec.rb
266
- - spec/contextio/oauth_provider_spec.rb
267
- - spec/contextio/source_collection_spec.rb
268
- - spec/contextio/source_spec.rb
269
- - spec/contextio/version_spec.rb
270
- - spec/contextio_spec.rb
256
+ - spec/integration/accounts_messages_spec.rb
271
257
  - spec/spec_helper.rb
258
+ - spec/unit/contextio/account_collection_spec.rb
259
+ - spec/unit/contextio/account_spec.rb
260
+ - spec/unit/contextio/api/association_helpers_spec.rb
261
+ - spec/unit/contextio/api/resource_collection_spec.rb
262
+ - spec/unit/contextio/api/resource_spec.rb
263
+ - spec/unit/contextio/api/url_builder_spec.rb
264
+ - spec/unit/contextio/api_spec.rb
265
+ - spec/unit/contextio/connect_token_collection_spec.rb
266
+ - spec/unit/contextio/connect_token_spec.rb
267
+ - spec/unit/contextio/email_settings_spec.rb
268
+ - spec/unit/contextio/oauth_provider_collection_spec.rb
269
+ - spec/unit/contextio/oauth_provider_spec.rb
270
+ - spec/unit/contextio/source_collection_spec.rb
271
+ - spec/unit/contextio/source_spec.rb
272
+ - spec/unit/contextio/version_spec.rb
273
+ - spec/unit/contextio_spec.rb
272
274
  has_rdoc: