glass-rails 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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