Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Monday, 19 September 2016

Prototype testing - invitation to the usability research

I'm happy to announce that we are ready to conduct a user research on a prototype of new Advanced REST Client.

List of changes is very long. Starting from general UI redesign to change in basic functionality.
The most important changes are:
  • new projects will support RAML (RESTful API Modeling Language) standard. Users will be able to import RAML file and use it as a "project". RAML contains API definition with the documentation that will be displayed alongside with the RAML request (new view in the app) and in project documentation page

Tuesday, 12 January 2016

Encoding drop down removal from the app

Hi developers!


Update April 4, 2016
As of release 6 of the app the dropdown for content type header back to the app. Read more in this blog post.



I received a lot of questions about missing drop-down with predefined encoding values. I feel I owe you an explanation.

Lets begin of what it was. Encoding for payload is nothing more than value for Content-Type header. So when you selected one of predefined encodings (or rather mime types) the app added Content-Type header to the headers list before submission.

Earlier, the drop down list contained a list of predefined values for the Content-Type header. In fact this was only a shortcut for adding a header to the headers list. We all love shortcuts but..

Thursday, 31 October 2013

Let's test the prototype!

As you may know lately I have worked on new version of the Advanced Rest Client application. It will change... well, pretty all!

Minor changes will cover:
  • storage - change from deprecated WebSQL to IndexedDb
  • projects to become "requests groups" - old projects are to much complex and unnecessary. In nev version you will have an option to group requests and easily switch between endpoints
  • responses history - it is a new feature, the app will store responses so you can check how your server's response change over time. It also implicate that the app will be useful offline as well.
  • better Google Drive integration - it will use different API to connect to +Google Drive. Thanks to a new Identity API in +Google Chrome you will authorize the app in more user friendly way
  • upgrade to Chrome App! - instead of opening the app in new tab it will open as native-like application. You may even add the application to the task bar or desktop
  • new way hows the requests are made - using new Google Chrome Sockets API the app is able to make a request without a limitations of XmlHttpRequest. You'll be able to set every type of HTTP header. Also I'm planning a raw socket testing implementation.
  • change the +GWT framework to +AngularJS - it is more flexible for HTML5 apps than GWT. And it takes much less time to add new functionality or change existing ones
  • completely new UI

Saturday, 31 August 2013

How about new version?

Hi all,

What do you say for new version of Rest Client for Google Chrome? :)

This is a snapshot of dev version of the app:

It will be faster than current version and it will be totally redesigned. I've added some new features that should help you with your work.

The new version is witted in pure javascript this time. I left GWT behind because for HTML5 features it was a pain in an ass. Now I'm using Bootstrap framework. Mostly for pretty nice styles, out of the box.

I hope you'll enjoy new UI and new set of functionality. I think I've done a lot of good job regarding UX.

It's still under development and there is a lot of work to do. RC version should be available in the end of September. I'm hoping that final version will be ready in middle October.

Give me a feedback what you think about this proposition. I know that it is only one screenshot and only small part of the app but you can see a direction of changes.

P.S.
I'm not planning to maintain server side of the application anymore.  It means that the only way to save and share your data is either save it to file (locally) or save and share it on Google Drive.
If you have any data on application's server you should restore it on your app and save it on Google Drive.

Happy RESTing!

Tuesday, 14 May 2013

Background page for Advanced Rest Client

Hi developers.
Greetings from Googleplex - just befor Google IO ;)

Today I've noticed that you asked me hwy the application use background page. Yes, there are event pages that don't require consistent presence of the application process but it just don't fit.

To know what exactly background page do refer to source file and previous article about ARC API.
Earlier I introduced an API for Rest Client. Now other extensions can cooperate with application - they can run an application with predefined values (like URL, payload, headers list). To make it possible I have to implement handlers for message passing (either for cross-extension communication and for web intents). It require to initialize background page. Without it the application have no place to initialize handlers without actually running the app.

Furthermore, GWT (Google's framework used to develop the application) is not ready to be used with Chrome extensions/applications. Thanks the background page I can actually develop the app using Chrome API (which is required). Without it developing the app would be extremely difficult.

You may have concerns about memory and starting up Chrome itself. Well, there is actually really little code in background page. Most of the function in background page are used when you making a request. It's do nothing when you are not using the app. But still I need to have it loaded in case if related from ARC app would like to use it.

If you have a question post it in an comment. I'll answer you. You may also report an issue if you find one.

Happy RESTing ;)

Monday, 22 October 2012

