glass-rails 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -175,7 +175,7 @@ could instantiate a new instance of the class and assign it
175
175
  an associated google account like so
176
176
 
177
177
  ```ruby
178
- gt = Glass::Tweet.new(google_account_id: GoogleAccount.first)
178
+ gt = Glass::Tweet.new(google_account_id: GoogleAccount.first.id)
179
179
  ```
180
180
  Then, you can populate an erb template with instance variables by
181
181
  using the `serialize` method which is available to all subclasses
@@ -196,8 +196,8 @@ For example, let's say you have the following erb template:
196
196
  You can serialize the template for a glass::tweet instance like so:
197
197
 
198
198
  ```ruby
199
- gt = Glass::Tweet.new(google_account_id: GoogleAccount.first)
200
- gt.serialize({template_variables: {content: "asdfasdfasdf", title: "title"}})
199
+ gt = Glass::Tweet.new(google_account_id: GoogleAccount.first.id)
200
+ gt.serialize({template_variables: {content: "random stuff", title: "title"}})
201
201
  ```
202
202
 
203
203
  which will basically populate the `@content` and `@title` instance variables
data/lib/glass/client.rb CHANGED
@@ -5,7 +5,8 @@ module Glass
5
5
  class Client
6
6
  attr_accessor :access_token, :google_client, :mirror_api,
7
7
  :google_account, :refresh_token, :content,
8
- :mirror_content_type, :timeline_item, :has_expired_token
8
+ :mirror_content_type, :timeline_item, :has_expired_token,
9
+ :api_keys, :timeline_list
9
10
 
10
11
 
11
12
 
@@ -18,6 +19,7 @@ module Glass
18
19
 
19
20
 
20
21
  def initialize(opts)
22
+ self.api_keys = opts[:api_keys] || ::Glass::ApiKeys.new
21
23
  self.google_client = ::Google::APIClient.new
22
24
  self.mirror_api = google_client.discovered_api("mirror", "v1")
23
25
  self.google_account = opts[:google_account]
@@ -56,7 +58,15 @@ module Glass
56
58
  end
57
59
 
58
60
  def json_content(options)
59
- mirror_api.timeline.insert.request_schema.new(self.timeline_item.to_json.merge(options))
61
+ if c = options[:content]
62
+ data = c.is_a?(String) ? {text: c} : c
63
+ else
64
+ data = self.timeline_item.to_json.merge(options)
65
+ end
66
+ mirror_api.timeline.insert.request_schema.new(data)
67
+ end
68
+ def text_content(text)
69
+ mirror_api.timeline.insert.request_schema.new({text: text})
60
70
  end
61
71
 
62
72
  ## optional parameter is merged into the content hash
@@ -64,12 +74,48 @@ module Glass
64
74
  ## specific stuff like speakableText parameters.
65
75
 
66
76
  def insert(options={})
67
- body_object = options[:content] || json_content(options)
77
+ body_object = json_content(options)
68
78
  inserting_content = { api_method: mirror_api.timeline.insert,
69
79
  body_object: body_object }
70
80
  google_client.execute(inserting_content)
71
81
  end
72
82
 
83
+
84
+ def timeline_list(opts={as_hash: true})
85
+ retval = @timeline_list.nil? ? self.list(opts) : @timeline_list
86
+ opts[:as_hash] ? retval.map(&:to_hash) : retval
87
+ end
88
+
89
+
90
+
91
+ ### this method is pretty much extracted directly from
92
+ ### the mirror API code samples in ruby
93
+ ###
94
+ ### https://developers.google.com/glass/v1/reference/timeline/list
95
+
96
+ def list(opts={as_hash: true})
97
+ page_token = nil
98
+ parameters = {}
99
+ self.timeline_list = []
100
+ begin
101
+ parameters = {}
102
+ parameters['pageToken'] = page_token if page_token.present?
103
+ api_result = google_client.execute(api_method: mirror_api.timeline.list,
104
+ parameters: parameters)
105
+ if api_result.success?
106
+ timeline_items = api_result.data
107
+ page_token = nil if timeline_items.items.empty?
108
+ if timeline_items.items.any?
109
+ @timeline_list.concat(timeline_items.items)
110
+ page_token = timeline_items.next_page_token
111
+ end
112
+ else
113
+ puts "An error occurred: #{result.data['error']['message']}"
114
+ page_token = nil
115
+ end
116
+ end while page_token.to_s != ''
117
+ timeline_list(opts)
118
+ end
73
119
  def delete(options={})
74
120
  deleting_content = { api_method: mirror_api.timeline.delete,
75
121
  parameters: options }
@@ -83,9 +129,8 @@ module Glass
83
129
  private
84
130
 
85
131
  def setup_with_our_access_tokens
86
- api_keys = Glass::ApiKeys.new
87
132
  ["client_id", "client_secret"].each do |meth|
88
- google_client.authorization.send("#{meth}=", api_keys.send(meth))
133
+ google_client.authorization.send("#{meth}=", self.api_keys.send(meth))
89
134
  end
90
135
  end
91
136
 
@@ -1,5 +1,5 @@
1
1
  module Glass
2
2
  module Rails
3
- VERSION="0.0.7"
3
+ VERSION="0.0.8"
4
4
  end
5
5
  end
@@ -179,7 +179,7 @@ module Glass
179
179
 
180
180
  ## For example,
181
181
  ## @google_account = GoogleAccount.first
182
- ## @timeline_object = TimelineObject.new(google_account_id: @google_account.id)
182
+ ## @timeline_object = Glass::TimelineItem.new(google_account_id: @google_account.id)
183
183
  ## @timeline_object.serialize({template_variables: {content: "this is the content
184
184
  ## i've pushed to glass"}})
185
185
  ##
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glass-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-05-29 00:00:00.000000000 Z
13
+ date: 2013-05-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: railties