{"action":"created","issue":{"url":"https://api.github.com/repos/degica/openlogi/issues/1","repository_url":"https://api.github.com/repos/degica/openlogi","labels_url":"https://api.github.com/repos/degica/openlogi/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/degica/openlogi/issues/1/comments","events_url":"https://api.github.com/repos/degica/openlogi/issues/1/events","html_url":"https://github.com/degica/openlogi/pull/1","id":134744215,"number":1,"title":"Initial development","user":{"login":"shioyama","id":561827,"avatar_url":"https://avatars.githubusercontent.com/u/561827?v=3","gravatar_id":"","url":"https://api.github.com/users/shioyama","html_url":"https://github.com/shioyama","followers_url":"https://api.github.com/users/shioyama/followers","following_url":"https://api.github.com/users/shioyama/following{/other_user}","gists_url":"https://api.github.com/users/shioyama/gists{/gist_id}","starred_url":"https://api.github.com/users/shioyama/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shioyama/subscriptions","organizations_url":"https://api.github.com/users/shioyama/orgs","repos_url":"https://api.github.com/users/shioyama/repos","events_url":"https://api.github.com/users/shioyama/events{/privacy}","received_events_url":"https://api.github.com/users/shioyama/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"camelmasa","id":189824,"avatar_url":"https://avatars.githubusercontent.com/u/189824?v=3","gravatar_id":"","url":"https://api.github.com/users/camelmasa","html_url":"https://github.com/camelmasa","followers_url":"https://api.github.com/users/camelmasa/followers","following_url":"https://api.github.com/users/camelmasa/following{/other_user}","gists_url":"https://api.github.com/users/camelmasa/gists{/gist_id}","starred_url":"https://api.github.com/users/camelmasa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/camelmasa/subscriptions","organizations_url":"https://api.github.com/users/camelmasa/orgs","repos_url":"https://api.github.com/users/camelmasa/repos","events_url":"https://api.github.com/users/camelmasa/events{/privacy}","received_events_url":"https://api.github.com/users/camelmasa/received_events","type":"User","site_admin":false},"milestone":null,"comments":16,"created_at":"2016-02-19T01:12:50Z","updated_at":"2016-02-23T05:51:14Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/degica/openlogi/pulls/1","html_url":"https://github.com/degica/openlogi/pull/1","diff_url":"https://github.com/degica/openlogi/pull/1.diff","patch_url":"https://github.com/degica/openlogi/pull/1.patch"},"body":"This adds a basic wrapper for the OpenLogi shipping API.\r\n\r\nI decided to use [Virtus](https://github.com/solnic/virtus) for attributes, for a few reasons:\r\n\r\n- The OpenLogi API has explicit types associated with each object returned, which match very closely Virtus' attribute types.\r\n- The API returns the same basic type (e.g. \"item\") in multiple endpoints, and also both as a single result and as collections of results. This matches well with Virtus' type system whereby you can assign an attribute the type of e.g. `Array[Openlogi::Item]` and it will handle assigning it in the background.\r\n- Avoids some boilerplate code for assigning objects, etc.\r\n\r\nI also opted to go with a set of \"endpoints\" which themselves take actions and return objects or collections of objects, like this:\r\n\r\n```ruby\r\nclient = Openlogi::Client.new(\"apikey\")\r\nclient.items.find(1)\r\n```\r\n\r\nMissing from this PR:\r\n\r\n- [ ] Error handling\r\n- [ ] Shipment endpoint specs\r\n- [ ] Non-CRUD endpoint actions (image upload, bulk upload, etc.)"},"comment":{"url":"https://api.github.com/repos/degica/openlogi/issues/comments/187549999","html_url":"https://github.com/degica/openlogi/pull/1#issuecomment-187549999","issue_url":"https://api.github.com/repos/degica/openlogi/issues/1","id":187549999,"user":{"login":"camelmasa","id":189824,"avatar_url":"https://avatars.githubusercontent.com/u/189824?v=3","gravatar_id":"","url":"https://api.github.com/users/camelmasa","html_url":"https://github.com/camelmasa","followers_url":"https://api.github.com/users/camelmasa/followers","following_url":"https://api.github.com/users/camelmasa/following{/other_user}","gists_url":"https://api.github.com/users/camelmasa/gists{/gist_id}","starred_url":"https://api.github.com/users/camelmasa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/camelmasa/subscriptions","organizations_url":"https://api.github.com/users/camelmasa/orgs","repos_url":"https://api.github.com/users/camelmasa/repos","events_url":"https://api.github.com/users/camelmasa/events{/privacy}","received_events_url":"https://api.github.com/users/camelmasa/received_events","type":"User","site_admin":false},"created_at":"2016-02-23T05:51:14Z","updated_at":"2016-02-23T05:51:14Z","body":"LGTM :+1: Great work :tada:  Can I merge it :question: "}}