Testing sockets

Since latest version of the application you can test socket messaging as well. It is simple implementation of the web socket API.

For server implementation you can use for example the ws module for node.js.

Below is sample server side code:

var WebSocketServer = require('ws').Server
  , wss = new WebSocketServer({port: 8080});
  
console.log('Starting server');
wss.on('connection', function(ws) {
 
 console.log('user is connected');
 ws.send('user connected. Welcome.');
 
 ws.on('message', function(message) {
  console.log('received: %s', message);
  ws.send('Response to ' + message);
 });

 ws.on('disconnect', function() {
  console.log('user disconnected');
 });
});

Happy codding!

Sunday, 30 September 2012

Advanced REST client API

API it's a big word for that but in some part you can call it an API :)

If you are an author of an extension and  you would like to use my application now it is possible.
When your application would like to open a request data in Advanced REST client you have two possibilities:

  1. using chrome message passing system
  2. using webIntents (you don't need to have a chrome extension)
You just need to pass request object with following data:
"payload" (required) - message payload: 
  • "create" to open new application window with values; 
  • other payloads may be available in future
"data" - (required) javascript object with any of values:
  • url - (String) request URL to set
  • method - (String) request method to set
  • headers - (String) an RFC string representing request headers example:
    >>> User-Agent: X-Extension
    X-header: header value; second value <<< 
  • payload - (String) data to pass into payload field. Only for http methods that carry payload data
  • encoding - (String) data form encoding
Example of usage:

var message = { 
   'payload': 'create', 
   'data': { 
       'url': 'http://www.google.com/', 
       'method': 'GET', 
       'headers': "User-Agent: Chrome-Extension\nX-extension-id: SomeID" 
    } 
};
Via extensions message passing system:
chrome.extension.sendMessage("hgmloofddffdnphfgcellkdfbfbjeloo", message, function(response) {});


Using webIntents:


window.Intent = window.Intent || window.WebKitIntent;
window.navigator.startActivity = window.navigator.startActivity ||
window.navigator.webkitStartActivity;
 
var params = { 
   "action": "http://webintents.org/view", 
   "type": "application/restclient+data" , 
   "data": message 
}; 
var i = new WebKitIntent(params); 
var onSuccess = function(data) { console.log(data); };
var onFailure = function() { console.log('intent error'); };
navigator.webkitStartActivity(i, onSuccess, onFailure);
For more information check trunk: http://code.google.com/p/chrome-rest-client/source/browse/trunk/RestClient/war/extension/background.js

Why do I need "history" permissions?

Well, It's quite simple.
When you start typing a URL, the application doing two things: search application history for given URL and query browsers history.
Searching application history is obvious. But chrome history is not.
In fact it just query your history with query you entered to URL field and displays results in suggestions dialog.


If you ever visits this url it will be displayed in list so you can your job faster :) I know that probably you just paste URL in this field but I think is a good feature anyway. It do nothing else with your data. You can check trunk to see what it actually doing with history data: http://code.google.com/p/chrome-rest-client/source/browse/trunk/RestClient/src/org/rest/client/suggestion/UrlsSuggestOracle.java

Cheers!

Friday, 21 September 2012

It's almost here! New version of Advanced Rest Client

Hi all!

I'd like to inform you that new version of the application is almost ready :)
It took over 3 months but the application was written from scratch. Now it can do a lot more than current version. Thanks for all who submit an issue on http://code.google.com/p/chrome-rest-client/issues/list and helps me improve application.

Note:
There is a number of new permissions required by the application. See bottom of this post for more info.

Let's start from UI.

New version UI

UI now have more modern look. It is not very different from current version, but devil is in the details. Have you noticed that there is new option in menu?

Projects is a new feature. It helps you organize saved requests and you can easily switch between requests sharing it's parameters. More about projects you can find in my previous post.
Project view
OK, let's make a HTTP request:


Still it is not very different form previous version. But as you can see I've added new section to response view. Now Request Headers are also available in application view. And there is more.
Since now you can overwrite browsers headers that are not available for regular XmlHttpRequest! This mean that you can set User-Agent, Accept and many more headers. It becomes possible since new declarativeWebRequest API in Chrome. And here is the bad news. For today it is only available for Chrome Dev Channel (version 23). It will take about 3 months before it becomes available in stable version. Since then I'll send an update to Web Store but it will be available for version 23+.

Let's go on. Lately someone suggest that application should show redirect chain (issiue 67). Well, here it is:

It will show complete request flow. For each redirect it collects information about received headers, status and information is this redirection comes from cache (f.e. HTTP 301) or not.


I've made some improvements to request form panel. You can "open" url input field and create URL using form:
When you need to encode query parameters just pres "enc" button for this parameter. If you need to encode parameter but replace + with %20 just hold CTRL key.


There are changes in settings section as well. First at all "cookies capture" is no more experimental. Well, it is not working very well right now. Results may vary and you can't rely on it. But since application can show all response headers (even those invisible to the XmlHttpRequest object) you can see cookie data in response panel.
There is no JSON headers settings. This is fixed now and list contain all popular json headers definitions.

Important change for the application is import/export options. Since now export to application server is deprecated and this option will be removed December 1st, 2012.
There are better options for import export. First is export to file. Application will generate json file with projects and requests definitions. You can easily change it's content and send file to collaborators. Thanks to this change you don't need to be worry about data sent to application server.

Next step it to implement Google Drive API to save file directly on your drive. Then the application becomes one of the Google Drive applications.

There is a number of new permissions required by application.

  • webRequest 
    • This is required to observe and analyze traffic - to know when redirect occur and to catch request and response headers 
  • declarativeWebRequest 
    • This is required to modify request headers by XmlHttpRequest (to remove or add headers)
  • background 
  • storage 
    • Chrome provides API for sync data. Application will synchronize some settings like debug and history options.
  • history (not changed) is required by URL widget to provide fill support. While typing an URL it search application's and browser's history. When it find matches it will return it in suggestions list. Browser's history is not stored in application. 
  • <all_urls> (not changed) is required by application to make any request outside application sandbox. 
  • cookies permission has been removed

I hope you like changes and you will like new version of the application. Update will become available in next few weeks. Since then you still can report an issue if you found some :)

Cheers!

Tuesday, 17 July 2012

Work on new version in progress... :)

If you're wondering when new version of Rest Client will be available I just wanna let you know that it will happen in next one or two months.
Why so long? - you probably ask. Well, it will be totally new version. Whole application is writing right now from scratch. And this needs time :(
Picture below is showing application's start up flow diagram. That shows how many operations is needed to run the application.



What is new in the application? 
First at all: the projects. If you have more than one endpoint of the same webapplication (developer server, test server, production server, etc) then you will can save WebRequests under one project. When you open project you will be able to quickly switch between endpoints and define which part of URL need to change (either protocol, host, path or params) and to what it should change.

For example you have REST project under http://dev.rest.com/api?key=mydevkey&restOfParams
Then you might want to switch to production server but it's host address is http://myproject.com and there you have different API key. 
By creating a project you can define reference URL address http://dev.rest.com/api?key=mydevkey&restOfParams (you can give it a name, like "dev"). Then, for another endpoint, you'll tell the app that it must change server value and key param when switching between endpoints (to defined values).


Second big change in application is closer integration with chrome extensions API.
Now, you can't set some of headers (like cookie, user, user-agent etc). It's not permitted by XMLHttpRequest spec. Using Chrome API application can change headers just before sending request to server, omitting specification restrictions.

Proposed change is integration with Google Drive. Instead of sending saved requests to application's server (app engine) you'll be able to save it to Google Drive and share it with co-workers. It's safer way for you and cheaper for me ;)

Next change is integration with external extensions. Some of you emailed to me to give them possibility to access to the application via extensions communication system (to run application, to replace results window, etc). I'm working on this and it should be available in next version. 

That's all for now.
I'd like to hear feedback from you! If you have suggestions write to me, please.

Tuesday, 17 April 2012

New version wireframe. Comment what do you think about.

Hi there!
I've started working on new version of Advanced Rest Client.
The big changes will be:

  • replace saved request with "Projects" section. One project can have many request (for example with common parameters but different endpoints)
  • replace Web Databases with Indexed Databases and move some of local storage params to IDB (for better performance)  
  • simplify UI for better user experience
  • and... please, tell me if you want something more to change/add/remove

Look out wireframes and tell me (in comments) what do you thinking about it. It's only two because other views probably will not going to change.

Main page
Selected project


Cheers.

Tuesday, 27 March 2012

Time goes on

Nope, I haven't forgot about my favorite application.
I just changing my job right now and I don't have time to code lately... I read your comments on application profile and reported issues on Google Developers. But I need more time to work wit this. So be patient, report new bugs (if any :) and I will take care of it.

Happy RESTing :)

P.S.
If you curious about my new company it's interactive agency Kalicinscy.com :)