Skip to content

Commit

Permalink
Implements simple #get
Browse files Browse the repository at this point in the history
  • Loading branch information
inf0rmer committed Dec 19, 2014
1 parent 99c6688 commit 091c4d1
Show file tree
Hide file tree
Showing 7 changed files with 91 additions and 3 deletions.
11 changes: 11 additions & 0 deletions Guardfile
@@ -0,0 +1,11 @@
guard 'rspec', cmd: 'bundle exec rspec --color' do
# watch /lib/ files
watch(%r{^lib/(.+).rb$}) do |m|
"spec/#{m[1]}_spec.rb"
end

# watch /spec/ files
watch(%r{^spec/(.+).rb$}) do |m|
"spec/#{m[1]}.rb"
end
end
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -21,7 +21,7 @@ Or install it yourself as:
## Usage

```ruby
github = blanket("https://api.github.com")
github = Blanket.wrap("https://api.github.com")

# Get some user's info
github.users('inf0rmer').get
Expand Down
10 changes: 9 additions & 1 deletion Rakefile
@@ -1,2 +1,10 @@
require "bundler/gem_tasks"
require 'rspec/core/rake_task'
require 'bundler/gem_tasks'

# Default directory to look in is `/specs`
# Run with `rake spec`
RSpec::Core::RakeTask.new(:spec) do |task|
task.rspec_opts = ['--color', '--format', 'nested']
end

task :default => :spec
9 changes: 9 additions & 0 deletions blanket.gemspec
Expand Up @@ -17,7 +17,16 @@ Gem::Specification.new do |spec|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
spec.require_paths = ["lib"]

spec.add_dependency "httparty"

spec.add_development_dependency "bundler", "~> 1.7"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "rspec"
spec.add_development_dependency "rspec-nc"
spec.add_development_dependency "guard"
spec.add_development_dependency "guard-rspec"
spec.add_development_dependency "pry"
spec.add_development_dependency "pry-remote"
spec.add_development_dependency "pry-nav"
end
34 changes: 33 additions & 1 deletion lib/blanket.rb
@@ -1,5 +1,37 @@
require "blanket/version"
require 'httparty'

module Blanket
# Your code goes here...
def self.wrap(base_uri)
Blanket.new base_uri
end

class Blanket
def initialize(base_uri)
@base_uri = base_uri
@uri_parts = []
end

def get
HTTParty.get uri_from_parts(@base_uri.clone, @uri_parts.clone)
@uri_parts = []
end

def respond_to?(method, include_private = false)
true
end

def method_missing(method, *args, &block)
@uri_parts << method
self
end

private

def uri_from_parts(base_uri, parts)
parts.inject(base_uri) do |memo, part|
memo << "/#{part}"
end
end
end
end
26 changes: 26 additions & 0 deletions spec/blanket_spec.rb
@@ -0,0 +1,26 @@
require 'spec_helper'

describe Blanket do
describe '#get' do
let :api do
Blanket::wrap("http://api.example.org")
end

before :each do
allow(HTTParty).to receive(:get)
end

it 'GETs a simple resource' do
api.users.get()

expect(HTTParty).to have_received(:get).with("http://api.example.org/users")
end

it 'resets after performing a request' do
api.users.get()
api.videos.get()

expect(HTTParty).to have_received(:get).with("http://api.example.org/videos")
end
end
end
2 changes: 2 additions & 0 deletions spec/spec_helper.rb
@@ -0,0 +1,2 @@
require 'pry'
require 'Blanket'

0 comments on commit 091c4d1

Please sign in to comment.