Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

참고 URL : https://www.kerstner.at/2012/07/shortening-strings-using-base-62-encoding/


Code Block
languagejava
themeEmacs
titlehave
package social.api;

import org.apache.tomcat.util.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import social.data.*;

import java.nio.ByteBuffer;
import java.util.Base64.Encoder;

@Controller
@RequestMapping(path="/mgr")
public class LinkGenerator {
	@Autowired // This means to get the bean called userRepository
    // Which is auto-generated by Spring, we will use it to handle the data
	private LinkRepository linkRepository;
	
	static int incNum = 0;
	
	protected String getUniqueKey() {					
		byte[] uniquyebytes = ByteBuffer.allocate(4).putInt(incNum).array();			
		String strHash = Base64.encodeBase64URLSafeString( uniquyebytes );				
		incNum++;
		return strHash;		
	}
	
	
	@GetMapping(path="/linkadd") // Map ONLY GET Requests
	public @ResponseBody String addNewLink (
	@RequestParam String uid
	, @RequestParam String cid
	, @RequestParam String renderurl
	, @RequestParam String imageurl
	, @RequestParam String title
	, @RequestParam String content) {
		
		//String hashStr = Long.toHexString( (uid+cid).hashCode() ).toUpperCase();	
		String hashStr = getUniqueKey();
		LinkInfo linkInfo = new LinkInfo();
		linkInfo.setUrlKey(hashStr);
		linkInfo.setCid(cid);
		linkInfo.setRenderurl(renderurl);
		linkInfo.setUid(uid);
		linkInfo.setImageurl(imageurl);
		linkInfo.setTitle(title);
		linkInfo.setContent(content);					
		linkRepository.save(linkInfo);
		
		return linkInfo.getUrlKey();
	}
	
	@GetMapping(path="/linkall")
	public @ResponseBody Iterable<LinkInfo> getAllUsers() {
		// This returns a JSON or XML with the users
		return linkRepository.findAll();
	}

}


...