grape-msgpack-0.1.2/0000755000175000017500000000000012546745774013630 5ustar globusglobusgrape-msgpack-0.1.2/lib/0000755000175000017500000000000012546745774014376 5ustar globusglobusgrape-msgpack-0.1.2/lib/grape/0000755000175000017500000000000012546745774015474 5ustar globusglobusgrape-msgpack-0.1.2/lib/grape/msgpack.rb0000644000175000017500000000263112546745774017450 0ustar globusglobusrequire 'msgpack' require 'grape' require 'grape/msgpack/version' module Grape # Message pack formatter for Grape module Msgpack module Formatter class << self def call(obj, env) return obj.to_msgpack if obj.respond_to?(:to_msgpack) MessagePack.pack(obj) end end end module ErrorFormatter class << self def call(message, backtrace, options = {}, env = nil) result = message.is_a?(Hash) ? message : { error: message } if (options[:rescue_options] || {})[:backtrace] && backtrace && !backtrace.empty? result = result.merge(backtrace: backtrace) end MessagePack.pack(result) end end end module Parser class << self def call(object, env) MessagePack.unpack(object) end end end end end class << Grape::Formatter::Base FORMATTERS[:msgpack] = Grape::Msgpack::Formatter end class << Grape::ErrorFormatter::Base FORMATTERS[:msgpack] = Grape::Msgpack::ErrorFormatter end class << Grape::Parser::Base PARSERS[:msgpack] = Grape::Msgpack::Parser end Grape::ContentTypes::CONTENT_TYPES[:msgpack] = 'application/x-msgpack' if defined?(Grape::Entity) class Grape::Entity def to_msgpack(pack = nil) if pack pack.write(serializable_hash) else MessagePack.pack(serializable_hash) end end end end grape-msgpack-0.1.2/lib/grape/msgpack/0000755000175000017500000000000012546745774017121 5ustar globusglobusgrape-msgpack-0.1.2/lib/grape/msgpack/version.rb0000644000175000017500000000007612546745774021136 0ustar globusglobusmodule Grape module Msgpack VERSION = '0.1.2' end end grape-msgpack-0.1.2/lib/grape-msgpack.rb0000644000175000017500000000003012546745774017435 0ustar globusglobusrequire 'grape/msgpack' grape-msgpack-0.1.2/.coveralls.yml0000644000175000017500000000003012546745774016414 0ustar globusglobusservice_name: travis-ci grape-msgpack-0.1.2/.gitignore0000644000175000017500000000023212546745774015615 0ustar globusglobus*.gem *.rbc .bundle .config .yardoc Gemfile.lock InstalledFiles _yardoc coverage doc/ lib/bundler/man pkg rdoc spec/reports test/tmp test/version_tmp tmp grape-msgpack-0.1.2/Rakefile0000644000175000017500000000016212546745774015274 0ustar globusglobusrequire 'bundler/gem_tasks' require 'rspec/core/rake_task' RSpec::Core::RakeTask.new(:spec) task default: :spec grape-msgpack-0.1.2/grape-msgpack.gemspec0000644000175000017500000000210212546745774017711 0ustar globusglobus# coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'grape/msgpack/version' Gem::Specification.new do |spec| spec.name = "grape-msgpack" spec.version = Grape::Msgpack::VERSION spec.authors = ["Sho Kusano"] spec.email = ["rosylilly@aduca.org"] spec.summary = %q{msgpack formatter for grape} spec.description = %q{msgpack formatter for grape} spec.homepage = "" spec.license = "MIT" spec.files = `git ls-files`.split($/) 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_development_dependency 'bundler' spec.add_development_dependency 'rake' spec.add_development_dependency 'rspec', '~> 2.14.1' spec.add_development_dependency 'rack-test', '~> 0.6.2' spec.add_development_dependency 'grape-entity', '~> 0.3.0' spec.add_dependency 'grape', '>= 0.6.0' spec.add_dependency 'msgpack', '~> 0.5.6' end grape-msgpack-0.1.2/spec/0000755000175000017500000000000012546745774014562 5ustar globusglobusgrape-msgpack-0.1.2/spec/grape/0000755000175000017500000000000012546745774015660 5ustar globusglobusgrape-msgpack-0.1.2/spec/grape/msgpack_spec.rb0000644000175000017500000000466312546745774020655 0ustar globusglobusrequire 'spec_helper' require 'rack/test' require 'grape-entity' require 'grape/msgpack' class MockModel def initialize(name, age) @name = name @age = age end attr_reader :name, :age end class MockEntity < Grape::Entity expose :name end class MockAPI < Grape::API rescue_from :all default_format :msgpack get :test do [1, 2, 3] end get :model do present MockModel.new('test_user', 21), with: MockEntity end get :models do present [MockModel.new('test_user', 21)], with: MockEntity end get :exception do raise StandardError, 'an error occurred' end params do requires :name, type: String end post :input do present name: params.name end end describe MockAPI do include Rack::Test::Methods def app MockAPI end describe 'GET /test' do subject(:response) do get '/test' last_response end it { expect(response.status).to eq(200) } it { expect(response.headers['Content-Type']).to eq('application/x-msgpack') } it { expect(MessagePack.unpack(response.body)).to eq([1, 2, 3]) } end describe 'GET /model' do subject(:response) do get '/model' last_response end it { expect(response.status).to eq(200) } it { expect(response.headers['Content-Type']).to eq('application/x-msgpack') } it { expect(MessagePack.unpack(response.body)).to eq('name' => 'test_user') } end describe 'GET /models' do subject(:response) do get '/models' last_response end it { expect(response.status).to eq(200) } it { expect(response.headers['Content-Type']).to eq('application/x-msgpack') } it { expect(MessagePack.unpack(response.body).first).to eq('name' => 'test_user') } end describe 'GET /exception' do subject(:response) do get '/exception' last_response end it { expect(response.status).to eq(500) } it { expect(response.headers['Content-Type']).to eq('application/x-msgpack') } it { expect(MessagePack.unpack(response.body)).to eq('error' => 'an error occurred') } end describe 'POST /input' do subject(:response) do header 'Content-Type', 'application/x-msgpack' post '/input', { name: 'joe' }.to_msgpack last_response end it { expect(response.status).to eq 201 } it { expect(response.headers['Content-Type']).to eq('application/x-msgpack') } it { expect(MessagePack.unpack(response.body)).to eq('name' => 'joe') } end end grape-msgpack-0.1.2/spec/spec_helper.rb0000644000175000017500000000032112546745774017374 0ustar globusglobusrequire 'coveralls' Coveralls.wear! RSpec.configure do |config| config.treat_symbols_as_metadata_keys_with_true_values = true config.run_all_when_everything_filtered = true config.filter_run :focus end grape-msgpack-0.1.2/README.md0000644000175000017500000000253612546745774015115 0ustar globusglobus# Grape::Msgpack [![Gem Version](https://badge.fury.io/rb/grape-msgpack.png)](http://badge.fury.io/rb/grape-msgpack) [![Build Status](https://travis-ci.org/rosylilly/grape-msgpack.png?branch=master)](https://travis-ci.org/rosylilly/grape-msgpack) [![Coverage Status](https://coveralls.io/repos/rosylilly/grape-msgpack/badge.png?branch=master)](https://coveralls.io/r/rosylilly/grape-msgpack?branch=master) [![Code Climate](https://codeclimate.com/github/rosylilly/grape-msgpack.png)](https://codeclimate.com/github/rosylilly/grape-msgpack) Message pack formatter for grape. ## Installation Add this line to your application's Gemfile: gem 'grape-msgpack' And then execute: $ bundle Or install it yourself as: $ gem install grape-msgpack ## Usage set default format msgpack: ```ruby class TwitterAPI < Grape::API default_format :msgpack end ``` and grape-msgpack supoorts grape-entity: ```ruby class ModelEntity < Grape::Entity expose :id end class ModelAPI < Grape::API default_format :msgpack get ':id' do present Model.find(params[:id]), with: ModelEntity # => { 'id' => 1 } end end ``` ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request grape-msgpack-0.1.2/LICENSE.txt0000644000175000017500000000205312546745774015453 0ustar globusglobusCopyright (c) 2013 Sho Kusano MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. grape-msgpack-0.1.2/metadata.yml0000644000175000017500000000721312546745774016136 0ustar globusglobus--- !ruby/object:Gem::Specification name: grape-msgpack version: !ruby/object:Gem::Version version: 0.1.2 platform: ruby authors: - Sho Kusano autorequire: bindir: bin cert_chain: [] date: 2014-05-10 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: bundler requirement: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: rake requirement: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: rspec requirement: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 2.14.1 type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 2.14.1 - !ruby/object:Gem::Dependency name: rack-test requirement: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 0.6.2 type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 0.6.2 - !ruby/object:Gem::Dependency name: grape-entity requirement: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 0.3.0 type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 0.3.0 - !ruby/object:Gem::Dependency name: grape requirement: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: 0.6.0 type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: 0.6.0 - !ruby/object:Gem::Dependency name: msgpack requirement: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 0.5.6 type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 0.5.6 description: msgpack formatter for grape email: - rosylilly@aduca.org executables: [] extensions: [] extra_rdoc_files: [] files: - ".coveralls.yml" - ".gitignore" - ".rspec" - ".travis.yml" - Gemfile - LICENSE.txt - README.md - Rakefile - grape-msgpack.gemspec - lib/grape-msgpack.rb - lib/grape/msgpack.rb - lib/grape/msgpack/version.rb - spec/grape/msgpack_spec.rb - spec/spec_helper.rb homepage: '' licenses: - MIT metadata: {} post_install_message: rdoc_options: [] require_paths: - lib required_ruby_version: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: '0' required_rubygems_version: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: '0' requirements: [] rubyforge_project: rubygems_version: 2.2.2 signing_key: specification_version: 4 summary: msgpack formatter for grape test_files: - spec/grape/msgpack_spec.rb - spec/spec_helper.rb grape-msgpack-0.1.2/.rspec0000644000175000017500000000003212546745774014740 0ustar globusglobus--color --format progress grape-msgpack-0.1.2/.travis.yml0000644000175000017500000000005012546745774015734 0ustar globusglobuslanguage: ruby rvm: - 1.9.3 - 2.0.0 grape-msgpack-0.1.2/Gemfile0000644000175000017500000000020312546745774015116 0ustar globusglobussource 'https://rubygems.org' # Specify your gem's dependencies in grape-msgpack.gemspec gemspec gem 'coveralls', require: false