Merge branch 'master' of https://github.com/google/google-api-ruby-client
This commit is contained in:
commit
8f941ff90f
|
@ -0,0 +1,101 @@
|
||||||
|
# Copyright 2016 Google Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
require 'google/apis/bigquery_v2'
|
||||||
|
require 'base_cli'
|
||||||
|
|
||||||
|
|
||||||
|
module Samples
|
||||||
|
# Examples for the Google BigQuery API
|
||||||
|
#
|
||||||
|
# Sample usage:
|
||||||
|
#
|
||||||
|
# $ ./google-api-samples bigquery list_datasets --project_id=publicdata
|
||||||
|
# $ ./google-api-samples bigquery list_tables --project_id=publicdata --dataset_id=samples
|
||||||
|
# $ ./google-api-samples bigquery list_table_data --project_id=publicdata --dataset_id=samples --table_id=wikipedia --max_results=10
|
||||||
|
class Bigquery < BaseCli
|
||||||
|
Bigquery = Google::Apis::BigqueryV2
|
||||||
|
|
||||||
|
desc 'list datasets', 'List datasets'
|
||||||
|
method_option :project_id, type: :string
|
||||||
|
def list_datasets
|
||||||
|
bigquery = Bigquery::BigqueryService.new
|
||||||
|
bigquery.authorization = user_credentials_for(Bigquery::AUTH_BIGQUERY)
|
||||||
|
|
||||||
|
begin
|
||||||
|
project_id = options[:project_id] || 'publicdata'
|
||||||
|
result = bigquery.list_datasets(project_id)
|
||||||
|
data = []
|
||||||
|
data << ['id','kind']
|
||||||
|
result.datasets.each do |dataset|
|
||||||
|
data << [
|
||||||
|
dataset.id,
|
||||||
|
dataset.kind,
|
||||||
|
]
|
||||||
|
end
|
||||||
|
print_table(data)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
desc 'list tables', 'List tables'
|
||||||
|
method_option :project_id, type: :string
|
||||||
|
method_option :dataset_id, type: :string
|
||||||
|
def list_tables
|
||||||
|
bigquery = Bigquery::BigqueryService.new
|
||||||
|
bigquery.authorization = user_credentials_for(Bigquery::AUTH_BIGQUERY)
|
||||||
|
|
||||||
|
begin
|
||||||
|
project_id = options[:project_id] || 'publicdata'
|
||||||
|
dataset_id = options[:dataset_id] || 'samples'
|
||||||
|
result = bigquery.list_tables(project_id, dataset_id)
|
||||||
|
data = []
|
||||||
|
data << ['id','kind']
|
||||||
|
result.tables.each do |table|
|
||||||
|
data << [
|
||||||
|
table.id,
|
||||||
|
table.kind,
|
||||||
|
]
|
||||||
|
end
|
||||||
|
print_table(data)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
desc 'list table data', 'List table data'
|
||||||
|
method_option :project_id, type: :string
|
||||||
|
method_option :dataset_id, type: :string
|
||||||
|
method_option :table_id, type: :string
|
||||||
|
def list_table_data
|
||||||
|
bigquery = Bigquery::BigqueryService.new
|
||||||
|
bigquery.authorization = user_credentials_for(Bigquery::AUTH_BIGQUERY)
|
||||||
|
|
||||||
|
begin
|
||||||
|
project_id = options[:project_id] || 'publicdata'
|
||||||
|
dataset_id = options[:dataset_id] || 'samples'
|
||||||
|
table_id = options[:table_id] || 'wikipedia'
|
||||||
|
max_results = options[:max_results] || 10
|
||||||
|
result = bigquery.list_table_data(project_id, dataset_id, table_id, max_results: max_results)
|
||||||
|
|
||||||
|
datas = []
|
||||||
|
result.rows.each do |row|
|
||||||
|
data = []
|
||||||
|
row.f.each do |field|
|
||||||
|
data << field.v
|
||||||
|
end
|
||||||
|
datas << data
|
||||||
|
end
|
||||||
|
print_table(datas)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,61 @@
|
||||||
|
# Copyright 2016 Google Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
require 'google/apis/sheets_v4'
|
||||||
|
require 'base_cli'
|
||||||
|
|
||||||
|
|
||||||
|
module Samples
|
||||||
|
# Examples for the Google Sheets API
|
||||||
|
#
|
||||||
|
# Sample usage:
|
||||||
|
#
|
||||||
|
# $ ./google-api-samples sheets get_values --spreadsheet_key='1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms' --range='Class Data!A1:F'
|
||||||
|
#
|
||||||
|
# Student Name Gender Class Level Home State Major Extracurricular Activity
|
||||||
|
# Alexandra Female 4. Senior CA English Drama Club
|
||||||
|
# Andrew Male 1. Freshman SD Math Lacrosse
|
||||||
|
# Anna Female 1. Freshman NC English Basketball
|
||||||
|
# Becky Female 2. Sophomore SD Art Baseball
|
||||||
|
# Benjamin Male 4. Senior WI English Basketball
|
||||||
|
# Carl Male 3. Junior MD Art Debate
|
||||||
|
# Carrie Female 3. Junior NE English Track & Field
|
||||||
|
# Dorothy Female 4. Senior MD Math Lacrosse
|
||||||
|
# Dylan Male 1. Freshman MA Math Baseball
|
||||||
|
# Edward Male 3. Junior FL English Drama Club
|
||||||
|
# Ellen Female 1. Freshman WI Physics Drama Club
|
||||||
|
# Fiona Female 1. Freshman MA Art Debate
|
||||||
|
# John Male 3. Junior CA Physics Basketball
|
||||||
|
# Jonathan Male 2. Sophomore SC Math Debate
|
||||||
|
class Sheets < BaseCli
|
||||||
|
Sheets = Google::Apis::SheetsV4
|
||||||
|
|
||||||
|
desc 'get_values', 'Get values from Google Spreadseets '
|
||||||
|
method_option :spreadsheet_key, type: :string, required: true
|
||||||
|
method_option :range, type: :string, required: true
|
||||||
|
def get_values
|
||||||
|
sheets = Sheets::SheetsService.new
|
||||||
|
sheets.authorization = user_credentials_for(Sheets::AUTH_SPREADSHEETS_READONLY)
|
||||||
|
result = sheets.get_spreadsheet_values(options[:spreadsheet_key], options[:range])
|
||||||
|
data = []
|
||||||
|
rows = result.values.length
|
||||||
|
rows.times.each do |row|
|
||||||
|
data.push(result.values[row])
|
||||||
|
end
|
||||||
|
print_table(data)
|
||||||
|
end
|
||||||
|
|
||||||
|
default_task :get_values
|
||||||
|
end
|
||||||
|
end
|
|
@ -28,7 +28,9 @@ describe Google::APIClient::FileStore do
|
||||||
it 'should load credentials' do
|
it 'should load credentials' do
|
||||||
subject.path = json_file
|
subject.path = json_file
|
||||||
credentials = subject.load_credentials
|
credentials = subject.load_credentials
|
||||||
expect(credentials).to include('access_token', 'authorization_uri', 'refresh_token')
|
expect(credentials).to include(
|
||||||
|
'access_token', 'authorization_uri', 'refresh_token', 'client_id',
|
||||||
|
'client_secret', 'expires_in', 'token_credential_uri', 'issued_at')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should write credentials' do
|
it 'should write credentials' do
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
# Copyright 2016 Google Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
RSpec.describe Google::Apis::Error do
|
||||||
|
describe 'constructor' do
|
||||||
|
subject { described_class.new(error) }
|
||||||
|
|
||||||
|
describe 'message' do
|
||||||
|
context 'first arg is a string which does not respond to :backtrace' do
|
||||||
|
let(:error) { 'an error occurred' }
|
||||||
|
|
||||||
|
it 'creates a instance of Error with message' do
|
||||||
|
expect(subject.message).to eq 'an error occurred'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'first arg responds to :backtrace' do
|
||||||
|
let(:error) { double }
|
||||||
|
|
||||||
|
it 'creates a instance of Error with message' do
|
||||||
|
allow(error).to receive(:respond_to?).with(:backtrace) { true }
|
||||||
|
allow(error).to receive(:message) { 'error message' }
|
||||||
|
expect(subject.message).to eq 'error message'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'instance variables @body, @header, and @status_code' do
|
||||||
|
let(:error) { 'an error occurred' }
|
||||||
|
|
||||||
|
context 'params :body, :header, and :status_code are not given' do
|
||||||
|
it 'instance variables @body, @header, and @status_code will be nil' do
|
||||||
|
expect(subject.body).to be_nil
|
||||||
|
expect(subject.header).to be_nil
|
||||||
|
expect(subject.status_code).to be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'params :body, :header, and :status_code are given' do
|
||||||
|
subject do
|
||||||
|
described_class.new(
|
||||||
|
error,
|
||||||
|
body: 'this is body',
|
||||||
|
header: 'this is header',
|
||||||
|
status_code: 200)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'instance variables @body, @header, and @status_code will not be nil' do
|
||||||
|
expect(subject.body).to eq 'this is body'
|
||||||
|
expect(subject.header).to eq 'this is header'
|
||||||
|
expect(subject.status_code).to eq 200
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#backtrace' do
|
||||||
|
subject { described_class.new('error') }
|
||||||
|
let(:cause) { instance_double('Error', backtrace: 'this is backtrace') }
|
||||||
|
|
||||||
|
context '@cause is truthy' do
|
||||||
|
it 'calls @cause.backtrace' do
|
||||||
|
subject.instance_variable_set(:@cause, cause)
|
||||||
|
expect(subject.backtrace).to eq 'this is backtrace'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context '@cause is falsy' do
|
||||||
|
before do
|
||||||
|
subject.class.superclass.any_instance.stub(:backtrace) do
|
||||||
|
"super class's #backtrace called"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "calls super class's #backtrace" do
|
||||||
|
subject.instance_variable_set(:@cause, false)
|
||||||
|
expect(subject.backtrace).to eq "super class's #backtrace called"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue