From a9496c4e788035c7c8cc7b9e1c68420ea9a66776 Mon Sep 17 00:00:00 2001 From: toshiyuki Date: Tue, 19 May 2015 12:01:52 +0900 Subject: [PATCH 1/3] fix typo client_secret --- lib/ruby-stackoverflow/configuration.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ruby-stackoverflow/configuration.rb b/lib/ruby-stackoverflow/configuration.rb index 2152399..295ebdc 100644 --- a/lib/ruby-stackoverflow/configuration.rb +++ b/lib/ruby-stackoverflow/configuration.rb @@ -1,7 +1,7 @@ module RubyStackoverflow class Configuration - attr_accessor :client_id, :client_sceret , :client_key, :access_token, :api_url + attr_accessor :client_id, :client_secret , :client_key, :access_token, :api_url def self.api_url 'https://api.stackexchange.com/2.2/' From e675ec0cf4bee29f740b68022a14516126351752 Mon Sep 17 00:00:00 2001 From: toshiyuki Date: Tue, 19 May 2015 14:40:45 +0900 Subject: [PATCH 2/3] add fields --- lib/ruby-stackoverflow/client/response_data.rb | 7 ++++++- spec/ruby-stackoverflow/response_data_spec.rb | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 spec/ruby-stackoverflow/response_data_spec.rb diff --git a/lib/ruby-stackoverflow/client/response_data.rb b/lib/ruby-stackoverflow/client/response_data.rb index 366995c..f51eb20 100644 --- a/lib/ruby-stackoverflow/client/response_data.rb +++ b/lib/ruby-stackoverflow/client/response_data.rb @@ -1,14 +1,19 @@ module RubyStackoverflow class Client class ResponseData - attr_reader :data, :has_more, :error + attr_reader :data, :has_more, :error, :raw_response, :raw_data, :quota_max, :quota_remaining, :backoff def initialize(response, klass) + @raw_response = response if response[:items].nil? @error = StackoverflowError.new(response) else @data = format_data(response[:items], klass) @has_more = response[:has_more] + @raw_data = response[:items] + @quota_max = response[:quota_max] + @quota_remaining = response[:quota_remaining] + @backoff = response[:backoff] end end diff --git a/spec/ruby-stackoverflow/response_data_spec.rb b/spec/ruby-stackoverflow/response_data_spec.rb new file mode 100644 index 0000000..bd68572 --- /dev/null +++ b/spec/ruby-stackoverflow/response_data_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper' +require 'json' + +module RubyStackoverflow + describe Client::ResponseData do + it 'should response data fields' do + data = JSON.parse(fixture("users.json").read, {:symbolize_names => true}) + response = Client::ResponseData.new(data, 'user') + expect(response.data.count).to eq(1) + expect(response.raw_data.count).to eq(1) + expect(response.quota_max).to eq(10000) + expect(response.quota_remaining).to eq(9996) + expect(response.backoff).to be_nil + end + end +end From 37666d638bda4ddbda07d4302e5cc5241e4bf84c Mon Sep 17 00:00:00 2001 From: toshiyuki Date: Tue, 26 May 2015 17:09:48 +0900 Subject: [PATCH 3/3] lazy load data --- lib/ruby-stackoverflow/client/response_data.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/ruby-stackoverflow/client/response_data.rb b/lib/ruby-stackoverflow/client/response_data.rb index f51eb20..82c247d 100644 --- a/lib/ruby-stackoverflow/client/response_data.rb +++ b/lib/ruby-stackoverflow/client/response_data.rb @@ -1,22 +1,27 @@ module RubyStackoverflow class Client class ResponseData - attr_reader :data, :has_more, :error, :raw_response, :raw_data, :quota_max, :quota_remaining, :backoff + attr_reader :has_more, :error, :raw_response, :raw_data, :quota_max, :quota_remaining, :backoff def initialize(response, klass) @raw_response = response if response[:items].nil? @error = StackoverflowError.new(response) else - @data = format_data(response[:items], klass) - @has_more = response[:has_more] + @klass = klass @raw_data = response[:items] + @has_more = response[:has_more] @quota_max = response[:quota_max] @quota_remaining = response[:quota_remaining] @backoff = response[:backoff] end end + def data + return nil if @raw_data.nil? + @data ||= format_data(@raw_data.clone, @klass) + end + def format_data(data, klass) eval(klass.capitalize).parse_data(data) end