Box API - The Timestamp type - box-api

I'm trying to upload a file via Box API and I want to specify the content_modified_at parameter. However, I always receive an error in response, saying that I specify the date not in ISO 8601 format. I double-checked the format I'm sending, and it's definitely ISO 8601.
If I don't specify this field, the file is created successfully.
The field in my request has format "2013-04-21T19:39:16+03:00",
and I'm not sure how this is different from "2012-12-12T11:04:26-08:00" that is used in Box API docs
Here is the full listing of my request and response:
-------------- REQUEST --------------
POST https://upload.box.com/api/2.0/files/content
Accept-Encoding: gzip
Authorization: Bearer [hidden]
User-Agent: Google-HTTP-Java-Client/1.14.1-beta (gzip)
Content-Type: multipart/form-data; boundary=__END_OF_PART__
--__END_OF_PART__
Content-Type: application/octet-stream
content-disposition: form-data; name="filename"; filename="file1.txt"
1234567890
--__END_OF_PART__
content-disposition: form-data; name="parent_id"
760503410
--__END_OF_PART__
content-disposition: form-data; name="content_modified_at"
2013-04-21T19:39:16+03:00
--__END_OF_PART__--
-------------- RESPONSE --------------
HTTP/1.1 400 Bad Request
Date: Sun, 21 Apr 2013 17:01:23 GMT
Content-Length: 193
X-Error-Handling: entry;index.php|rid;132352423451741b638d902|runmode;box_api_v2|user;2|user;193761140|
Connection: close
Content-Type: application/json
Server: Apache/2.2.15 (Scientific Linux)
Cache-Control: no-cache, no-store
{"type":"error","status":400,"code":"bad_request","help_url":"http:\/\/developers.box.com\/docs\/#errors","message":"not a valid iso 8601 formatted date","request_id":"132352423451741b638d902"}
UPDATE:
Does anybody of the Box team actually care about this? Does it mean there is a mistake in the services or just nobody wants to explain me what was my fault?

There is an issue with our time stamp parser that we're in the process of fixing.
You should see now issues if you set the timestamp to UTC and send it with a
timezone offset of -00:00, e.g.
2013-04-17T09:12:36-00:00
Again, this is an issue on our end that we're working on resolving.

Related

JSON HTTP response body from rails seems to be invalid

I am working with rails, and returning a json response with the below method
def return_json
render json: params
end
When i am viewing the response on chrome developers tools, everything seems to be right. But when i trace the HTTP response on wireshark, on HTTP response body it seems that some extra characters exists.
HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Wed, 05 Jul 2017 17:07:48 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: max-age=0, private, must-revalidate
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Runtime: 0.433854
X-Request-Id: f46a0e87-6969-4285-9b80-da0223edac01
X-Powered-By: Phusion Passenger 5.1.5
Status: 200 OK
49
{"device_attributes":[{"id":"85","value":"35"},{"id":"80","value":"65"}]}
0
(extra empty line)
I'm talking about the number 49 which is in hex and it seems to be the length of the JSON string. And after that it follows a 0 with an empty line.
Wireshark screenshot which shows the response
First of all, i would like to ask, what a valid HTTP response look like?
I think that after headers, follows an empty line and then the response body and after that nothing.
And second why rails do that and if there is a way to change that. I think that rails do that, because i get the same response from apache + phusion passenger and also puma. Also i tried this from some other code, not related to rails, and the HTTP response it was as i explained earlier and not as rails does.
I did not found out the answer i was looking for, but a workaround in order for the extra info to be removed, is to render as follows:
render plain: ActiveSupport::JSON.encode({ result: :ok })
This work around does set content-type as 'text/plain' and not 'application/json'. If you set content-type in render options as 'application/json' this extra info are being displayed again.
So i will assume that has something to do with the json renderer module, but i can't research it more at this time.

Reverse Engineer HTTP request

I intercepted an HTTP request on Charles originating from iPhone to Instagram and here are the headers
POST /logging_client_events HTTP/1.1
Host: graph.instagram.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Connection: keep-alive
Accept: */*
User-Agent: Instagram 10.0.1 (iPhone8,1; iOS 10_1_1; en_IN; en-IN; en; scale=2.00; 750x1334) AppleWebKit/420+
Accept-Language: en-IN;q=1.0, hi-IN;q=0.9,
Content-Length: 1601
Accept-Encoding: gzip, deflate
There is a Post data as well in the request that is compressed. My question is how can I uncompress the Post data? Perhaps any method in NSData that can decompress?
EDIT: Here is the complete HTTP request
POST /logging_client_events HTTP/1.1
Host: graph.instagram.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Connection: keep-alive
Accept: */*
User-Agent: Instagram 10.3.0 (iPhone8,1; iOS 10_1_1; en_IN; en-IN; scale=2.00; gamut=normal; 750x1334) AppleWebKit/420+
Accept-Language: en-IN;q=1, hi-IN;q=0.9
Content-Length: 4585
Accept-Encoding: gzip, deflate
message=eNrtXG1v4kgS%2FiunfLqTAupXtzvSfiAxZInOZsmQEPt0sowxYGNj1jZDYLX326%2FaMBNICJMsZCajTUZRwO6XqvJT1c%2FTtuePE286dcP%2BydkJJgwRxgUjumCYnZyezMrjCD4VYRKcnGGmU0GIQKiKGEWUnZa9PweZ6o6qtIr%2B8U%2BmIYGEwP%2BCbv3gc%2BgH6%2BHPBdcb51rFuJCNCmsYuKJf6EZFq%2BlMN2pGDV0I6DLwkjBeuJs9Gb1gBqnXK3rDqFfAPKMi8UWtYvCaIKyGOZM16JkHeR6mk1Wf8xqqo4sGhuYNvcIouaicn2ukQhr8HLzQ5LlGlYFe4Z2c%2FeePkyTtz2JwUTkExyee8vdkHvTy1B8Hheunk0ngF65XFEEyLR6HRJOkyhETQp6eBPdFBoP%2BcTIdwxCE6IxSHWvs5M8%2FT5%2BbKBy6vwducD9N81kW7Bxdl4xvDD7M0tkUehZBXrhgZOjFysgCGrgQBD8Og4kys4zGhhGnT8xSg06DDCaEDqUpYZq7gyDou7NB6GZBP8jD4eRg8zmjz9h%2FgJm59zk40DJJBZI7LMvSOE5nhxq3CmSRpnERTh9ZujoFneJwEjzYnAVB7IIxCzdMptkK1bss1zHBSGxYXvYBT8NC9ThDu%2ByMQ7CpnMFPZ8pYaFX220of1vOQlJT3PU2ygAVSoCDQexj7cuB5PoGBklkB1j8ayXOfzjjycjdZlC3LNp%2FDYP605ySYPz4U5u6Xo%2BD3kUMnNKy%2Fy9BxRDgl6L0GjhCKtPcYOCw1LHWpi3cbOU0I%2Bh4jxwXXpIDL%2Bl4jR%2BHL%2B0xWiTSJEf3ekQsneeENMy9x02zoTULfzWe9b0WRYUQ2gpinswwYVjpwPX8VxyezJS5YiNXf8P6ZMH9JPqYLKAyA8cdE7KG1SwhCmoHrFUSpVmE65hXJiKzUmDwX9QuBGoZWzroekmANuCb0pPCLMMLu1jTghz8OJ0NYXMeBMj9YXC29bn9m311jP7kJW2Ez%2FPfF1dy%2Bi%2FMeaYyb0VQ0k3h5Rxozu3vP%2B5dx5GOJ%2FKQReeRWnUf%2B5DaGPkvn7orA76B%2FKTOny9RY95YxXFrLOrIMe2EZTTIw6siM6sSM%2FLnZsZG5rBPLqN2bRkM3oyazDHPZMuDYr3NiR7W5Y9jEurSxZViRc2mFrc7VuHXZntvLm3tzeTuyl6NRq9tcOJGN7ChO7ATmjBqh1akRK7LnLaMxhvMwvjW2E5s1w3nYv7udOhdNrRn53InaBNou7K4zbnXgcxfGTG4jJ2kvra6JreUNjNskZqe9AHsX1rIG47eXpe1GfW5%2BupLgu%2FIb4ihnzSjFg%2FYvvyhWrrjQ3AXUFbNcIaX8DsE%2FjHsBJoXcxQo79U%2BdQ8nr57AfpK4fxLHrzYp0GkPy92bDAWB52%2BiV1niwe831FYT9kTcZ7jZdSkz2sf3TjXGUlAgH4dYxlbLFYqomvOhce%2F0wrfk%2BZE4n8EeTNE6Hi18%2FGb%2FVngY4Dn2vWCX52uDYm038kTvLvV6801hJgVNsqoe1yxCw30bpJNBPMXRL85WMw1X1LZyEBaSWux48gZOYy6rATEisqbKn3H%2Fq9Zd%2BE8BL2QlxGFAirlP40TQQjT1IXHWlJ31XtT45G3hxHjx0VQUJqrfqrWFRFZqmC45AnGJNf2i1crdspUtcZYKXhjGuYfqCoE1n%2BQiMLOC6rE7BylAUCtK7AsigdG1Wz57XHwYwc5HNwHAvDrLi67dcefb1246aCZpZZdKuS1eO605mSU%2BJaii5sQf67snRzJt%2FNfdM7MnBfpgp2ToLXciSwU7XBCZiExuDMIMppx7gfu0CrCqzWKVXPishujMP1XpXLk299F7Ns4J2Fvw%2BUwq1nBaOpgXo1P4sW12MM03yPcZngRerjipVcj8Le8E%2B%2FS2FBgDbcORrd0j%2B0IfxZnmQVfo5qTwY%2Fj%2By05nHM09LgHgxHO8voKSFubrcJWz32F%2Fq8UnhxqnXD%2Fo7bdYZQZs2f%2BmyDt90lBbpTgs3x15F9wwyF2LAOWFSSp0gjT40g5WiGAFUONpj78N2Rz%2Fsu%2Bk02EEkaFVyjW9JgFfsczy9ojvCwqqUUV2KvcX1hRf3lUQ0CwYA9tEumxgVQtP32nQ0zjkHLrnOtcEs%2FpKGO5noptlfUDMJinmajU9eSkLl42HWcGJaWRtQ%2BaMh%2FojkHpPlQ3w5FpQ8z%2FLpj1OWXFAJRIXoj2k%2BfkWED6L5iRdOVqxmD0Kh%2FGl4u%2F7lJffw07ivVpysgDEKf7SzoKy4HRjcV1MDVd%2BXx%2BWmsbIujstKnu%2ByR6dsfw4PehvjQCUocf4XBdA%2BcPEqSDQh5VupH5iDalIyio6qfiB%2BkhMuIAmRjqi7Nc0u9bPF3JWK%2BaYamlixP3FiP5aoR4q4FyolUUctw6SgYEirY3Jr6egrxQDqxxhjM7qhoIIWpjGcm3S%2BMKMhKB%2BTKRUBimhhdYb3ZtSmLaOf2F2lgGrcItdjk0CbaBRb3Zt767IRgWpatDo3S%2BvyOjSN25G1HHOrcwuqyEdWtxFZl%2FW51QFldGkqu6eg1Ea9pJEHd9dTm1qD%2Fq9XIxtsVuoHPmPn04YaSurUvFRKChTU0kocpXK61siM%2Bgkoqhj%2BhjAfKn14zrfFlXyl%2BnkxWFdL4HS1Q78LrJJpfw2sL1PoquNq%2BjMCpIEzqm5eYCY1rn8I8J9ZgL9qw2i9dn2zdEqdvg6Nz1v7gNRduHwp8p6i%2FAOL3wuLB%2BgdXuVcl1sc5TC9owuNcK2U%2FRTUn%2FZKvfMCewWMLI9mL0NIMkkFCDRo9gJ5dhT6o1Up4tv3OF9Nf%2FYtLQQxSoSG9OOyH0AKXF%2FEKcKYcndzlh9BflirYzNraQMpMSHD60vr7jH5sbnTGUJmQmYvx3Oze4PtTj80gciYBLK0cx1bSXthL60I%2Fo1tYlKr40Sm0ZxDJcGQ%2FcRW5KdTh6rgjFQGty6b34P8PPXt06vJzwj0fKr2WhfJYP30gNrb29CBfpokwaSvzoBW%2FxZkCSF4r3pYPZ1CYIXgjAssHvagnjVl656RFw%2FTLCxGyVengix3H46%2BsXtQucgL%2FKOQBpQTTfBX%2BYd%2FuH8gsrWXXD8oA1AWQem8yj%2By7Z%2FarXQzbzJ%2B1r9XFX6tyiRQDXG0wg%2FsWpdclBtzmKoHpx5XfinfQEuIKpFcZ%2FhnEL5bmoRwXRMCwbKlCZ2QD1n8t5DFL9AjCtEaouJjK%2BcDs%2B8Cs%2FvByghUsoPASvaBdePxk%2BNhVehch%2FVYEPiCBIywMcsPgKrPAIZzuKRwTknsGgUJ%2FQiqFpDoxtjstplFmthOGqHT8e%2FtTmNkR6OxgoDVuQZJPeROtxG2jPHcAahanThRnxUdb3Vux3b3BjnGVWR2AeCdm%2B8A1R2%2BXfyYXUcB0lwAzfwJNOIGUcBVrHON6QgopA5Vln0oyJ9YQR6XJ3C12vKPPY8PxL4dYl8lKgGSsLSS4%2B0mIoAGI7S8QY8Zpk%2F3EzVMDng%2BT1fPkyB%2B%2FJc2wAd1KzyfppM8zSAFY68XxErkfw6y%2FKD3OfQqIUKQNzB6%2FThhmqkHqsrHC4P5NM3UNRkOD4SGXqVUbD1fduh2g0YkxuWDQAA89VbSqzbGvx1lxgEZ2ptAI1x7nrqjcDiK4bd4DhpHoT56lYNZVPsJWPoG9UFV9QCqDiuE2uAB1v7B4f8OHH4f59GrwBw0chDnYXs5j65qKxXiyKRHI5rOOdQqwojmbk3zHcHa%2F8p6LHXMuMGtzpibUXthTR6D9Ta0uzazI8VynLGdXIV2p4nUPgiwHdS6tACw1xGwHYBQY%2BR04XPHiR3DX9qJAqpJHWNIACwwd3PRMtrcSerfBKsDx31ykzcnt9jrtsHXq5G1PA%2FNxFZAXDqJuu%2FcgLma1Insewf%2B2pHPLaPGzNX9adZS96ujIbbAt1Zpsx0O7tCbsR5ZRYKgIy5t6gU5QAyQHqxID%2FtON1FlVTABMx%2BSXPzHJBfGnHDJOOLsfSTXPVTmBQAQaH8NP1kJLq9CVelNVdWXQ%2BokbSUxVHIxc9kGMI8XZqKSq87MLlT6y%2Fa93W1je3kFssOcW0lz6VzeLCDhIAmdEFYPkBW175ZcICXU5iMcv4EVq%2F3GyaVrkqMjSgoGDeQ6u7g4ZnI9T8HK%2F0%2BASibJz7BybXMwiBaVYLxAAutU%2F1jYfuaF7Rksqzdn1OszvsqDMqFyN1N3wrOnObnGsvjWywvr3usnnv97egIq8kvOrv7vBjf4vMqVPPgdoPbn%2FwGSB1Nz&compressed=1&access_token=124024574287414%7C84a456d620314b6e92a16d8ff1c792dc&format=json
TL;DR: use the following command line to decode such messages:
ipython -c "import zlib, base64, urllib; m='<message>';zlib.decompress(base64.decodestring(urllib.unquote(m)))"
While replacing <message> with the post parameter.
Full details:
This request uses several encoders one on top of another, but all encoders used are easily recognisable by an experienced researcher and probably experienced web developer.
By the characters appearing in the message POST argument, it's easy to identify the format is base64 encoding. However, percent characters (%) stand out as they're not part of the base64 character set. After further review it is easy to see a percent sign is always followed by only a few selection of characters (%2B, %2F). These are url encoded characters (specifically '+' and '/', respectively), both part of the base64 character set.
Thus, that string should be urldecoded and then base64 decoded, and we end up getting a more cryptic string as a result, but luckily no errors:
x\xda\xed\\mo\xe2H\x12\xfe+\xa7|\xba\x93\x02\xeaW\xb7;\xd2~
<snip>
The string consists of both printable and non-printable characters, but the first two characters, x\xda (or \x78\xda) have an important meaning as they're markers for a zlib compressed stream.
For example, running that one-line with your message would look exactly like that:
nir$ ipython -c "import zlib, base64, urllib; m='eNrtXG1v4kgS%2FiunfLqTAupXtzvSfiAxZInOZsmQEPt0sowxYGNj1jZDYLX326%2FaMBNICJMsZCajTUZRwO6XqvJT1c%2FTtuePE286dcP%2BydkJJgwRxgUjumCYnZyezMrjCD4VYRKcnGGmU0GIQKiKGEWUnZa9PweZ6o6qtIr%2B8U%2BmIYGEwP%2BCbv3gc%2BgH6%2BHPBdcb51rFuJCNCmsYuKJf6EZFq%2BlMN2pGDV0I6DLwkjBeuJs9Gb1gBqnXK3rDqFfAPKMi8UWtYvCaIKyGOZM16JkHeR6mk1Wf8xqqo4sGhuYNvcIouaicn2ukQhr8HLzQ5LlGlYFe4Z2c%2FeePkyTtz2JwUTkExyee8vdkHvTy1B8Hheunk0ngF65XFEEyLR6HRJOkyhETQp6eBPdFBoP%2BcTIdwxCE6IxSHWvs5M8%2FT5%2BbKBy6vwducD9N81kW7Bxdl4xvDD7M0tkUehZBXrhgZOjFysgCGrgQBD8Og4kys4zGhhGnT8xSg06DDCaEDqUpYZq7gyDou7NB6GZBP8jD4eRg8zmjz9h%2FgJm59zk40DJJBZI7LMvSOE5nhxq3CmSRpnERTh9ZujoFneJwEjzYnAVB7IIxCzdMptkK1bss1zHBSGxYXvYBT8NC9ThDu%2ByMQ7CpnMFPZ8pYaFX220of1vOQlJT3PU2ygAVSoCDQexj7cuB5PoGBklkB1j8ayXOfzjjycjdZlC3LNp%2FDYP605ySYPz4U5u6Xo%2BD3kUMnNKy%2Fy9BxRDgl6L0GjhCKtPcYOCw1LHWpi3cbOU0I%2Bh4jxwXXpIDL%2Bl4jR%2BHL%2B0xWiTSJEf3ekQsneeENMy9x02zoTULfzWe9b0WRYUQ2gpinswwYVjpwPX8VxyezJS5YiNXf8P6ZMH9JPqYLKAyA8cdE7KG1SwhCmoHrFUSpVmE65hXJiKzUmDwX9QuBGoZWzroekmANuCb0pPCLMMLu1jTghz8OJ0NYXMeBMj9YXC29bn9m311jP7kJW2Ez%2FPfF1dy%2Bi%2FMeaYyb0VQ0k3h5Rxozu3vP%2B5dx5GOJ%2FKQReeRWnUf%2B5DaGPkvn7orA76B%2FKTOny9RY95YxXFrLOrIMe2EZTTIw6siM6sSM%2FLnZsZG5rBPLqN2bRkM3oyazDHPZMuDYr3NiR7W5Y9jEurSxZViRc2mFrc7VuHXZntvLm3tzeTuyl6NRq9tcOJGN7ChO7ATmjBqh1akRK7LnLaMxhvMwvjW2E5s1w3nYv7udOhdNrRn53InaBNou7K4zbnXgcxfGTG4jJ2kvra6JreUNjNskZqe9AHsX1rIG47eXpe1GfW5%2BupLgu%2FIb4ihnzSjFg%2FYvvyhWrrjQ3AXUFbNcIaX8DsE%2FjHsBJoXcxQo79U%2BdQ8nr57AfpK4fxLHrzYp0GkPy92bDAWB52%2BiV1niwe831FYT9kTcZ7jZdSkz2sf3TjXGUlAgH4dYxlbLFYqomvOhce%2F0wrfk%2BZE4n8EeTNE6Hi18%2FGb%2FVngY4Dn2vWCX52uDYm038kTvLvV6801hJgVNsqoe1yxCw30bpJNBPMXRL85WMw1X1LZyEBaSWux48gZOYy6rATEisqbKn3H%2Fq9Zd%2BE8BL2QlxGFAirlP40TQQjT1IXHWlJ31XtT45G3hxHjx0VQUJqrfqrWFRFZqmC45AnGJNf2i1crdspUtcZYKXhjGuYfqCoE1n%2BQiMLOC6rE7BylAUCtK7AsigdG1Wz57XHwYwc5HNwHAvDrLi67dcefb1246aCZpZZdKuS1eO605mSU%2BJaii5sQf67snRzJt%2FNfdM7MnBfpgp2ToLXciSwU7XBCZiExuDMIMppx7gfu0CrCqzWKVXPishujMP1XpXLk299F7Ns4J2Fvw%2BUwq1nBaOpgXo1P4sW12MM03yPcZngRerjipVcj8Le8E%2B%2FS2FBgDbcORrd0j%2B0IfxZnmQVfo5qTwY%2Fj%2By05nHM09LgHgxHO8voKSFubrcJWz32F%2Fq8UnhxqnXD%2Fo7bdYZQZs2f%2BmyDt90lBbpTgs3x15F9wwyF2LAOWFSSp0gjT40g5WiGAFUONpj78N2Rz%2Fsu%2Bk02EEkaFVyjW9JgFfsczy9ojvCwqqUUV2KvcX1hRf3lUQ0CwYA9tEumxgVQtP32nQ0zjkHLrnOtcEs%2FpKGO5noptlfUDMJinmajU9eSkLl42HWcGJaWRtQ%2BaMh%2FojkHpPlQ3w5FpQ8z%2FLpj1OWXFAJRIXoj2k%2BfkWED6L5iRdOVqxmD0Kh%2FGl4u%2F7lJffw07ivVpysgDEKf7SzoKy4HRjcV1MDVd%2BXx%2BWmsbIujstKnu%2ByR6dsfw4PehvjQCUocf4XBdA%2BcPEqSDQh5VupH5iDalIyio6qfiB%2BkhMuIAmRjqi7Nc0u9bPF3JWK%2BaYamlixP3FiP5aoR4q4FyolUUctw6SgYEirY3Jr6egrxQDqxxhjM7qhoIIWpjGcm3S%2BMKMhKB%2BTKRUBimhhdYb3ZtSmLaOf2F2lgGrcItdjk0CbaBRb3Zt767IRgWpatDo3S%2BvyOjSN25G1HHOrcwuqyEdWtxFZl%2FW51QFldGkqu6eg1Ea9pJEHd9dTm1qD%2Fq9XIxtsVuoHPmPn04YaSurUvFRKChTU0kocpXK61siM%2Bgkoqhj%2BhjAfKn14zrfFlXyl%2BnkxWFdL4HS1Q78LrJJpfw2sL1PoquNq%2BjMCpIEzqm5eYCY1rn8I8J9ZgL9qw2i9dn2zdEqdvg6Nz1v7gNRduHwp8p6i%2FAOL3wuLB%2BgdXuVcl1sc5TC9owuNcK2U%2FRTUn%2FZKvfMCewWMLI9mL0NIMkkFCDRo9gJ5dhT6o1Up4tv3OF9Nf%2FYtLQQxSoSG9OOyH0AKXF%2FEKcKYcndzlh9BflirYzNraQMpMSHD60vr7jH5sbnTGUJmQmYvx3Oze4PtTj80gciYBLK0cx1bSXthL60I%2Fo1tYlKr40Sm0ZxDJcGQ%2FcRW5KdTh6rgjFQGty6b34P8PPXt06vJzwj0fKr2WhfJYP30gNrb29CBfpokwaSvzoBW%2FxZkCSF4r3pYPZ1CYIXgjAssHvagnjVl656RFw%2FTLCxGyVengix3H46%2BsXtQucgL%2FKOQBpQTTfBX%2BYd%2FuH8gsrWXXD8oA1AWQem8yj%2By7Z%2FarXQzbzJ%2B1r9XFX6tyiRQDXG0wg%2FsWpdclBtzmKoHpx5XfinfQEuIKpFcZ%2FhnEL5bmoRwXRMCwbKlCZ2QD1n8t5DFL9AjCtEaouJjK%2BcDs%2B8Cs%2FvByghUsoPASvaBdePxk%2BNhVehch%2FVYEPiCBIywMcsPgKrPAIZzuKRwTknsGgUJ%2FQiqFpDoxtjstplFmthOGqHT8e%2FtTmNkR6OxgoDVuQZJPeROtxG2jPHcAahanThRnxUdb3Vux3b3BjnGVWR2AeCdm%2B8A1R2%2BXfyYXUcB0lwAzfwJNOIGUcBVrHON6QgopA5Vln0oyJ9YQR6XJ3C12vKPPY8PxL4dYl8lKgGSsLSS4%2B0mIoAGI7S8QY8Zpk%2F3EzVMDng%2BT1fPkyB%2B%2FJc2wAd1KzyfppM8zSAFY68XxErkfw6y%2FKD3OfQqIUKQNzB6%2FThhmqkHqsrHC4P5NM3UNRkOD4SGXqVUbD1fduh2g0YkxuWDQAA89VbSqzbGvx1lxgEZ2ptAI1x7nrqjcDiK4bd4DhpHoT56lYNZVPsJWPoG9UFV9QCqDiuE2uAB1v7B4f8OHH4f59GrwBw0chDnYXs5j65qKxXiyKRHI5rOOdQqwojmbk3zHcHa%2F8p6LHXMuMGtzpibUXthTR6D9Ta0uzazI8VynLGdXIV2p4nUPgiwHdS6tACw1xGwHYBQY%2BR04XPHiR3DX9qJAqpJHWNIACwwd3PRMtrcSerfBKsDx31ykzcnt9jrtsHXq5G1PA%2FNxFZAXDqJuu%2FcgLma1Insewf%2B2pHPLaPGzNX9adZS96ujIbbAt1Zpsx0O7tCbsR5ZRYKgIy5t6gU5QAyQHqxID%2FtON1FlVTABMx%2BSXPzHJBfGnHDJOOLsfSTXPVTmBQAQaH8NP1kJLq9CVelNVdWXQ%2BokbSUxVHIxc9kGMI8XZqKSq87MLlT6y%2Fa93W1je3kFssOcW0lz6VzeLCDhIAmdEFYPkBW175ZcICXU5iMcv4EVq%2F3GyaVrkqMjSgoGDeQ6u7g4ZnI9T8HK%2F0%2BASibJz7BybXMwiBaVYLxAAutU%2F1jYfuaF7Rksqzdn1OszvsqDMqFyN1N3wrOnObnGsvjWywvr3usnnv97egIq8kvOrv7vBjf4vMqVPPgdoPbn%2FwGSB1Nz'; zlib.decompress(base64.decodestring(urllib.unquote(m)))"
Final result is:
{"app_id":"124024574287414","uid":"0","time":1483722700.043034,"app_ver":"10.3.0 (46070771)","device_id":"1B758FB6-DC9F-4FD1-8C8D-6A848DADA0C7","family_device_id":"43C4D2EE-8FDE-428D-91CA-D5A724A1549A","session_id":"BA0E0CF1-42F8-432C-BB62-2F5B48369B63","data":[{"module":"app","name":"websocket_connect_attempt","time":1483722692.504779,"extra":{"pk":"2284338164"}},{"module":"app","name":"ig_qe_exposure","time":1483722692.58945,"extra":{"group":"test_social_context_on_client","id":"2284338164","pk":"2284338164","experiment":"ig_ios_feed_ufi_redesign"}},{"module":"app","name":"ig_qe_exposure","time":1483722692.589543,"extra":{"group":"test","id":"2284338164","pk":"2284338164","experiment":"ig_ios_save"}},{"module":"app","name":"ig_qe_exposure","time":1483722692.593709,"extra":{"group":"rollout","id":"2284338164","pk":"2284338164","experiment":"ig_ios_save_feed_tooltip"}},{"module":"feed_timeline","name":"reel_tray_impression","time":1483722692.812107,"extra":{"tray_position":0,"pk":"2284338164","live_reel_count":0,"tray_session_id":"4ba09935da694e4e970ee8b11c9faac2","muted_reel_count":0,"a_pk":"2284338164","has_my_reel":0,"viewed_reel_count":0,"new_reel_count":0,"is_new_reel":1}},{"module":"feed_timeline","name":"reel_tray_impression","time":1483722692.817618,"extra":{"tray_position":0,"pk":"2284338164","live_reel_count":0,"tray_session_id":"4ba09935da694e4e970ee8b11c9faac2","muted_reel_count":0,"a_pk":"25025320","has_my_reel":0,"viewed_reel_count":0,"new_reel_count":0,"is_new_reel":1}},{"module":"feed_timeline","name":"reel_tray_impression","time":1483722692.822306,"extra":{"tray_position":0,"pk":"2284338164","live_reel_count":0,"tray_session_id":"4ba09935da694e4e970ee8b11c9faac2","muted_reel_count":0,"a_pk":"196198987","has_my_reel":0,"viewed_reel_count":0,"new_reel_count":0,"is_new_reel":1}},{"module":"feed_timeline","name":"reel_tray_impression","time":1483722692.826773,"extra":{"tray_position":0,"pk":"2284338164","live_reel_count":0,"tray_session_id":"4ba09935da694e4e970ee8b11c9faac2","muted_reel_count":0,"a_pk":"575697306","has_my_reel":0,"viewed_reel_count":0,"new_reel_count":0,"is_new_reel":1}},{"module":"feed_timeline","name":"reel_tray_impression","time":1483722692.831488,"extra":{"tray_position":0,"pk":"2284338164","live_reel_count":0,"tray_session_id":"4ba09935da694e4e970ee8b11c9faac2","muted_reel_count":0,"a_pk":"290691036","has_my_reel":0,"viewed_reel_count":0,"new_reel_count":0,"is_new_reel":1}},{"module":"feed_timeline","name":"instagram_organic_sub_impression","time":1483722692.84102,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":0,"pk":"2284338164","a_pk":"1487230826","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","m_pk":"1421627016431640101_1487230826","tracking_token":"eyJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7ImlzX2FuYWx5dGljc190cmFja2VkIjp0cnVlLCJzZXJ2ZXJfdG9rZW4iOiIxNDgzNzE0NDYyNDI2fDE0MjE2MjcwMTY0MzE2NDAxMDF8MjI4NDMzODE2NHw2YjAwZDY2NGY1NDNjZGNiOTJkOGQwYzUxMzVhYzhhOWIyZjY0YjlmYmIxNjFiNTA2NjYwODFkOWIxMDNkYmY4IiwidXVpZCI6Ijc5ZjQ2NTAyYWZkOTQ2NWVhYmVjZmQzNWM1NzU0YjI2MTQyMTYyNzAxNjQzMTY0MDEwMSJ9LCJ2ZXJzaW9uIjo1fQ==","follow_status":"following"}},{"module":"app","name":"ig_qe_exposure","time":1483722692.841793,"extra":{"group":"TEST","id":"2284338164","pk":"2284338164","experiment":"ig_ios_feed_video_cell_autoplay_bugfix"}},{"module":"device","name":"connection_change","time":1483722692.899129,"extra":{"pk":"2284338164","connection":"wifi","connection_subtype":"CTRadioAccessTechnologyHSDPA"}},{"module":"application","name":"launch_usable","time":1483722692.932535,"extra":{"device":"iPhone8,1","os":"10.1.1","init_to_launch_ms":159.7147916691029,"pk":"2284338164","init_to_now_ms":1051.190583333664,"background_init":false,"init_to_active_ms":617.7668750024168,"init_to_usable_ms":891.4757916645613}},{"module":"application","name":"push_notification_setting","time":1483722692.940062,"extra":{"badges":true,"alerts":true,"sounds":true,"pk":"2284338164","app_state":"launch_usable","badge_number":0,"last_badge_number":0,"raw_setting":7}},{"module":"app","name":"direct_ui_perf","time":1483722692.971275,"extra":{"first_page":true,"result":"success","pk":"2284338164","view":"inbox","type":"request_time","total_duration":695}},{"module":"app","name":"realtime_subscribe_attempt","time":1483722692.976333,"extra":{"realtime_topic":"user-ds2-2284338164~2","pk":"2284338164","realtime_subscription_already_exists":false}},{"module":"app","name":"content_loaded","time":1483722692.984203,"extra":{"content_type":"photo","pk":"2284338164","content_load_time":0.1976552499982063,"content_width":750}},{"module":"app","name":"websocket_did_open","time":1483722693.956506,"extra":{"pk":"2284338164"}},{"module":"app","name":"realtime_subscribed","time":1483722694.343897,"extra":{"pk":"2284338164","realtime_topic":"user-ds2-2284338164~2"}},{"module":"feed_timeline","name":"reel_tray_refresh","time":1483722694.437768,"extra":{"pk":"2284338164","live_reel_count":0,"tray_session_id":"4ba09935da694e4e970ee8b11c9faac2","was_successful":true,"muted_reel_count":0,"tray_refresh_type":"network","viewed_reel_count":0,"new_reel_count":9,"tray_refresh_time":0.4671275000000605,"has_my_reel":1}},{"module":"feed_timeline","name":"reel_tray_impression","time":1483722694.451732,"extra":{"tray_position":3,"pk":"2284338164","live_reel_count":0,"tray_session_id":"4ba09935da694e4e970ee8b11c9faac2","muted_reel_count":0,"a_pk":"1573917928","has_my_reel":1,"viewed_reel_count":0,"new_reel_count":9,"is_new_reel":1}},{"module":"feed_timeline","name":"instagram_main_feed_refresh","time":1483722694.63361,"extra":{"reason":"cold_start_fetch","pk":"2284338164","status_code":"200"}},{"module":"app","name":"app_installations","time":1483722694.8347,"extra":{"pk":"2284338164","fbapp_installed":true}},{"module":"feed_timeline","name":"instagram_organic_impression","time":1483722695.036799,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":0,"pk":"2284338164","a_pk":"2263699430","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","m_pk":"1421834952577120803_2263699430","tracking_token":"eyJ2ZXJzaW9uIjo1LCJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7InNlcnZlcl90b2tlbiI6IjE0ODM3MjI2OTM5NzZ8MTQyMTgzNDk1MjU3NzEyMDgwM3wyMjg0MzM4MTY0fDEyNTgxMjQ3ODdmYWMzODA5N2RkM2M4MjhlNWUxNGFjMjcyOTUzNGRiMDVhNzk5NTViOTc0NWFjNGEwNTUxMGMiLCJpc19hbmFseXRpY3NfdHJhY2tlZCI6dHJ1ZSwidXVpZCI6ImE3MGIyZjIxNzNmZjQzMWNhMjdmNjFlMjdiNzk0MDgwMTQyMTgzNDk1MjU3NzEyMDgwMyJ9fQ==","follow_status":"following"}},{"module":"feed_timeline","name":"instagram_organic_time_spent","time":1483722695.036946,"extra":{"source_of_action":"feed_timeline","m_t":1,"pk":"2284338164","a_pk":"1487230826","timespent":2.195435047149658,"m_pk":"1421627016431640101_1487230826","tracking_token":"eyJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7ImlzX2FuYWx5dGljc190cmFja2VkIjp0cnVlLCJzZXJ2ZXJfdG9rZW4iOiIxNDgzNzE0NDYyNDI2fDE0MjE2MjcwMTY0MzE2NDAxMDF8MjI4NDMzODE2NHw2YjAwZDY2NGY1NDNjZGNiOTJkOGQwYzUxMzVhYzhhOWIyZjY0YjlmYmIxNjFiNTA2NjYwODFkOWIxMDNkYmY4IiwidXVpZCI6Ijc5ZjQ2NTAyYWZkOTQ2NWVhYmVjZmQzNWM1NzU0YjI2MTQyMTYyNzAxNjQzMTY0MDEwMSJ9LCJ2ZXJzaW9uIjo1fQ==","follow_status":"following"}},{"module":"feed_timeline","name":"instagram_organic_sub_viewed_impression","time":1483722695.036983,"extra":{"source_of_action":"feed_timeline","follow_status":"following","m_t":1,"a_pk":"1487230826","m_pk":"1421627016431640101_1487230826","pk":"2284338164","tracking_token":"eyJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7ImlzX2FuYWx5dGljc190cmFja2VkIjp0cnVlLCJzZXJ2ZXJfdG9rZW4iOiIxNDgzNzE0NDYyNDI2fDE0MjE2MjcwMTY0MzE2NDAxMDF8MjI4NDMzODE2NHw2YjAwZDY2NGY1NDNjZGNiOTJkOGQwYzUxMzVhYzhhOWIyZjY0YjlmYmIxNjFiNTA2NjYwODFkOWIxMDNkYmY4IiwidXVpZCI6Ijc5ZjQ2NTAyYWZkOTQ2NWVhYmVjZmQzNWM1NzU0YjI2MTQyMTYyNzAxNjQzMTY0MDEwMSJ9LCJ2ZXJzaW9uIjo1fQ=="}},{"module":"app","name":"content_loaded","time":1483722695.558961,"extra":{"content_type":"photo","pk":"2284338164","content_load_time":0.8762567916637636,"content_width":750}},{"module":"app","name":"content_loaded","time":1483722695.576639,"extra":{"content_type":"photo","pk":"2284338164","content_load_time":0.400949374998163,"content_width":750}},{"module":"feed_timeline","name":"instagram_organic_impression","time":1483722696.305709,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":1,"pk":"2284338164","a_pk":"204327608","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","m_pk":"1421889687605301135_204327608","tracking_token":"eyJ2ZXJzaW9uIjo1LCJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7InNlcnZlcl90b2tlbiI6IjE0ODM3MjI2OTM5NzZ8MTQyMTg4OTY4NzYwNTMwMTEzNXwyMjg0MzM4MTY0fDY5ZTgwODY2NzkwMWU1YTdiMGEwM2NkYTRlNmQyYzNjNjNkY2M3NTZjMDIwNzE1OGQ2YTc0NTE1NDZhZjQ2OGIiLCJpc19hbmFseXRpY3NfdHJhY2tlZCI6dHJ1ZSwidXVpZCI6ImE3MGIyZjIxNzNmZjQzMWNhMjdmNjFlMjdiNzk0MDgwMTQyMTg4OTY4NzYwNTMwMTEzNSJ9fQ==","follow_status":"following"}},{"module":"hscroll_aymf_feed_unit","name":"recommended_user_impression","time":1483722696.32221,"extra":{"pk":"2284338164","uid":"2316545717","view":"hscroll_aymf_feed_unit","position":0,"algorithm":"followers_algorithm"}},{"module":"hscroll_aymf_feed_unit","name":"recommended_user_impression","time":1483722696.326252,"extra":{"pk":"2284338164","uid":"3896352675","view":"hscroll_aymf_feed_unit","position":1,"algorithm":"followers_algorithm"}},{"module":"hscroll_aymf_feed_unit","name":"recommended_user_impression","time":1483722696.329706,"extra":{"pk":"2284338164","uid":"2942400495","view":"hscroll_aymf_feed_unit","position":2,"algorithm":"page_rank_algorithm"}},{"module":"app","name":"content_loaded","time":1483722696.490827,"extra":{"content_type":"photo","pk":"2284338164","content_load_time":0.0478957499981334,"content_width":799}},{"module":"feed_timeline","name":"instagram_organic_time_spent","time":1483722697.295841,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":0,"pk":"2284338164","a_pk":"2263699430","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","timespent":2.258677005767822,"m_pk":"1421834952577120803_2263699430","tracking_token":"eyJ2ZXJzaW9uIjo1LCJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7InNlcnZlcl90b2tlbiI6IjE0ODM3MjI2OTM5NzZ8MTQyMTgzNDk1MjU3NzEyMDgwM3wyMjg0MzM4MTY0fDEyNTgxMjQ3ODdmYWMzODA5N2RkM2M4MjhlNWUxNGFjMjcyOTUzNGRiMDVhNzk5NTViOTc0NWFjNGEwNTUxMGMiLCJpc19hbmFseXRpY3NfdHJhY2tlZCI6dHJ1ZSwidXVpZCI6ImE3MGIyZjIxNzNmZjQzMWNhMjdmNjFlMjdiNzk0MDgwMTQyMTgzNDk1MjU3NzEyMDgwMyJ9fQ==","follow_status":"following"}},{"module":"feed_timeline","name":"instagram_organic_viewed_impression","time":1483722697.296037,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":0,"pk":"2284338164","a_pk":"2263699430","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","m_pk":"1421834952577120803_2263699430","tracking_token":"eyJ2ZXJzaW9uIjo1LCJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7InNlcnZlcl90b2tlbiI6IjE0ODM3MjI2OTM5NzZ8MTQyMTgzNDk1MjU3NzEyMDgwM3wyMjg0MzM4MTY0fDEyNTgxMjQ3ODdmYWMzODA5N2RkM2M4MjhlNWUxNGFjMjcyOTUzNGRiMDVhNzk5NTViOTc0NWFjNGEwNTUxMGMiLCJpc19hbmFseXRpY3NfdHJhY2tlZCI6dHJ1ZSwidXVpZCI6ImE3MGIyZjIxNzNmZjQzMWNhMjdmNjFlMjdiNzk0MDgwMTQyMTgzNDk1MjU3NzEyMDgwMyJ9fQ==","follow_status":"following"}},{"module":"feed_timeline","name":"instagram_organic_impression","time":1483722697.422587,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":2,"pk":"2284338164","a_pk":"290691036","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","m_pk":"1421785804972142074_290691036","tracking_token":"eyJ2ZXJzaW9uIjo1LCJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7InNlcnZlcl90b2tlbiI6IjE0ODM3MjI2OTM5NzZ8MTQyMTc4NTgwNDk3MjE0MjA3NHwyMjg0MzM4MTY0fDNjMDFkMWQ4N2I1YmFiZTcxYTFhYjhkMDgwNTRhYzg5ZWFiODkwZGRiNTlmODkwNjNjOTVkYWU0ZDJjMWM2MTUiLCJpc19hbmFseXRpY3NfdHJhY2tlZCI6dHJ1ZSwidXVpZCI6ImE3MGIyZjIxNzNmZjQzMWNhMjdmNjFlMjdiNzk0MDgwMTQyMTc4NTgwNDk3MjE0MjA3NCJ9fQ==","follow_status":"following"}},{"module":"feed_timeline","name":"instagram_organic_time_spent","time":1483722697.557526,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":1,"pk":"2284338164","a_pk":"204327608","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","timespent":1.185648024082184,"m_pk":"1421889687605301135_204327608","tracking_token":"eyJ2ZXJzaW9uIjo1LCJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7InNlcnZlcl90b2tlbiI6IjE0ODM3MjI2OTM5NzZ8MTQyMTg4OTY4NzYwNTMwMTEzNXwyMjg0MzM4MTY0fDY5ZTgwODY2NzkwMWU1YTdiMGEwM2NkYTRlNmQyYzNjNjNkY2M3NTZjMDIwNzE1OGQ2YTc0NTE1NDZhZjQ2OGIiLCJpc19hbmFseXRpY3NfdHJhY2tlZCI6dHJ1ZSwidXVpZCI6ImE3MGIyZjIxNzNmZjQzMWNhMjdmNjFlMjdiNzk0MDgwMTQyMTg4OTY4NzYwNTMwMTEzNSJ9fQ==","follow_status":"following"}},{"module":"feed_timeline","name":"instagram_organic_viewed_impression","time":1483722697.557715,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":1,"pk":"2284338164","a_pk":"204327608","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","m_pk":"1421889687605301135_204327608","tracking_token":"eyJ2ZXJzaW9uIjo1LCJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7InNlcnZlcl90b2tlbiI6IjE0ODM3MjI2OTM5NzZ8MTQyMTg4OTY4NzYwNTMwMTEzNXwyMjg0MzM4MTY0fDY5ZTgwODY2NzkwMWU1YTdiMGEwM2NkYTRlNmQyYzNjNjNkY2M3NTZjMDIwNzE1OGQ2YTc0NTE1NDZhZjQ2OGIiLCJpc19hbmFseXRpY3NfdHJhY2tlZCI6dHJ1ZSwidXVpZCI6ImE3MGIyZjIxNzNmZjQzMWNhMjdmNjFlMjdiNzk0MDgwMTQyMTg4OTY4NzYwNTMwMTEzNSJ9fQ==","follow_status":"following"}},{"module":"app","name":"content_loaded","time":1483722697.578529,"extra":{"content_type":"photo","pk":"2284338164","content_load_time":0.02764237500014133,"content_width":612}},{"module":"app","name":"ig_qe_exposure","time":1483722698.19705,"extra":{"group":"test","id":"2284338164","pk":"2284338164","experiment":"ig_ios_ad_new_sponsored_label_universe"}},{"module":"app","name":"ig_qe_exposure","time":1483722698.227725,"extra":{"group":"test","id":"2284338164","pk":"2284338164","experiment":"ig_ios_video_corrected_viewport_logging"}},{"module":"app","name":"content_loaded","time":1483722698.33762,"extra":{"content_type":"photo","pk":"2284338164","content_load_time":0.04629112499969779,"content_width":750}},{"module":"app","name":"ig_qe_exposure","time":1483722698.457056,"extra":{"group":"test","id":"2284338164","pk":"2284338164","experiment":"ig_ios_ad_intent_to_highlight_universe"}},{"module":"feed_timeline","name":"instagram_organic_time_spent","time":1483722698.522836,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":2,"pk":"2284338164","a_pk":"290691036","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","timespent":0.991282045841217,"m_pk":"1421785804972142074_290691036","tracking_token":"eyJ2ZXJzaW9uIjo1LCJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7InNlcnZlcl90b2tlbiI6IjE0ODM3MjI2OTM5NzZ8MTQyMTc4NTgwNDk3MjE0MjA3NHwyMjg0MzM4MTY0fDNjMDFkMWQ4N2I1YmFiZTcxYTFhYjhkMDgwNTRhYzg5ZWFiODkwZGRiNTlmODkwNjNjOTVkYWU0ZDJjMWM2MTUiLCJpc19hbmFseXRpY3NfdHJhY2tlZCI6dHJ1ZSwidXVpZCI6ImE3MGIyZjIxNzNmZjQzMWNhMjdmNjFlMjdiNzk0MDgwMTQyMTc4NTgwNDk3MjE0MjA3NCJ9fQ==","follow_status":"following"}},{"module":"feed_timeline","name":"instagram_organic_impression","time":1483722698.605625,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":4,"pk":"2284338164","a_pk":"2082772377","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","m_pk":"1421886268559992426_2082772377","tracking_token":"eyJ2ZXJzaW9uIjo1LCJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7InNlcnZlcl90b2tlbiI6IjE0ODM3MjI2OTM5Nzd8MTQyMTg4NjI2ODU1OTk5MjQyNnwyMjg0MzM4MTY0fDViYWY4YjEwM2ZkYmJiYTI0MjcyNmQ0OGNkMDRjY2MzNmFhZWRjYTZlZDczYmNjOTM3ZDg2MjA2OTIyODQ5ZmEiLCJpc19hbmFseXRpY3NfdHJhY2tlZCI6ZmFsc2UsInV1aWQiOiJhNzBiMmYyMTczZmY0MzFjYTI3ZjYxZTI3Yjc5NDA4MDE0MjE4ODYyNjg1NTk5OTI0MjYifX0=","follow_status":"following"}},{"module":"app","name":"content_loaded","time":1483722699.07202,"extra":{"content_type":"photo","pk":"2284338164","content_load_time":0.02502862500114134,"content_width":750}},{"module":"feed_timeline","name":"instagram_organic_impression","time":1483722699.747028,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":5,"pk":"2284338164","a_pk":"2082772377","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","m_pk":"1421886211525945054_2082772377","tracking_token":"eyJ2ZXJzaW9uIjo1LCJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7InNlcnZlcl90b2tlbiI6IjE0ODM3MjI2OTM5Nzd8MTQyMTg4NjIxMTUyNTk0NTA1NHwyMjg0MzM4MTY0fGJiNTRhMDkwNzg3ZmQ5ZTg0Mjc4MzQ5NDkyMmRjY2E4MWJjMGQxYWQ1YzJiMGMwNmIzZGUyYTZkMDZiYjhhZjAiLCJpc19hbmFseXRpY3NfdHJhY2tlZCI6ZmFsc2UsInV1aWQiOiJhNzBiMmYyMTczZmY0MzFjYTI3ZjYxZTI3Yjc5NDA4MDE0MjE4ODYyMTE1MjU5NDUwNTQifX0=","follow_status":"following"}},{"module":"app","name":"content_loaded","time":1483722699.869509,"extra":{"content_type":"photo","pk":"2284338164","content_load_time":0.0443396250011574,"content_width":750}},{"module":"feed_timeline","name":"instagram_organic_time_spent","time":1483722700.039492,"extra":{"source_of_action":"feed_timeline","m_t":1,"m_ix":4,"pk":"2284338164","a_pk":"2082772377","session_id":"2284338164_22006D1E-0336-4815-9429-A49B7EC70FD6","timespent":0.9339390397071838,"m_pk":"1421886268559992426_2082772377","tracking_token":"eyJ2ZXJzaW9uIjo1LCJzaWduYXR1cmUiOiIiLCJwYXlsb2FkIjp7InNlcnZlcl90b2tlbiI6IjE0ODM3MjI2OTM5Nzd8MTQyMTg4NjI2ODU1OTk5MjQyNnwyMjg0MzM4MTY0fDViYWY4YjEwM2ZkYmJiYTI0MjcyNmQ0OGNkMDRjY2MzNmFhZWRjYTZlZDczYmNjOTM3ZDg2MjA2OTIyODQ5ZmEiLCJpc19hbmFseXRpY3NfdHJhY2tlZCI6ZmFsc2UsInV1aWQiOiJhNzBiMmYyMTczZmY0MzFjYTI3ZjYxZTI3Yjc5NDA4MDE0MjE4ODYyNjg1NTk5OTI0MjYifX0=","follow_status":"following"}},{"module":"feed_timeline","name":"perf_percent_photos_rendered","time":1483722700.03977,"extra":{"pk":"2284338164","rendered":true}}],"log_type":"client_event","seq":0}
You can use gzuncompress in php :
https://secure.php.net/manual/fr/function.gzuncompress.php
<?php
$compressed = gzcompress('Compresse moi', 9); // or $compressed = "YOUrcOmpreSSedStRINg";
$uncompressed = gzuncompress($compressed);
echo $uncompressed;
?>

Is a batch operation to save a set of navigation properties possible?

For example: Company has Employees.
By posting to odata.svc/Company(1)/Employees/$ref, I can save Company-Employee relation. Can I save multiple Company-Employee links this way using odata.svc/Company(1)/Employees/$ref/$batch ?
I tried but didnt work. If this is incorrect way, is there any other alternative ?
OData does support batching, I'm not sure what version of OData you are using but here is some documentation from v3 (v4 is the same) http://www.odata.org/documentation/odata-version-3-0/batch-processing/
In your example batch URL, you are adding $batch to the end of the URL that you are using, instead you have to POST to odata.svc/$batch with a request that contains details of all of the operations that you want to perform. For example, here is one of the request taken from that link:
POST /service/$batch HTTP/1.1 Host: host Content-Type:
multipart/mixed; boundary=batch_36522ad7-fc75-4b56-8c71-56071383e77b
--batch_36522ad7-fc75-4b56-8c71-56071383e77b Content-Type: multipart/mixed;
boundary=changeset_77162fcd-b8da-41ac-a9f8-9357efbbd621
Content-Length: ###
--changeset_77162fcd-b8da-41ac-a9f8-9357efbbd621 Content-Type: application/http Content-Transfer-Encoding: binary Content-ID: 1
POST /service/Customers HTTP/1.1 Host: host Content-Type:
application/atom+xml;type=entry Content-Length: ###
--changeset_77162fcd-b8da-41ac-a9f8-9357efbbd621 Content-Type: application/http Content-Transfer-Encoding: binary
POST $1/Orders HTTP/1.1 Host: host Content-Type:
application/atom+xml;type=entry Content-Length: ###
--changeset_77162fcd-b8da-41ac-a9f8-9357efbbd621--
--batch_36522ad7-fc75-4b56-8c71-56071383e77b--

XMLHttpRequest Header : Decode Binary Data Upon Server Arrival

I am building a multipart/form-data httprequest, using Javascript's XMLHttpRequest object. Here are the headers:
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
Content-Length: 38539
Content-Type: multipart/form-data; charset=UTF-8; boundary=CONTENT_BOUNDARY
Cookie: __utma=111872281.167592067.1396133699.1396133699.1396133699.1; PHPSESSID=ea7cfjgi8e29v1bhnrj580vbc2
DNT: 1
Host: localhost:90
Referer: localhost:90/my_secret_referer/no_peeking.php
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
I send the request to a PHP document.
In the following snippet one can observe a part of the request body. It details the transmission of binary data in base64 representing an image file that has been selected.
--CONTENT_BOUNDARY
Content-Disposition: form-data; name="images[]"; filename="airplane.jpg"
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
.../9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDABkRExYTEBkWFBYcGxkeJT4pJSIiJUw3Oi0...
This body part cooperates with the entire request to create a successful AJAX request to my server. When the information arrives at the server, I decode the information and do what I may with it.
The segment of this process that I am unsatisfied with is the manual decoding of the binary data. One is always able to receive uploaded images in the server as complete, legible image files when using jQuery's $.ajax() or Malsup's jQuery Form. I have looked into the format of the two mentioned requests and have found that they too send binary information using a multipart/form-data request. The one difference that I have found which I have not intentionally made is that my request is furnished with a
charset: utf8;
specification inside of the Content-Type after I send it.
Can I, and if I can, how can I tell the server to decode the binary information it receives?

Service Stack Json Response Contains Extra Characters

I'm converting a Web Api project to service stack and in json responses I'm getting an extra line of text before and after the json content. I'm using fiddler to capture the response.
Edited for brevity, here is an example:
18d
[{"id": ... }]
0
What are these lines? I can't find any configuration option that would seem to correspond to keep this from happening.
Edit
I went back and started with the basic hello service stack example, and here's what I got for a response:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
Server: Microsoft-HTTPAPI/1.0
X-Powered-By: ServiceStack/3.943 Win32NT/.NET
Date: Thu, 18 Apr 2013 15:48:49 GMT
1b
{"Result":"Hello, JRandom"}
0
I'm assuming the extra response lines are the result of the Transfer-Encoding: chunked header.